{"version":3,"sources":["webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/immutable/dist/immutable.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/draft-js/lib/EditorState.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/draft-js/lib/DraftModifier.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/nullthrows.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UserAgent.js","webpack:///./node_modules/lodash.isstring/index.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/draft-js/lib/CharacterMetadata.js","webpack:///./node_modules/draft-js/lib/ContentBlockNode.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/draft-js/lib/generateRandomKey.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/draft-js/lib/DraftOffsetKey.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/draft-js/lib/gkx.js","webpack:///./node_modules/react-datetime/DateTime.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/draft-js/lib/ContentBlock.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/cx.js","webpack:///./node_modules/draft-js/lib/isElement.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UnicodeUtils.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/create-react-class/index.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/reapop/lib/constants/index.js","webpack:///./node_modules/draft-js/lib/BlockMapBuilder.js","webpack:///./node_modules/draft-js/lib/findRangesImmutable.js","webpack:///./node_modules/draft-js/lib/isHTMLElement.js","webpack:///./node_modules/draft-js/lib/removeTextWithStrategy.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/draft-js/lib/getContentStateFragment.js","webpack:///./node_modules/draft-js/lib/DraftEntity.js","webpack:///./node_modules/draft-js/lib/SelectionState.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UnicodeBidiDirection.js","webpack:///./node_modules/draft-js/lib/findAncestorOffsetKey.js","webpack:///./node_modules/draft-js/lib/getCorrectDocumentFromNode.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/Keys.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/Style.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getScrollPosition.js","webpack:///./node_modules/draft-js/lib/isEventHandled.js","webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/reapop/lib/index.js","webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///./node_modules/react-transition-group/index.js","webpack:///./node_modules/draft-js/lib/Draft.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/reapop/lib/helpers/index.js","webpack:///./node_modules/react-transition-group/TransitionGroup.js","webpack:///./node_modules/draft-js/lib/ContentState.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UnicodeBidi.js","webpack:///./node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","webpack:///./node_modules/draft-js/lib/getEntityKeyForSelection.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/containsNode.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/Scroll.js","webpack:///./node_modules/draft-js/lib/moveSelectionBackward.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/warning.js","webpack:///./node_modules/draft-js/lib/KeyBindingUtil.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/value-equal/esm/value-equal.js","webpack:///./node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/lodash.isnumber/index.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/react-transition-group/CSSTransition.js","webpack:///./node_modules/react-transition-group/Transition.js","webpack:///./node_modules/react-transition-group/utils/PropTypes.js","webpack:///./node_modules/reapop/lib/store/notifications.js","webpack:///./node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/react-datetime/node_modules/object-assign/index.js","webpack:///./node_modules/draft-js/lib/randomizeBlockMapKeys.js","webpack:///./node_modules/draft-js/lib/removeEntitiesAtEdges.js","webpack:///./node_modules/draft-js/lib/insertIntoList.js","webpack:///./node_modules/draft-js/lib/modifyBlockForContentState.js","webpack:///./node_modules/draft-js/lib/getNextDelimiterBlockKey.js","webpack:///./node_modules/draft-js/lib/getOwnObjectValues.js","webpack:///./node_modules/draft-js/lib/DraftEntityInstance.js","webpack:///./node_modules/draft-js/lib/sanitizeDraftText.js","webpack:///./node_modules/draft-js/lib/DefaultDraftInlineStyle.js","webpack:///./node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","webpack:///./node_modules/draft-js/lib/getWindowForNode.js","webpack:///./node_modules/draft-js/lib/editOnSelect.js","webpack:///./node_modules/draft-js/lib/DraftJsDebugLogging.js","webpack:///./node_modules/draft-js/lib/getContentEditableContainer.js","webpack:///./node_modules/draft-js/lib/getDraftEditorSelection.js","webpack:///./node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","webpack:///./node_modules/draft-js/lib/getUpdatedSelectionState.js","webpack:///./node_modules/draft-js/lib/draftKeyUtils.js","webpack:///./node_modules/draft-js/lib/DraftEditorLeaf.react.js","webpack:///./node_modules/draft-js/lib/isHTMLBRElement.js","webpack:///./node_modules/draft-js/lib/DraftEffects.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getActiveElement.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getElementPosition.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getViewportDimensions.js","webpack:///./node_modules/draft-js/lib/DraftEditorBlock.react.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/DataTransfer.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/draft-js/lib/getTextContentFromFiles.js","webpack:///./node_modules/draft-js/lib/getFragmentFromSelection.js","webpack:///./node_modules/draft-js/lib/keyCommandPlainBackspace.js","webpack:///./node_modules/draft-js/lib/getRangeClientRects.js","webpack:///./node_modules/draft-js/lib/DraftRemovableWord.js","webpack:///./node_modules/draft-js/lib/moveSelectionForward.js","webpack:///./node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","webpack:///./node_modules/draft-js/lib/getSafeBodyFromHTML.js","webpack:///./node_modules/draft-js/lib/RichTextEditorUtil.js","webpack:///./node_modules/draft-js/lib/getDefaultKeyBinding.js","webpack:///./node_modules/draft-js/lib/DraftStringKey.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/history/createBrowserHistory.js","webpack:///./src/components/notifications/reapop/reapop-theme-bootstrap/index.js","webpack:///./node_modules/lodash.difference/index.js","webpack:///./node_modules/lodash.isobject/index.js","webpack:///./node_modules/pako/dist/pako_deflate.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/react-dropzone-uploader/dist/react-dropzone-uploader.js","webpack:///./node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.js","webpack:///./node_modules/draftjs-to-markdown/lib/draftjs-to-markdown.js","webpack:///./node_modules/@restart/context/forwardRef.js","webpack:///./node_modules/core-js/es6/index.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/core-js/fn/array/includes.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/fn/array/flat-map.js","webpack:///./node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/fn/string/pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/fn/string/pad-end.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/core-js/fn/string/trim-start.js","webpack:///./node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/core-js/fn/string/trim-end.js","webpack:///./node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/core-js/fn/symbol/async-iterator.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/fn/object/values.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/fn/object/entries.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/core-js/fn/promise/finally.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/web/index.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/fn/global.js","webpack:///./node_modules/core-js/library/modules/es7.global.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/reapop/lib/components/NotificationsSystem.js","webpack:///./node_modules/reapop/lib/components/NotificationsContainer.js","webpack:///./node_modules/react-transition-group/utils/ChildMapping.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/reapop/lib/components/Notification.js","webpack:///./node_modules/history/warnAboutDeprecatedCJSRequire.js","webpack:///./node_modules/history/index.js","webpack:///./node_modules/history/cjs/history.min.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/create-react-class/factory.js","webpack:///./node_modules/fbjs/lib/emptyObject.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/react-datetime/src/CalendarContainer.js","webpack:///./node_modules/react-datetime/src/DaysView.js","webpack:///./node_modules/react-datetime/src/MonthsView.js","webpack:///./node_modules/react-datetime/src/YearsView.js","webpack:///./node_modules/react-datetime/src/TimeView.js","webpack:///./node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack:///./node_modules/react-transition-group/ReplaceTransition.js","webpack:///./node_modules/draft-js/lib/AtomicBlockUtils.js","webpack:///./node_modules/draft-js/lib/ContentStateInlineStyle.js","webpack:///./node_modules/draft-js/lib/applyEntityToContentState.js","webpack:///./node_modules/draft-js/lib/applyEntityToContentBlock.js","webpack:///./node_modules/draft-js/lib/getCharacterRemovalRange.js","webpack:///./node_modules/draft-js/lib/DraftEntitySegments.js","webpack:///./node_modules/draft-js/lib/getRangesForDraftEntity.js","webpack:///./node_modules/draft-js/lib/insertFragmentIntoContentState.js","webpack:///./node_modules/draft-js/lib/insertTextIntoContentState.js","webpack:///./node_modules/draft-js/lib/removeRangeFromContentState.js","webpack:///./node_modules/draft-js/lib/splitBlockInContentState.js","webpack:///./node_modules/draft-js/lib/BlockTree.js","webpack:///./node_modules/draft-js/lib/uuid.js","webpack:///./node_modules/draft-js/lib/EditorBidiService.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UnicodeBidiService.js","webpack:///./node_modules/draft-js/lib/moveBlockInContentState.js","webpack:///./node_modules/draft-js/lib/CompositeDraftDecorator.js","webpack:///./node_modules/draft-js/lib/DraftEditor.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorCompositionHandler.js","webpack:///./node_modules/draft-js/lib/DOMObserver.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/UserAgentData.js","webpack:///./node_modules/ua-parser-js/src/ua-parser.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/VersionRange.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/mapObject.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/memoizeStringOnly.js","webpack:///./node_modules/draft-js/lib/DraftEditorContents.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorBlockNode.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorNode.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","webpack:///./node_modules/draft-js/lib/DraftEditorTextNode.react.js","webpack:///./node_modules/draft-js/lib/setDraftEditorSelection.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/isTextNode.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/isNode.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getStyleProperty.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/camelize.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/hyphenate.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getElementRect.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getDocumentScrollElement.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./node_modules/draft-js/lib/DraftEditorContents-core.react.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/joinClasses.js","webpack:///./node_modules/draft-js/lib/DraftEditorDragHandler.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/PhotosMimeType.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/createArrayFromMixed.js","webpack:///./node_modules/draft-js/lib/DraftEditorEditHandler.js","webpack:///./node_modules/draft-js/lib/editOnBeforeInput.js","webpack:///./node_modules/draft-js/lib/isSelectionAtLeafStart.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/setImmediate.js","webpack:///./node_modules/draft-js/lib/editOnBlur.js","webpack:///./node_modules/draft-js/lib/editOnCompositionStart.js","webpack:///./node_modules/draft-js/lib/editOnCopy.js","webpack:///./node_modules/draft-js/lib/editOnCut.js","webpack:///./node_modules/draft-js/lib/isInstanceOfNode.js","webpack:///./node_modules/draft-js/lib/editOnDragOver.js","webpack:///./node_modules/draft-js/lib/editOnDragStart.js","webpack:///./node_modules/draft-js/lib/editOnFocus.js","webpack:///./node_modules/draft-js/lib/editOnInput.js","webpack:///./node_modules/draft-js/lib/editOnKeyDown.js","webpack:///./node_modules/draft-js/lib/isSoftNewlineEvent.js","webpack:///./node_modules/draft-js/lib/SecondaryClipboard.js","webpack:///./node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","webpack:///./node_modules/draft-js/lib/expandRangeToStartOfLine.js","webpack:///./node_modules/draft-js/lib/keyCommandBackspaceWord.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/TokenizeUtil.js","webpack:///./node_modules/draft-js/lib/keyCommandDeleteWord.js","webpack:///./node_modules/draft-js/lib/keyCommandInsertNewline.js","webpack:///./node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","webpack:///./node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","webpack:///./node_modules/draft-js/lib/keyCommandPlainDelete.js","webpack:///./node_modules/draft-js/lib/keyCommandTransposeCharacters.js","webpack:///./node_modules/draft-js/lib/keyCommandUndo.js","webpack:///./node_modules/draft-js/lib/editOnPaste.js","webpack:///./node_modules/draft-js/lib/DraftPasteProcessor.js","webpack:///./node_modules/draft-js/node_modules/fbjs/lib/URI.js","webpack:///./node_modules/draft-js/lib/isHTMLAnchorElement.js","webpack:///./node_modules/draft-js/lib/isHTMLImageElement.js","webpack:///./node_modules/draft-js/lib/adjustBlockDepthForContentState.js","webpack:///./node_modules/draft-js/lib/splitTextIntoTextBlocks.js","webpack:///./node_modules/draft-js/lib/DraftEditorFlushControlled.js","webpack:///./node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","webpack:///./node_modules/draft-js/lib/convertFromDraftStateToRaw.js","webpack:///./node_modules/draft-js/lib/encodeEntityRanges.js","webpack:///./node_modules/draft-js/lib/encodeInlineStyleRanges.js","webpack:///./node_modules/draft-js/lib/convertFromRawToDraftState.js","webpack:///./node_modules/draft-js/lib/DraftTreeAdapter.js","webpack:///./node_modules/draft-js/lib/DraftTreeInvariants.js","webpack:///./node_modules/draft-js/lib/createCharacterList.js","webpack:///./node_modules/draft-js/lib/decodeEntityRanges.js","webpack:///./node_modules/draft-js/lib/decodeInlineStyleRanges.js","webpack:///./node_modules/draft-js/lib/getVisibleSelectionRect.js","webpack:///./node_modules/draft-js/lib/getRangeBoundingClientRect.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/prop-types-extra/lib/isRequiredForA11y.js","webpack:///./node_modules/redux-thunk/es/index.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-redux/es/reducer.js","webpack:///./node_modules/react-router-redux/es/ConnectedRouter.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router-redux/es/actions.js","webpack:///./src/actions/config.js","webpack:///./src/reducers/colors.js","webpack:///./src/components/utils/user-session/index.js","webpack:///./src/actions/api.js","webpack:///./src/actions/authentication.js","webpack:///./src/reducers/authentication.js","webpack:///./src/actions/dashboard.js","webpack:///./src/reducers/dashboard.js","webpack:///./src/reducers/index.js","webpack:///./src/reducers/config.js","webpack:///./src/configureStore.js","webpack:///./src/history.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./src/containers/left-sidebar/menu.js","webpack:///./src/containers/left-sidebar/index.js","webpack:///./src/components/logo/Logo.js","webpack:///./src/components/logo/index.js","webpack:///./src/components/toggle-layout/index.js","webpack:///./src/containers/navigation-bar/dropdown-menu.js","webpack:///./src/containers/navigation-bar/index.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./src/components/utils/form/index.js","webpack:///./src/components/utils/input-text/index.js","webpack:///./src/components/utils/link-state/index.js","webpack:///./src/components/utils/util-functions.js","webpack:///./src/components/utils/validator/errors.js","webpack:///./src/components/utils/validator/index.js","webpack:///./src/components/login-form/index.js","webpack:///./src/components/reset-password-form/index.js","webpack:///./src/components/grids/index.js","webpack:///./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack:///./src/components/grids/components/top-buttons.js","webpack:///./src/components/grids/components/search-box.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/canUseDOM.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/addEventListener.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/ownerDocument.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/removeEventListener.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/scrollbarSize.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/ownerDocument.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/activeElement.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/contains.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/canUseDOM.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/addEventListener.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/removeEventListener.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/listen.js","webpack:///./node_modules/@restart/hooks/esm/useMounted.js","webpack:///./node_modules/@restart/hooks/esm/useWillUnmount.js","webpack:///./node_modules/@restart/hooks/esm/useUpdatedRef.js","webpack:///./node_modules/@restart/hooks/esm/usePrevious.js","webpack:///./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack:///./node_modules/@restart/hooks/esm/useEventCallback.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/addClass.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/hasClass.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/removeClass.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/getComputedStyle.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/ownerWindow.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/hyphenate.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/hyphenateStyle.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/isTransform.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/css.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/scrollbarSize.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/isWindow.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/isDocument.js","webpack:///./node_modules/react-overlays/esm/isOverflowing.js","webpack:///./node_modules/react-overlays/esm/manageAriaHidden.js","webpack:///./node_modules/react-overlays/esm/ModalManager.js","webpack:///./node_modules/react-overlays/esm/Modal.js","webpack:///./node_modules/react-overlays/esm/useWaitForDOMRef.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/getComputedStyle.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/ownerWindow.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/hyphenate.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/hyphenateStyle.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/isTransform.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/css.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/querySelectorAll.js","webpack:///./node_modules/react-bootstrap/esm/BootstrapModalManager.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/listen.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/transitionEnd.js","webpack:///./node_modules/react-bootstrap/node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-bootstrap/node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-bootstrap/node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-bootstrap/esm/Fade.js","webpack:///./node_modules/react-bootstrap/esm/triggerBrowserReflow.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/camelize.js","webpack:///./node_modules/react-bootstrap/esm/ThemeProvider.js","webpack:///./node_modules/react-bootstrap/esm/createWithBsPrefix.js","webpack:///./node_modules/react-bootstrap/esm/ModalBody.js","webpack:///./node_modules/react-bootstrap/esm/ModalContext.js","webpack:///./node_modules/react-bootstrap/esm/ModalDialog.js","webpack:///./node_modules/react-bootstrap/esm/ModalFooter.js","webpack:///./node_modules/react-bootstrap/esm/CloseButton.js","webpack:///./node_modules/react-bootstrap/esm/ModalHeader.js","webpack:///./node_modules/react-bootstrap/esm/divWithClassName.js","webpack:///./node_modules/react-bootstrap/esm/Modal.js","webpack:///./node_modules/react-bootstrap/esm/ModalTitle.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/react-select/dist/utils-06b0d5a4.browser.esm.js","webpack:///./node_modules/react-select/dist/index-4322c0ed.browser.esm.js","webpack:///./node_modules/react-select/dist/Select-9fdb8cd0.browser.esm.js","webpack:///./node_modules/react-select/dist/stateManager-04f734a2.browser.esm.js","webpack:///./node_modules/react-select/dist/react-select.browser.esm.js","webpack:///./node_modules/react-bootstrap/esm/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/esm/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/esm/Button.js","webpack:///./node_modules/react-bootstrap/esm/Feedback.js","webpack:///./node_modules/react-bootstrap/esm/FormContext.js","webpack:///./node_modules/react-bootstrap/esm/FormCheckInput.js","webpack:///./node_modules/react-bootstrap/esm/FormCheckLabel.js","webpack:///./node_modules/react-bootstrap/esm/FormCheck.js","webpack:///./node_modules/react-bootstrap/esm/FormFileInput.js","webpack:///./node_modules/react-bootstrap/esm/FormFileLabel.js","webpack:///./node_modules/react-bootstrap/esm/FormFile.js","webpack:///./node_modules/react-bootstrap/esm/FormControl.js","webpack:///./node_modules/react-bootstrap/esm/FormGroup.js","webpack:///./node_modules/react-bootstrap/esm/Col.js","webpack:///./node_modules/react-bootstrap/esm/FormLabel.js","webpack:///./node_modules/react-bootstrap/esm/FormText.js","webpack:///./node_modules/react-bootstrap/esm/Switch.js","webpack:///./node_modules/react-bootstrap/esm/Form.js","webpack:///./src/components/forms/components/select-list.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/classNames.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/guid.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/keys.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/noop.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","webpack:///./node_modules/@telerik/kendo-draggable/dist/es/main.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/Draggable.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/focus.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/hooks/useDir.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/hooks/useRtl.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/getter.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/clone.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/default-data.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/is-string.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/error-details.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/errors.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/info.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/territory.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/date-format-names.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/constants.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/parse-range-date.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/currency.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/constants.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/first-day.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/weekend-range.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/is-negative-zero.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/format-currency-symbol.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/group-integer.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/is-currency-style.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/pad.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/round.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/standard-number-format.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/utils.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/custom-number-format.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/format-options.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/format-number.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/is-number.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/numbers/parse-number.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/format-string.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/date-pattern.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/date-name-type.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/format-names.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/common/is-date.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/constants.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/format-date.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/time-utils.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/parse-date.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/dates/split-date-format.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/format.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/date-field-name.js","webpack:///./node_modules/@telerik/kendo-intl/dist/es/cldr/number-symbols.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlProvider.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationProvider.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","webpack:///./node_modules/@progress/kendo-react-labels/dist/es/Label.js","webpack:///./node_modules/@progress/kendo-react-labels/dist/es/Error.js","webpack:///./node_modules/@progress/kendo-react-labels/dist/es/Hint.js","webpack:///./node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/util.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Animation.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Fade.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Expand.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Push.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Slide.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Zoom.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","webpack:///./node_modules/@progress/kendo-react-animation/dist/es/hooks/useAnimation.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/align-point.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/align.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/window.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/document.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/is-body-offset.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/offset.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/parents.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/position.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/collision.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/siblings.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","webpack:///./node_modules/@progress/kendo-react-popup/dist/es/util.js","webpack:///./node_modules/@progress/kendo-react-popup/dist/es/services/alignService.js","webpack:///./node_modules/@progress/kendo-react-popup/dist/es/services/domService.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/apply-location-offset.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","webpack:///./node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","webpack:///./node_modules/@progress/kendo-react-popup/dist/es/services/positionService.js","webpack:///./node_modules/@progress/kendo-react-popup/dist/es/Popup.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ClearButton.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/SearchBar.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/common/settings.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/ComboBox/ComboBox.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/AutoComplete/AutoComplete.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/TagList.js","webpack:///./node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/MultiSelect.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filteringCells/FilterCell.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filteringCells/BooleanFilter.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/clone-date.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/create-date.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/get-date.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/is-equal.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/day.enum.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-days.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/constants.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-months.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/set-year.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-years.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-decades.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/set-month.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","webpack:///./node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/ToggleButton.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/common/PickerWrap.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DayPeriodService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeList.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DOMService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/HoursService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/MinutesService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/SecondsService.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePart.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeSelector.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePicker.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/HorizontalViewList.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/MultiViewCalendar.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/daterangepicker/DateRangePicker.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/util.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/Button.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ButtonGroup.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButtonItem.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButton.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButtonItem.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButton.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarItem.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarButton.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/Toolbar.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSeparator.js","webpack:///./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSpacer.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimeSelector.js","webpack:///./node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimePicker.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filteringCells/DateFilter.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/misc.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/mixins/observers-mixin.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/class.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/observable.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/support.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/append.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/defined.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/constants.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/deg.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/last.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/rad.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/round.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/accessors/define-accessors.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/accessors/define-geometry-accessors.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/accessors/define-point-accessors.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/multi-path.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/parsing/path-parser.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/shapes/rect.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/align-elements.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/align.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/v-align.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/stack-elements.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/create-stack-elements.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/stack.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/v-stack.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/wrap-elements.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/wrap.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/v-wrap.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/alignment/fit.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/accessors/define-options-accessors.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/core/surface-factory.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/core/surface.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/core/constants.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/export-group.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/canvas/export-image.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/svg/export-svg.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/html/core.js","webpack:///./node_modules/@progress/kendo-drawing/dist/es/common/template.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-parser.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-cache.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/HexInput.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorInput.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorGradient.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-palette.service.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/models/palette-presets.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPalette.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/Picker.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPicker.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/result.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/stream.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/parsers.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/combinators.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/masking.service.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/utils.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/MaskedTextBox.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/utils/index.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/slider/SliderLabel.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/slider/Slider.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/range-slider/range-raducer.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/range-slider/RangeSlider.js","webpack:///./node_modules/@progress/kendo-react-common/dist/es/hooks/useDraggable.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/switch/Switch.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioButton.js","webpack:///./node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioGroup.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filteringCells/NumericFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filteringCells/TextFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/header/Header.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderCell.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/header/SortSettings.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResizer.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnDraggable.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderRow.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResize.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/CommonDragLogic.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/filters/TextFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/filters/NumericFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/filters/DateFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/filters/EnumFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/filters/BooleanFilter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/operators.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/Expression.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/utils.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/funcs.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/accessor.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/transducers.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","webpack:///./node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/Group.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/filter/Filter.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/columnmenu/ColumnMenuOperators.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/columnmenu/ColumnMenu.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/utils/browser-support.service.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResizer.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/ColumnMenu.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/DragClue.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/drag/DropClue.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/Grid.js","webpack:///./node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItem.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemGroup.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuSort.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemContent.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterCell.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterUI.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilter.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuCheckboxFilter.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/rows/GridDetailRow.js","webpack:///./node_modules/@progress/kendo-react-grid/dist/es/GridToolbar.js","webpack:///./src/components/forms/components/enum-list.js","webpack:///./src/components/forms/components/search-list.js","webpack:///./src/images/loading.gif","webpack:///./src/components/forms/render-form.js","webpack:///./src/components/grids/components/form-modal.js","webpack:///./src/components/grids/components/delete-modal.js","webpack:///./src/components/grids/components/search-modal.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/matches.js","webpack:///./node_modules/react-overlays/node_modules/dom-helpers/esm/querySelectorAll.js","webpack:///./node_modules/uncontrollable/esm/utils.js","webpack:///./node_modules/uncontrollable/esm/hook.js","webpack:///./node_modules/@restart/hooks/esm/useCallbackRef.js","webpack:///./node_modules/react-overlays/esm/DropdownContext.js","webpack:///./node_modules/@restart/hooks/esm/useSafeState.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/index.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/react-overlays/esm/popper.js","webpack:///./node_modules/react-overlays/esm/usePopper.js","webpack:///./node_modules/react-overlays/esm/ownerDocument.js","webpack:///./node_modules/react-overlays/esm/safeFindDOMNode.js","webpack:///./node_modules/react-overlays/esm/useRootClose.js","webpack:///./node_modules/react-overlays/esm/DropdownMenu.js","webpack:///./node_modules/react-overlays/esm/DropdownToggle.js","webpack:///./node_modules/react-overlays/esm/Dropdown.js","webpack:///./node_modules/@restart/hooks/esm/useForceUpdate.js","webpack:///./node_modules/react-bootstrap/esm/SelectableContext.js","webpack:///./node_modules/react-bootstrap/esm/NavContext.js","webpack:///./node_modules/react-bootstrap/esm/DropdownItem.js","webpack:///./node_modules/@restart/hooks/esm/useMergedRefs.js","webpack:///./node_modules/react-bootstrap/esm/NavbarContext.js","webpack:///./node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","webpack:///./node_modules/react-bootstrap/node_modules/dom-helpers/esm/hasClass.js","webpack:///./node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","webpack:///./node_modules/react-bootstrap/esm/DropdownMenu.js","webpack:///./node_modules/react-bootstrap/esm/DropdownToggle.js","webpack:///./node_modules/react-bootstrap/esm/Dropdown.js","webpack:///./src/components/grids/components/top-context-menu.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigationItem.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigation.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripContent.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStrip.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripTab.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBarItem.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/panelbar/util.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/panelbar/services/navigationService.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/panelbar/services/selectionService.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBar.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/itemsIdsUtils.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItem.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/prepareInputItemsForInternalWork.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemLink.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/consts.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/misc.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemArrow.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/interfaces/Enums.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternal.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternalsList.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/DirectionHolder.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/MouseOverHandler.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/components/Menu.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/menu/utils/hoverDelay.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterPane.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterBar.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/splitter/Splitter.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/Card.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardHeader.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardTitle.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardBody.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardActions.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardImage.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardSubtitle.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/CardFooter.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/card/Avatar.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/drawer/context/DrawerContext.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerItem.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerNavigation.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/drawer/Drawer.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerContent.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/stepper/context/StepperContext.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/stepper/messages/index.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/stepper/Step.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/stepper/contants.js","webpack:///./node_modules/@progress/kendo-react-progressbars/dist/es/common/constants.js","webpack:///./node_modules/@progress/kendo-react-progressbars/dist/es/common/utils.js","webpack:///./node_modules/@progress/kendo-react-progressbars/dist/es/chunkprogressbar/ChunkProgressBar.js","webpack:///./node_modules/@progress/kendo-react-progressbars/dist/es/progressbar/hooks/usePrevious.js","webpack:///./node_modules/@progress/kendo-react-progressbars/dist/es/progressbar/ProgressBar.js","webpack:///./node_modules/@progress/kendo-react-layout/dist/es/stepper/Stepper.js","webpack:///./node_modules/@progress/kendo-react-tooltip/dist/es/utils.js","webpack:///./node_modules/@progress/kendo-react-tooltip/dist/es/Tooltip.js","webpack:///./src/components/grids/div-layout.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/StageEnum.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/WindowTitlebar.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/WindowResizeHandlers.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/MiddleLayerOptimization.js","webpack:///./node_modules/@progress/kendo-react-dialogs/dist/es/Window.js","webpack:///./src/components/dashboard/uigrid.js","webpack:///./src/components/grids/div-vertical-layout.js","webpack:///./src/components/dashboard/uiverticalgrid.js","webpack:///./src/components/dashboard/uiform.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/is-array.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/add-class.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/remove-class.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/align-path-to-pixel.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/clockwise.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/is-number.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/is-string.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/convertable-to-number.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/is-function.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/deep-extend.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/is-object.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/style-value.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/element-styles.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/get-spacing.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/services/intl-service.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/services/format-service.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/services/chart-service.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/services/dom-events-builder.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/services/template-service.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/get-template.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/getter.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/grep.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/has-classes.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/hash-map.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/in-array.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/interpolate-value.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/instance-observer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/map.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/mousewheel-delta.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/drawing-utils.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/font-loader.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/set-default-options.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/sparse-array-limits.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/common/find.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/auto-major-unit.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/point.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/box.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/ring.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/shape-builder.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/sector.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/chart-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/box-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/shape-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/gradients.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/box-diff.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/root-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/float-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/text.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/rect-to-box.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/text-box.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/title.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/axis-label.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/note.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-tick.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-grid-line.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/absolute-date-diff.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/add-ticks.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/to-date.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/add-duration.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/start-of-week.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/floor-date.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/ceil-date.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/date-comparer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/date-diff.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/to-time.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/date-equals.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/date-index.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/duration.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/parse-date.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/date-utils/parse-dates.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/category-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/date-category-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/floor.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/ceil.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/limit-coordinate.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/numeric-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-min.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-max.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/date-value-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/logarithmic-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/mixins/grid-lines-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/radar-category-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/polar-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/mixins/radar-numeric-axis-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/radar-numeric-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/radar-logarithmic-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/core/curve-processor.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/api-elements/find-axis-by-name.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-pane.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/count-numbers.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/aggregates/aggregates.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/get-field.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/series-binder.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-range-calculator.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-bar-base.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/error-bars/categorical-error-bar.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/eval-options.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/categories-count.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/categorical-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/point-events-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/note-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-point.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/spline-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/line-chart-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/animations/clip-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/any-has-z-index.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/clip-animation-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/area-chart/step-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/area-chart/spline-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/axis-group-range-tracker.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-label.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/has-gradient-overlay.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/layout/utils.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/layout/cluster-layout.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/layout/stack-wrap.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/are-numbers.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/vertical-box-plot.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/error-bars/scatter-error-bar.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/has-value.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/target.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/tooltip/base-tooltip.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair-tooltip.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/chart-container.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pane.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/append-if-not-null.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/segment-visible.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/bind-segments.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/equals-ignore-case.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/filter-series-by-type.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/get-date-field.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/is-date-axis.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/single-item-or-array.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/utils/create-out-of-range-points.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-base.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/plotarea-events-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/aggregates/series-aggregator.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/aggregates/default-aggregates.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-line-point.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-point.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/spline-range-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/step-range-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-point.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/categorical-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/highlight.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/accept-key.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/pannable.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/zoom-selection.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/mousewheel-zoom.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-layout.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/legend/legend.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-factory.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/selection.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/tooltip/tooltip.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/tooltip/shared-tooltip.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/animations/bar-chart-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/animations/bubble-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/animations/fade-in-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/animations/pie-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-line-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/xy-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/mixins/pie-chart-mixin.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/pie-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/donut-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea-base.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/polar-line-chart/polar-line-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/spline-polar-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-line-chart/radar-line-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/spline-radar-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-cluster-layout.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-stack-layout.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-bar-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/radar-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-segment.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/plotarea/funnel-plotarea.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/register-charts.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/sparkline/shared-tooltip.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/sparkline/sparkline.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/stock/fade-out-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/stock/navigator-hint.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/stock/navigator.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/stock/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/stock/stock-chart.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/constants.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/utils/pad.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/utils/build-label-element.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/utils/get-range.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/utils/unpad.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/gauge.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-scale.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-gauge.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-scale.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-gauge.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-scale.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer-animation.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/chart/base-theme.js","webpack:///./node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-gauge.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/utils/main.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/dom-events.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/dom-events-builder.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/base-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/axis-label-click-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/preventable-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/drag-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/drag-end-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/drag-start-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-hover-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-click-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-leave-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/navigator-filter-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/note-click-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/note-hover-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-click-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-hover-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/render-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/select-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/select-end-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/select-start-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/series-click-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/series-hover-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/zoom-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/zoom-end-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/zoom-start-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/chart-event-builder.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/events/dom-event.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/theming/theme-service.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/store/store.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/store/reducer.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/defaults.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/Point.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/SharedTooltipContent.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/ChartContext.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/Popup.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/Series.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/Container.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/tooltip/CrosshairContainer.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/BaseChart.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/DonutCenter.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/Chart.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/Sparkline.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/StockChart.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/base/ConfigurationComponent.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/base/CollectionConfigurationComponent.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/CategoryAxisItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/CategoryAxis.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Legend.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Navigator.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Pane.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Panes.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/SeriesItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Series.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/Tooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/ValueAxisItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/ValueAxis.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/XAxisItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/XAxis.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/YAxisItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/YAxis.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/axis-defaults/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/axis-defaults/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/axis-defaults/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/axis-defaults/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/category-axis-item/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/category-axis-item/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/category-axis-item/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/category-axis-item/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/pane/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/legend/Item.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/legend/InactiveItems.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/series-defaults/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/series-item/Tooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/series-item/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/value-axis-item/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/value-axis-item/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/value-axis-item/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/value-axis-item/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/x-axis-item/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/x-axis-item/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/x-axis-item/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/x-axis-item/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/y-axis-item/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/y-axis-item/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/y-axis-item/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/y-axis-item/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/CategoryAxis.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/Pane.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/SeriesItem.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/Series.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/category-axis/Crosshair.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/category-axis/CrosshairTooltip.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/category-axis/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/category-axis/Labels.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/pane/Title.js","webpack:///./node_modules/@progress/kendo-react-charts/dist/es/components/navigator/series-item/Labels.js","webpack:///./src/components/charts/index.js","webpack:///./src/components/dashboard/uichart.js","webpack:///./src/components/draw/draw-scene.js","webpack:///./src/components/dashboard/uidraw.js","webpack:///./src/components/widget/index.js","webpack:///./src/components/dashboard/uicomponent.js","webpack:///./src/components/dashboard/view.js","webpack:///./src/components/dashboard/index.js","webpack:///./node_modules/react-router/es/generatePath.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./src/PrivateRoute.js","webpack:///./src/containers/empty-page/index.js","webpack:///./src/Routes.js","webpack:///./src/App.js","webpack:///./src/index.js"],"names":["module","exports","hookCallback","some","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","slice","join","Error","stack","keys","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","s","indexOf","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","d","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","result","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","property","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","_extends","target","defineProperty","enumerable","configurable","writable","global","core","hide","redefine","ctx","$export","type","own","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","expProto","U","R","_objectWithoutPropertiesLoose","excluded","sourceKeys","hasOwn","classNames","classes","argType","inner","default","SLICE$0","createClass","ctor","superClass","create","constructor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","ref","SetRef","OwnerID","arrCopy","newArr","ensureSize","iter","size","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","end","resolveBegin","resolveIndex","resolveEnd","defaultIndex","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","REAL_ITERATOR_SYMBOL","iterator","ITERATOR_SYMBOL","Iterator","iteratorValue","v","iteratorResult","done","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","toSeq","seq","maybeIndexedSeqFromValue","ObjectSeq","TypeError","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","ArraySeq","_array","object","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iterator","_iteratorCache","isSeq","maybeSeq","seqIterate","reverse","useKeys","cache","_cache","maxIndex","entry","__iterateUncached","seqIterator","__iteratorUncached","fromJS","json","converter","fromJSWith","parentJSON","isPlainObj","fromJSDefault","toList","toMap","is","valueA","valueB","equals","deepEqual","__hash","notAssociative","entries","every","flipped","cacheResult","_","allEqual","bSize","has","Repeat","times","_value","Infinity","invariant","condition","error","Range","start","step","_start","_end","_step","Collection","KeyedCollection","IndexedCollection","SetCollection","KEYS","VALUES","ENTRIES","toSource","of","__toString","__iterator","notSetValue","iterations","includes","searchValue","lastIndexOf","this$0","possibleIndex","offsetValue","imul","smi","i32","hash","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","node","nodeType","uniqueID","documentElement","getIENodeHash","objHashUID","isExtensible","hashJSObj","charCodeAt","WeakMap","assertNotInfinite","Map","emptyMap","isMap","withMutations","maybeMap","IS_MAP_SENTINEL","_root","updateMap","setIn","keyPath","updateIn","remove","deleteIn","update","updater","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","forceIterator","clear","__ownerID","__altered","merge","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","comparator","OrderedMap","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","nodes","HashArrayMapNode","count","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","prev","__prev","root","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","SIZE","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","mergeIntoMap","popCount","idx","canEdit","newArray","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","pop","bit","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","subNode","List","emptyList","isList","makeList","VNode","list","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","splice","insert","oldSize","unshift","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","left","right","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","context","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","flatten","reduce","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","reify","validateEntry","resolveSize","iterableClass","Record","defaultValues","hasInitialized","RecordType","setProp","bind","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","valueSeq","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","keySeq","updateSet","union","intersect","originalSet","OrderedSet","__make","EMPTY_SET","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","head","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","getOwnPropertySymbols","toJS","__toJS","toOrderedMap","toOrderedSet","toSet","toStack","__toStringMapper","returnValue","find","findEntry","found","findLastEntry","sideEffect","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","isEmpty","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","first","flatMap","coerce","flatMapFactory","searchKey","getIn","searchKeyPath","nested","groupBy","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyMapper","last","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","contains","noLengthWarning","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","JSON","stringify","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","zipWith","validateFormat","_len","_key","argIndex","framesToPop","window","self","__g","it","_objectSpread","ownKeys","sym","getOwnPropertyDescriptor","_defineProperty","BlockTree","ContentState","EditorBidiService","SelectionState","Immutable","EditorStateRecord","allowUndo","currentContent","decorator","directionMap","forceSelection","inCompositionMode","inlineStyleOverride","lastChangeType","nativelyRenderedContent","redoStack","selection","treeMap","undoStack","EditorState","createEmpty","createWithContent","createFromText","contentState","getBlockMap","firstKey","getKey","recordConfig","generateNewTreeMap","getDirectionMap","editorState","put","getImmutable","state","existingDecorator","newContent","getCurrentContent","newTreeMap","content","blockMap","previousTreeMap","block","getDecorations","generate","regenerateTreeForNewDecorator","newBlockMap","newEntityMap","prevBlockMap","regenerateTreeForNewBlocks","getEntityMap","_proto","immutable","_immutable","getAllowUndo","getUndoStack","getRedoStack","getSelection","getDecorator","isInCompositionMode","mustForceSelection","getNativelyRenderedContent","getLastChangeType","getInlineStyleOverride","setInlineStyleOverride","getCurrentInlineStyle","override","isCollapsed","startKey","getStartKey","startOffset","getStartOffset","startBlock","getBlockForKey","getInlineStyleAt","getLength","lookUpwardForInlineStyle","getInlineStyleForCollapsedSelection","getInlineStyleForNonCollapsedSelection","getBlockTree","blockKey","isSelectionAtStartOfContent","hasEdgeWithin","isSelectionAtEndOfContent","acceptSelection","updateSelection","getHasFocus","moveSelectionToEnd","lastBlock","getLastBlock","lastKey","anchorKey","anchorOffset","focusKey","focusOffset","isBackward","moveFocusToEnd","afterSelectionMove","changeType","getSelectionAfter","mustBecomeBoundary","getSelectionBefore","overrideChangeTypes","editorStateChanges","undo","newCurrentContent","redo","fromKey","lastNonEmpty","store","uid","USE_SYMBOL","toInteger","__e","f","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","warning","defined","CharacterMetadata","ContentStateInlineStyle","applyEntityToContentState","getCharacterRemovalRange","getContentStateFragment","insertFragmentIntoContentState","insertTextIntoContentState","modifyBlockForContentState","removeEntitiesAtEdges","removeRangeFromContentState","splitBlockInContentState","DraftModifier","replaceText","rangeToReplace","text","inlineStyle","entityKey","withoutEntities","withoutText","character","style","entity","insertText","targetRange","moveText","removalRange","movedFragment","afterRemoval","removeRange","replaceWithFragment","fragment","mergeBlockData","rangeToRemove","removalDirection","endKey","endBlock","getIsBackward","getFocusKey","getFocusOffset","getAnchorKey","getAnchorOffset","endOffset","getEndOffset","startEntityKey","getEntityAt","endEntityKey","adjustedRemovalRange","splitBlock","selectionState","applyInlineStyle","removeInlineStyle","setBlockType","blockType","setBlockData","blockData","getData","applyEntity","SRC","$toString","TPL","inspectSource","safe","fails","quot","createHTML","tag","attribute","NAME","UserAgentData","VersionRange","mapObject","memoizeStringOnly","compare","query","normalizer","startsWith","range","normalizePlatformVersion","platformName","UserAgent","isBrowser","browserName","browserFullVersion","isBrowserArchitecture","browserArchitecture","isDevice","deviceName","isEngine","engineName","engineVersion","isPlatform","platformFullVersion","isPlatformArchitecture","platformArchitecture","objectToString","isObjectLike","createDesc","IObject","_require","defaultRecord","_CharacterMetadataRec","subClass","__proto__","getStyle","getEntity","hasStyle","applyStyle","withStyle","removeStyle","withoutStyle","withEntity","EMPTY","configMap","pool","newCharacter","_ref","findRangesImmutable","parent","characterList","children","prevSibling","nextSibling","haveEqualStyle","charA","charB","haveEqualEntity","decorateCharacterList","ContentBlockNode","props","getType","getText","getCharacterList","getDepth","getChildKeys","getParentKey","getPrevSiblingKey","getNextSiblingKey","findStyleRanges","filterFn","findEntityRanges","_inheritsLoose","method","propIsEnumerable","test1","test2","fromCharCode","test3","letter","err","shouldUseNative","symbols","OldCookies","Cookies","api","noConflict","attributes","decode","decodeURIComponent","init","document","path","expires","toUTCString","write","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","jar","cookies","read","parse","getJSON","withConverter","aFunction","pIE","toIObject","gOPD","KEY","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","seenKeys","MULTIPLIER","random","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","RangeError","Uint8Array","ArrayProto","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arrayJoin","arraySort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","validate","C","speciesFromList","fromList","addGetter","internal","$from","aLen","mapfn","mapping","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","copyWithin","fill","searchElement","middle","comparefn","subarray","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","DraftOffsetKey","encode","decoratorKey","leafKey","offsetKey","_offsetKey$split$reve","META","setDesc","id","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","g","__DRAFT_GKX","PropTypes","moment","React","CalendarContainer","onClickOutside","viewModes","freeze","YEARS","MONTHS","DAYS","TYPES","Datetime","displayName","propTypes","onFocus","onBlur","onChange","onViewModeChange","onNavigateBack","onNavigateForward","bool","displayTimeZone","inputProps","timeConstraints","viewMode","oneOf","isValidDate","open","strictParsing","closeOnSelect","closeOnTab","getInitialState","checkTZ","getStateFromProps","currentView","updateOn","parseDate","parsedDate","localMoment","datetime","selectedDate","viewDate","inputValue","getFormats","defaultValue","getUpdateOn","inputFormat","componentWillReceiveProps","nextProps","updatedState","updatedViewDate","updatedSelectedDate","tz","setState","onInputChange","onInputKey","which","closeCalendar","showView","view","me","setDate","nextViews","getAttribute","subtractTime","toSelected","updateTime","addTime","op","allowedSetTime","nextType","updateSelectedDate","close","currentTarget","modifier","className","openCalendar","handleClickOutside","disableCloseOnClickOutside","con","tzWarning","componentProps","fromProps","fromState","fromThis","getComponentProps","overrideEvent","handler","action","overridenEvents","render","finalInputProps","onClick","onKeyDown","renderInput","createElement","ClickableWrapper","onClickOut","viewProps","defaultProps","px","$keys","enumBugKeys","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","appendChild","contentWindow","lt","Properties","hiddenKeys","ObjectProto","UNSCOPABLES","_t","ContentBlockRecord","ContentBlock","_ContentBlockRecord","str","ownerDocument","Node","ELEMENT_NODE","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","getUTF16Length","posA","posB","substring","UnicodeUtils","getCodePoints","codePoints","codePointAt","isSurrogatePair","strlen","def","stat","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","trim","DESCRIPTORS","SPECIES","Constructor","forbiddenField","ReactNoopUpdateQueue","Component","isValidElement","cof","ARG","T","tryGet","callee","D","DEFAULT_NOTIFICATION","POSITIONS","BOTTOM_RIGHT_POSITION","BOTTOM_LEFT_POSITION","BOTTOM_CENTER","BOTTOM","TOP_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_CENTER","TOP","STATUS","ERROR_STATUS","WARNING_STATUS","SUCCESS_STATUS","INFO_STATUS","DEFAULT_STATUS","info","success","top","topCenter","topLeft","topRight","bottom","bottomCenter","bottomLeft","bottomRight","status","position","dismissible","dismissAfter","allowHTML","closeButton","BlockMapBuilder","createFromArray","blocks","haystack","areEqualFn","foundFn","cursor","nextIndex","defaultView","HTMLElement","experimentalTreeDataSupport","gkx","strategy","anchorBlock","anchorBlockSibling","mode","copyright","IS_INCLUDES","el","fromIndex","SAFE_CLOSING","riter","skipClosing","ignoreCase","multiline","unicode","sticky","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","strfn","rxfn","BREAK","RETURN","navigator","userAgent","forOf","setToStringTag","inheritIfRequired","common","IS_WEAK","ADDER","fixMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","randomizeBlockMapKeys","getEndKey","blockKeys","startIndex","endIndex","chars","DraftEntityInstance","uuid","instances","instanceKey","logWarning","oldMethodCall","newMethodCall","DraftEntity","getLastCreatedEntityKey","__getLastCreatedEntityKey","mutability","__create","__add","__get","__getAll","__loadWithEntities","entities","mergeData","toMerge","__mergeData","replaceData","newData","__replaceData","newInstance","_SelectionStateRecord","serialize","selectionStart","selectionEnd","offsetToCheck","hasFocus","globalDir","isStrong","getHTMLDir","setGlobalDir","UnicodeBidiDirection","NEUTRAL","LTR","RTL","getHTMLDirIfDifferent","otherDir","initGlobalDir","getGlobalDir","getCorrectDocumentFromNode","getSelectionOffsetKeyForNode","searchNode","parentNode","BACKSPACE","TAB","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","COMMA","PERIOD","A","Z","ZERO","NUMPAD_0","NUMPAD_9","_isNodeScrollable","element","Style","getScrollParent","body","parentWindow","getDocumentScrollElement","getUnboundedScrollPosition","scrollable","documentScrollElement","Window","scrollPosition","viewport","xMax","scrollWidth","clientWidth","yMax","scrollHeight","clientHeight","componentWillMount","getDerivedStateFromProps","prevState","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","isarray","pathToRegexp","compile","options","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","group","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","_constants","_notifications","actions","types","addNotification","notify","updateNotification","removeNotification","removeNotifications","_NotificationsSystem","__esModule","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_default","message","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","Transition","TransitionGroup","ReplaceTransition","CSSTransition","AtomicBlockUtils","CompositeDraftDecorator","DefaultDraftBlockRenderMap","DefaultDraftInlineStyle","DraftEditor","DraftEditorBlock","KeyBindingUtil","RawDraftContentState","RichTextEditorUtil","convertFromDraftStateToRaw","convertFromRawToDraftState","generateRandomKey","getDefaultKeyBinding","getVisibleSelectionRect","DraftPublic","Editor","EditorBlock","CompositeDecorator","Entity","EntityInstance","Modifier","RichUtils","convertFromHTML","convertFromRaw","convertToRaw","genKey","shared","check","setPrototypeOf","buggy","$expm1","expm1","TO_STRING","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","isRegExp","searchString","MATCH","$defineProperty","getIteratorMethod","endPos","addToUnscopables","iterated","_k","Arguments","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","at","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","nextTick","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","BaseBuffer","log","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","convertStatus","Timer","delay","timerId","remaining","pause","clearTimeout","resume","getTimeRemaining","treatNotification","notification","buttons","preloadImage","url","cb","image","Image","onload","onerror","mapObjectValues","_propTypes","_react","_reactLifecyclesCompat","_ChildMapping","_assertThisInitialized","ReferenceError","_React$Component","_this","handleExited","firstRender","getChildContext","transitionGroup","isMounting","appeared","componentDidMount","mounted","componentWillUnmount","prevChildMapping","getInitialChildMapping","getNextChildMapping","child","currentChildMapping","getChildMapping","onExited","_this$props","component","childFactory","appear","enter","exit","childContextTypes","isRequired","getOwnObjectValues","sanitizeDraftText","ImmutableMap","ContentStateRecord","entityMap","selectionBefore","selectionAfter","ContentBlockNodeRecord","_ContentStateRecord","getKeyBefore","getKeyAfter","getBlockAfter","getBlockBefore","getBlocksAsArray","getFirstBlock","getPlainText","hasText","createEntity","mergeEntityData","replaceEntityData","addEntity","getAllEntities","loadWithEntities","createFromBlockArray","theBlocks","contentBlocks","strings","createContentBlockFromJS","RANGE_BY_BIDI_TYPE","REGEX_STRONG","REGEX_RTL","firstStrongChar","firstStrongCharDir","strongChar","resolveBlockDir","fallback","blockDir","getDirection","strongFallback","UnicodeBidi","isDirectionLTR","isDirectionRTL","cx","section","article","blockquote","atomic","unstyled","aliasedElements","notEmptyKey","filterKey","getMutability","targetSelection","isTextNode","containsNode","outerNode","innerNode","compareDocumentPosition","_isViewportScrollElement","doc","Scroll","getTop","scrollTop","setTop","newTop","getLeft","scrollLeft","setLeft","newLeft","maxDistance","keyBefore","isSoftNewlineEvent","isOSX","isCtrlKeyCommand","ctrlKey","altKey","isOptionKeyCommand","usesMacOSHeuristics","hasCommandModifier","metaKey","validators","allPropTypes","_len2","_key2","validator","_createChainableTypeChecker2","_createChainableTypeChecker","isAbsolute","pathname","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","aValue","bValue","_createClass","defineProperties","descriptor","protoProps","staticProps","_react2","_propTypes2","sizerStyle","visibility","height","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","generateId","AutosizeInput","_Component","_classCallCheck","_possibleConstructorReturn","inputRef","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","_inherits","copyInputStyles","updateInputWidth","onAutosize","getComputedStyle","inputStyles","newInputWidth","placeholder","placeholderIsMinWidth","extraWidth","focus","blur","select","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","previousValue","currentValue","wrapperStyle","inputStyle","boxSizing","width","_objectWithoutProperties","cleanInputProps","inputClassName","renderStyles","any","oneOfType","_typeof","_defineProperties","_slicedToArray","_arrayWithHoles","_arr","_n","_e","_s","_iterableToArrayLimit","_nonIterableRest","noop","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","measure","MutationObserver","performance","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","querySelector","_ref2","attr","getAttrConfig","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","namespace","functions","doScroll","readyState","removeEventListener","asyncTimer","NOOP","isNode","emit","asyncSetTimer","asyncQueue","asyncFlush","asyncCall","invokeCallback","subscriber","settled","_state","promise","then","reject","handleThenable","resolve","resolved","fulfill","reason","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","catch","all","promises","results","race","meaninglessTransform","rotate","flipX","flipY","insertCss","css","setAttribute","innerHTML","headChildren","childNodes","beforeChild","tagName","insertBefore","nextUniqueId","htmlEscape","joinStyles","acc","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","abstract","force","makeInlineSvgAbstract","params","_params$icons","icons","main","mask","iconName","symbol","title","maskId","titleId","extra","_params$watchable","watchable","widthClass","attrClass","role","explicitMaskId","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconMasking","styleString","makeIconStandard","asSymbol","asIcon","noop$1","subject","initialValue","thisContext","bindInternal4","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","build","lookup","ligatures","ligature","hasRegular","shim","oldName","iconFromMapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","parseTransformString","transformString","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","cy","r","opacity","asFoundIcon","vectorData","class","drc","fp","rc","dPatt","customPropPatt","rPatt","ensureCss","_cssInserted","apiObject","abstractCreator","container","findIconDefinition","iconLookup","_iconLookup$prefix","library","definitions","Library","additions","_pullDefinitions","definition","0","_normalized$key","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","maybeIconDefinition","wksExt","$Symbol","getKeys","windowNames","getWindowNames","gOPS","$assign","K","getSymbols","isEnum","factories","construct","partArgs","bound","un","$parseInt","$trim","hex","radix","$parseFloat","log1p","original","memo","isRight","inc","forced","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","newPromiseCapability","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_c","_v","ok","reaction","exited","fail","domain","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","onunhandledrejection","onrejectionhandled","$reject","$resolve","executor","onFulfilled","onRejected","Promise","capability","$$reject","$index","alreadyCalled","PromiseCapability","$$resolve","promiseCapability","$iterDefine","getEntry","p","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","ufstore","Reflect","maxLength","fillString","fillStr","intMaxLength","fillLen","stringFiller","isEntries","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","awrap","async","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_addClass","_removeClass","addClass","removeClass","onEnter","appearing","getClassNames","removeClasses","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","isStringClassNames","_this$getClassNames6","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactDom","initialStatus","parentGroup","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","timeout","mounting","findDOMNode","performEnter","performExit","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","addEndListener","childProps","Children","only","cloneElement","contextTypes","classNamesShape","timeoutsShape","_helpers","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","INITIAL_STATE","dispatch","_addNotification","payload","getState","notifications","notif","oldNotification","currNotification","_updateNotification","ADD_NOTIFICATION","UPDATE_NOTIFICATION","REMOVE_NOTIFICATION","REMOVE_NOTIFICATIONS","defaultNotification","symbolMap","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","relativeTimeWithPlural","num","forms","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","translate","ll","lll","llll","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","one","word","numberAsNoun","processHoursFunction","nominative","accusative","genitive","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","script","onreadystatechange","attachEvent","ToObject","ownEnumerableKeys","lastRootBlock","newKeysRef","blockMapState","oldKey","nextKey","prevKey","childrenKeys","parentKey","parentChildrenList","childKey","randomizeContentBlockNodeKeys","randomizeContentBlockKeys","removeForBlock","charBefore","charAfter","entityBeforeCursor","entityAfterCursor","current","_getRemovalRange","characters","getRemovalRange","updatedBlocks","updatedStart","updatedEnd","targetListArg","toInsert","targetList","operation","newBlocks","nextSiblingKey","nextNonDescendantBlock","_DraftEntityInstanceR","REGEX_BLOCK_DELIMITER","BOLD","CODE","wordWrap","ITALIC","STRIKETHROUGH","textDecoration","UNDERLINE","isElement","castedNode","childOffsetKey","DraftJsDebugLogging","getContentEditableContainer","getDraftEditorSelection","editor","_blockSelectEvents","_latestEditorState","logBlockedSelectionEvent","anonymizedDom","extraParams","stacktrace","documentSelection","updatedSelectionState","needsRecovery","logSelectionStateFailure","isHTMLElement","editorNode","editorContainer","firstChild","getDraftEditorSelectionWithNodes","anchorNode","focusNode","rangeCount","findAncestorOffsetKey","getUpdatedSelectionState","nullthrows","getPointForNonTextNode","editorRoot","startNode","childOffset","firstLeaf","getFirstLeaf","nodeBeforeCursor","textLength","lastLeaf","lastChild","getLastLeaf","getTextContentLength","textContent","anchorIsTextNode","TEXT_NODE","focusIsTextNode","anchorPoint","focusPoint","nodeName","anchorPath","anchorBlockKey","anchorLeafBlockTree","anchorLeaf","focusPath","focusBlockKey","focusLeafBlockTree","focusLeaf","anchorLeafStart","focusLeafStart","anchorBlockOffset","focusBlockOffset","anchorLeafEnd","focusLeafEnd","_assign","DraftEditorTextNode","isHTMLBRElement","setDraftEditorSelection","DraftEditorLeaf","_setSelection","leaf","targetNode","shouldComponentUpdate","leafNode","styleSet","endsWith","isLast","_this$props2","customStyleMap","customStyleFn","styleObj","mergedStyles","newStyles","initODS","handleExtensionCausedError","activeElement","getElementRect","rect","getViewportWidth","getViewportHeight","getViewportDimensions","innerWidth","innerHeight","withoutScrollbars","getElementPosition","getScrollPosition","isBlockOnSelectionEdge","tree","preventScroll","blockNode","_node","scrollDelta","scrollParent","nodePosition","scrollTo","offsetHeight","offsetTop","_renderChildren","lastLeafSet","hasSelection","leafSet","leavesForLeafSet","leaves","jj","DecoratorComponent","getComponentForKey","decoratorProps","getPropsForKey","decoratorOffsetKey","decoratedText","commonProps","PhotosMimeType","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","getAsFile","DataTransfer","isRichText","getHTML","isImage","isLink","getLink","items","getFiles","getCount","mozItemCount","files","thatReturnsArgument","hasFiles","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","TEXT_CLIPPING_REGEX","TEXT_TYPES","readCount","file","FileReader","_contents","reader","readAsText","readFile","moveSelectionBackward","removeTextWithStrategy","strategyState","charBehind","getRangeClientRects","tempRange","cloneRange","clientRects","ancestor","endContainer","atCommonAncestor","commonAncestorContainer","setStart","startContainer","rects","getClientRects","setEndBefore","WHITESPACE_AND_PUNCTUATION","getPunctuation","DELETE_REGEX","BACKSPACE_REGEX","getRemovableWord","DraftRemovableWord","getBackward","getForward","_knownListItemDepthCl","URI","getSafeBodyFromHTML","isHTMLAnchorElement","isHTMLImageElement","REGEX_CR","REGEX_LF","REGEX_LEADING_LF","REGEX_NBSP","REGEX_CARRIAGE","REGEX_ZWS","boldValues","notBoldValues","anchorAttr","imgAttr","knownListItemDepthClasses","HTMLTagToRawInlineStyleMap","code","del","em","strike","strong","buildBlockTypeMap","blockRenderMap","blockTypeMap","elements","detectInlineStyle","getListItemDepth","depthClass","classList","isValidAnchor","href","protocol","isValidImage","imageNode","getNamedItem","styleFromNodeAttributes","htmlElement","isListNode","ContentBlocksBuilder","disambiguate","blockConfigs","currentBlockType","currentEntity","currentText","addDOMNode","_this$blockConfigs","_toBlockConfigs","_trimCurrentText","_makeBlockConfig","getContentBlocks","_toContentBlocks","_toFlatContentBlocks","childConfigs","wasCurrentDepth","wasWrapper","_addImgNode","_addAnchorNode","newStyle","_addBreakNode","_addTextNode","_wasCurrentDepth","_wasWrapper","_appendText","_this$characterList","characterMetadata","trimLeft","trimRight","entityConfig","imageAttribute","anchorAttribute","_hoistContainersInBlockConfigs","blockConfig","_this2$_extractTextFr","_extractTextFromBlockConfigs","DOMBuilder","safeBody","isOldIE","implementation","createHTMLDocument","getElementsByTagName","adjustBlockDepthForContentState","currentBlockContainsLink","getCurrentBlockType","getDataObjectForLinkURL","uri","handleKeyCommand","command","eventTimeStamp","toggleInlineStyle","toggleCode","onBackspace","onDelete","insertSoftNewline","newEditorState","blockBefore","withoutAtomicBlock","withoutBlockStyle","tryToRemoveBlockStyle","blockAfter","atomicBlockTarget","onTab","maxDepth","preventDefault","shiftKey","withAdjustment","toggleBlockType","typeToSet","currentStyle","toggleLink","withoutLink","Keys","shouldFixFirefoxMovement","shouldRemoveWord","keyCode","getZCommand","getDeleteCommand","getBackspaceCommand","DraftStringKey","unstringify","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","symbolObservablePonyfill","observable","asyncGeneratorStep","gen","_next","_throw","createBrowserHistory","require","notificationsSystemClassName","notificationsContainerClassName","_position","notificationsContainerTransition","leaveTimeout","leave","notificationClassName","imageContainer","_status","closeButtonContainer","button","buttonText","smallScreenMin","notificationsSystem","notificationsContainer","transition","reIsHostCtor","freeGlobal","freeSelf","thisArg","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","arrayPush","cacheHas","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","funcToString","reIsNative","spreadableSymbol","isConcatSpreadable","nativeMax","getNative","nativeCreate","Hash","ListCache","MapCache","SetCache","__data__","assocIndexOf","baseDifference","iteratee","isCommon","valuesLength","arrayMap","computed","valuesIndex","baseIsNative","isHostObject","getMapData","getValue","isFlattenable","isArrayLikeObject","isArguments","difference","baseFlatten","otherArgs","isLength","TYPED_OK","Int32Array","_has","sources","shrinkBuf","buf","fnTyped","arraySet","dest","src_offs","dest_offs","flattenChunks","chunks","chunk","fnUntyped","setTyped","on","Buf8","Buf16","Buf32","utils","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","q","buf2binstring","string2buf","c2","m_pos","str_len","buf_len","binstring2buf","buf2string","c_len","utf16buf","utf8border","adler","s1","s2","crcTable","table","makeTable","crc","configuration_table","trees","adler32","crc32","strm","errorCode","rank","zero","flush_pending","pending","avail_out","pending_buf","pending_out","next_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","avail_in","next_in","total_in","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","deflateInit2","windowBits","memLevel","max_block_size","max_start","deflateInit","deflateSetHeader","deflate","old_flush","beg","hcrc","comment","os","header","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","deflateEnd","deflateSetDictionary","dictionary","avail","tmpDict","dictLength","deflateInfo","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","D_CODES","_dist_code","_length_code","MAX_MATCH","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","send_bits","send_code","bi_reverse","gen_codes","bits","next_code","init_block","LITERALS","END_BLOCK","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","xbits","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","L_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","zlib_deflate","ZStream","Deflate","chunkSize","opt","raw","gzip","ended","dict","_dict_set","deflator","_mode","onEnd","onData","deflateRaw","getOwnPropertyDescriptors","return","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","N","z","I","keyPrefix","createRef","PureComponent","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","forwardRef","lazy","_ctor","_result","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Fragment","StrictMode","Suspense","createFactory","unstable_ConcurrentMode","unstable_Profiler","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentOwner","resetWarningCache","arrayOf","elementType","instanceOf","objectOf","shape","exact","checkPropTypes","previews","submitButton","dropzoneProps","maxFiles","pe","le","fe","labelClassName","labelWithFilesClassName","labelStyle","labelWithFilesStyle","getFilesFromEvent","accept","multiple","disabled","withFilesContent","onFiles","onDragEnter","onDragOver","onDragLeave","onDrop","dragged","minSizeBytes","maxSizeBytes","onCancelFile","onRemoveFile","onRestartFile","de","setSeconds","ye","dataTransfer","he","ve","ge","dropzone","dropzoneActive","dropzoneReject","dropzoneDisabled","inputLabel","inputLabelWithFiles","preview","previewImage","submitButtonContainer","backgroundImage","restart","imageClassName","imageStyle","fileWithMeta","percent","previewUrl","validationError","isUpload","canCancel","canRemove","canRestart","alt","buttonClassName","buttonStyle","onSubmit","xhr","uploadedDate","lastModifiedDate","videoWidth","videoHeight","be","we","getDataTransferItemsFromEvent","handleDragEnter","stopPropagation","handleDragOver","dragTimeoutId","handleDragLeave","handleDrop","handleFiles","handleDropDisabled","handleChangeStatus","onChangeStatus","handleSubmit","handleCancel","abort","handleRemove","URL","revokeObjectURL","handleRestart","getUploadParams","uploadFile","handleFile","scroll","behavior","lastModified","autoUpload","generatePreview","createObjectURL","HTMLImageElement","onloadedmetadata","Audio","t0","fields","headers","XMLHttpRequest","FormData","append","setRequestHeader","upload","loaded","send","initialFiles","inputContent","inputWithFilesContent","submitButtonDisabled","submitButtonContent","addClassNames","InputComponent","PreviewComponent","SubmitButtonComponent","LayoutComponent","H","Y","$","Q","J","V","X","ee","te","ne","ae","oe","Boolean","ie","ue","se","ce","Number","MAX_SAFE_INTEGER","delete","getModifierState","SUPERSCRIPT","SUBSCRIPT","color","bgcolor","background","borderRadius","padding","inlines","ins","sub","sup","textAlign","marginLeft","HTMLAnchorElement","dataset","mention","targetOption","float","alignment","HTMLVideoElement","HTMLIFrameElement","backgroundColor","fuzzyLink","fuzzyEmail","fuzzyIP","http","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","__opts__","__tlds__","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","__compiled__","__schemas__","link","normalize","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","__last_index__","schema","__schema__","testSchemaAt","search","tlds","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","callBacks","suggestionCallback","editorFlag","suggestionFlag","closeAllModals","getElementById","onEditorClick","closeModals","registerCallBack","deregisterCallBack","setSuggestionCallback","removeSuggestionCallback","onSuggestionClick","inputFocused","editorMouseDown","onEditorMouseDown","editorFocused","onInputMouseDown","isEditorBlur","isEditorFocused","isToolbarFocused","isInputFocused","highlighted","toggleExpansion","setHighlighted","doExpand","doCollapse","expanded","optionWrapperClassName","ariaLabel","onExpandEvent","onSelect","resetHighlighted","disabledClassName","highlightedClassName","onMouseEnter","onMouseLeave","currentState","translations","dropdownClassName","inDropdown","renderInDropDown","renderInFlatList","signalExpanded","expandCollapse","changeKeys","modalHandler","currentStyles","getSelectionInlineStyle","getBlockTypes","label","blockTypes","renderInDropdown","renderFlat","Me","blocksTypes","getSelectedBlocksType","je","Ne","Se","Ee","Ce","Le","defaultFontSize","getElementsByClassName","getPropertyValue","ke","De","xe","Ie","toggleFontSize","toggleCustomInlineStyle","currentFontSize","getSelectionCustomInlineStyle","FONTSIZE","Oe","Ae","Te","ze","Pe","defaultFontFamily","Ue","Ye","Fe","Be","Qe","He","Re","toggleFontFamily","currentFontFamily","FONTFAMILY","Ze","We","Ge","Je","Ve","qe","indent","outdent","listType","indentDisabled","outdentDisabled","unordered","Ke","Xe","et","tt","nt","$e","adjustDepth","changeDepth","isIndentDisabled","currentBlock","getBlockBeforeSelectedBlock","isListBlock","isOutdentDisabled","getSelectedBlock","ot","ct","center","justify","textAlignment","st","ut","dt","mt","ft","pt","addBlockAlignmentData","currentTextAlignment","getSelectedBlocksMetadata","gt","yt","ht","Mt","bt","jt","setCurrentStyleColor","setCurrentStyleBgcolor","renderModal","popupClassName","colors","bgColor","Nt","St","Et","Lt","kt","Dt","Ct","currentColor","currentBgColor","toggleColor","COLOR","BGCOLOR","vt","wt","xt","It","Ot","At","Tt","zt","showModal","linkTarget","linkTitle","linkTargetOption","defaultTargetOption","removeLink","addLink","updateValue","updateTargetOption","checked","hideModal","signalExpandShowModal","selectionText","forceExpandAndShowModal","htmlFor","defaultChecked","unlink","renderAddLinkModal","Pt","Ut","Yt","Rt","Bt","Qt","Ht","Zt","Wt","Gt","Ft","linkCallback","getCurrentValues","getEntityRange","getSelectionText","getSelectionEntity","Jt","Vt","qt","Kt","Xt","$t","en","embeddedLink","defaultSize","rendeEmbeddedLinkModal","tn","nn","rn","an","cn","ln","addEmbeddedLink","embedCallback","insertAtomicBlock","sn","pn","dn","mn","gn","emojis","renderEmojiModal","yn","hn","Mn","bn","jn","Nn","Sn","addEmoji","onCollpase","closeModal","En","Cn","Ln","kn","Dn","vn","wn","imgSrc","dragEnter","uploadHighlighted","uploadEnabled","uploadCallback","showImageLoading","onImageDrop","uploadImage","showImageUploadOption","addImageFromState","showImageURLOption","toggleShowImageLoading","selectImage","fileUpload","fileUploadClick","urlEnabled","inputAccept","present","mandatory","renderAddImageModal","xn","In","On","Tn","zn","An","addImage","Pn","Un","Yn","Fn","Rn","Bn","Qn","Hn","Zn","removeInlineStyles","removeAllInlineStyles","Wn","Gn","Jn","Vn","qn","Kn","undoDisabled","redoDisabled","Xn","$n","no","oo","eo","ro","inline","colorPicker","embedded","emoji","history","io","ao","co","lo","so","uo","po","showOpenOptionOnHover","showPopOver","openLink","toggleShowPopOver","mo","getMentionComponent","getMentionDecorator","findMentionEntities","fo","go","yo","ho","Mo","bo","jo","No","findSuggestionEntities","getEditorState","trigger","getSuggestions","caseSensitive","getSuggestionComponent","activeOption","showSuggestions","onEditorKeyDown","filteredSuggestions","addMention","onOptionMouseEnter","onOptionMouseLeave","setSuggestionReference","suggestion","setDropdownReference","dropdown","closeSuggestionDropdown","filterSuggestions","getWrapperRef","getBoundingClientRect","optionClassName","contentEditable","suppressContentEditableWarning","spellCheck","getSuggestionDecorator","Eo","getHashtagComponent","findHashtagEntities","hashCharacter","getHashtagDecorator","Co","frameBorder","allowFullScreen","ko","Do","vo","wo","xo","Io","Oo","hovered","setEntityAlignmentLeft","setEntityAlignment","setEntityAlignmentRight","setEntityAlignmentCenter","dummy","toggleHovered","isReadOnly","isImageAlignmentEnabled","renderAlignmentOptions","To","bold","italic","underline","strikethrough","monospace","superscript","subscript","alignmentEnabled","zo","fr","zh","ru","nl","da","zh_tw","pl","es","ja","_o","Po","Uo","Yo","Fo","Ro","Bo","Ho","Zo","Wo","Qo","onEditorBlur","onEditorFocus","focusHandler","keyBindingFn","onToolbarFocus","onWrapperBlur","readOnly","onEditorStateChange","wrapperId","afterChange","setWrapperReference","setEditorReference","editorRef","getCompositeDecorator","customDecorators","mentionClassName","So","hashtag","Lo","suggestions","onContentStateChange","toolbar","createEditorState","defaultEditorState","defaultContentState","initialContentState","filterEditorProps","getStyleMap","getCustomStyleMap","changeEditorState","focusEditor","handleReturn","handleNewLine","handlePastedTextFn","handlePastedText","stripPastedStyles","blockRendererFn","Ao","customBlockRenderFunc","editorProps","compositeDecorator","extractInlineStyle","localization","toolbarCustomButtons","toolbarOnFocus","toolbarClassName","toolbarHidden","editorClassName","wrapperClassName","toolbarStyle","editorStyle","onMouseDown","blockStyleFn","tabIndex","ariaOwneeID","ariaActiveDescendantID","ariaAutoComplete","ariaDescribedBy","ariaExpanded","ariaHasPopup","Go","inlineStyleRanges","entityRanges","blockTypesMapping","emptyLineBeforeBlock","renderFn","_temp","_ref$allowFallback","allowFallback","_ref$displayName","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","digits","aNumberValue","$toFixed","ERROR","multiply","divide","numToString","fractionDigits","x2","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isInteger","isSafeInteger","MIN_SAFE_INTEGER","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","hypot","value1","value2","div","larg","$imul","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$fromCodePoint","fromCodePoint","callSite","tpl","$at","point","$endsWith","endPosition","$startsWith","pv","$toISOString","lz","getUTCMilliseconds","getUTCHours","getUTCSeconds","DateProto","hint","createProperty","upTo","cloned","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","define","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","replacement","getSubstitution","ch","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","LENGTH","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","macrotask","Observer","WebKitMutationObserver","toggle","createTextNode","observe","characterData","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","$isView","isView","fin","viewS","viewT","rApply","fApply","thisArgument","argumentsList","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","deleteProperty","Enumerate","enumerate","receiver","existingDescriptor","ownDesc","setProto","$includes","flattenIntoArray","arraySpeciesCreate","sourceLen","IS_CONCAT_SPREADABLE","spreadable","targetIndex","sourceIndex","mapFn","padStart","$pad","WEBKIT_BUG","padEnd","getDesc","$values","onFinally","MSIE","boundArgs","setInterval","$task","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","IS_WRAP","virtual","unstable_now","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","sortIndex","startTime","expirationTime","priorityLevel","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","unstable_shouldYield","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","Profiler","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","originalModule","webpackPolyfill","NotificationsSystem","_reactRedux","_NotificationsContainer","_getPrototypeOf","_setPrototypeOf","_getPrototypeOf2","windowWidth","_updateWindowWidth","_renderNotificationsContainers","theme","positions","containers","smallScreenPosition","notifs","connect","NotificationsContainer","_Notification","_renderNotifications","_this$props$theme$not","mergeChildMappings","getProp","nextChildMapping","hasPrev","hasNext","prevChild","isLeaving","getValueForKey","nextKeysPending","pendingKeys","childMapping","pendingNextKey","_hasClass","baseVal","replaceClassName","origClass","classToRemove","Notification","createTimer","_remove","_pauseTimer","timer","_resumeTimer","_setHTML","_renderButtons","primary","onAdd","onRemove","_this$props3","_this$props3$notifica","notificationClass","member","_interopDefault","resolvePathname","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","parsePath","createPath","createLocation","decodeURI","URIError","createTransitionManager","setPrompt","confirmTransitionTo","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","getHistoryState","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","location","replaceHashPath","clamp","supportsHistory","forceRefresh","getUserConfirmation","keyLength","basename","isExtraneousPopstateEvent","createHref","pushState","replaceState","goBack","goForward","listen","createHashHistory","hashType","pushHashPath","createMemoryHistory","initialEntries","initialIndex","canGo","locationsAreEqual","paths","webpackContext","req","webpackContextResolve","__webpack_require__","Timeout","clearFn","_id","_clearFn","scope","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","browser","env","argv","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","emptyObject","_invariant","ReactComponent","injectedMixins","ReactClassInterface","statics","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","specPolicy","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","ReactClassMixin","spec","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","two","bindAutoBindMethod","IsMountedPreMixin","__isMounted","IsMountedPostMixin","newState","ReactClassComponent","pairs","autoBindKey","bindAutoBindMethods","initialState","methodName","viewComponents","DateTimePickerDays","tableChildren","footer","renderFooter","colSpan","getDaysOfWeek","renderDays","isDisabled","dayProps","selected","prevMonth","currentYear","currentMonth","renderer","renderDay","alwaysValidDate","DateTimePickerMonths","renderMonths","noOfDaysInMonth","rows","renderMonth","updateSelectedMonth","monthStrFixedLength","DateTimePickerYears","renderYears","noOfDaysInYear","renderYear","updateSelectedYear","DateTimePickerTime","calculateState","counters","daypart","renderCounter","onStartClicking","onContextMenu","disableContextMenu","renderDayPart","updateMilli","renderHeader","milli","increaseTimer","mouseUpListener","padValues","toggleDayPart","pad","increase","decrease","isNodeFound","componentNode","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","eventName","handlerOptions","passive","WrappedComponent","_class","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","events","eventTypes","evt","excludeScrollbar","clientX","clientY","findHighest","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","_props","sourceSymbolKeys","wrappedRef","getClass","_args","handleEnter","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","inProp","_React$Children$toArr","moveBlockInContentState","afterSplit","insertionTarget","asAtomicBlock","charData","atomicBlockConfig","atomicDividerBlockConfig","fragmentArray","withAtomicBlock","moveAtomicBlock","atomicBlock","insertionMode","withMovedAtomicBlock","targetBlock","selectionAfterRemoval","_targetBlock","selectionAfterSplit","_targetBlock2","modifyInlineStyle","addOrRemove","sliceStart","sliceEnd","applyEntityToContentBlock","contentBlock","startArg","DraftEntitySegments","getRangesForDraftEntity","getEntityRemovalRange","isEntireSelectionWithinEntity","isEntityAtStart","sideToConsider","entityRange","newSelectionState","startSelectionState","endSelectionState","_startSelectionState","_endSelectionState","entityStart","segments","segmentEnd","segmentStart","removalStart","removalEnd","entityEnd","atStart","atEnd","ranges","insertIntoList","updateExistingBlock","fragmentBlock","targetKey","targetOffset","finalKey","finalOffset","newBlock","insertFragment","isTreeBasedBlockMap","newBlockArr","fragmentSize","shouldNotUpdateFromFragmentBlock","headText","headCharacters","appendToHead","updateHead","blockSize","tailText","tailCharacters","prependToTail","updateTail","updatedBlockMap","originalBlockMap","fragmentHeadBlock","headKey","targetNextKey","targetParentKey","fragmentRootBlocks","rootBlock","rootBlocks","lastSiblingKey","getRootBlocks","lastRootFragmentBlockKey","originalTargetParentChildKeys","insertionIndex","newChildrenKeysArray","updateBlockMapLinks","fragmentBlockMap","blockText","newOffset","getNextDelimiterBlockKey","transformBlock","getAncestorsKeys","parents","getNextValidSibling","nextValidSiblingKey","getPrevValidSibling","prevValidSiblingKey","nextDelimiters","nextDelimiter","_block","getNextDelimitersBlockKeys","delimiterKey","prevSiblingKey","newParentKey","newParent","removeFromList","isExperimentalTreeBlock","parentAncestors","endBlockchildrenKeys","endBlockAncestors","modifiedStart","blockToSplit","keyBelow","blockAbove","blockBelow","blocksBefore","blocksAfter","originalBlock","belowBlock","originalBlockKey","belowBlockKey","newChildrenArray","LeafRange","DecoratorRange","leafSets","decorations","areEqual","generateLeaves","inlineStyles","bidiService","UnicodeBidiService","prevBidiMap","nextBidi","bidiMap","defaultDir","_defaultDir","_lastDir","originalBlockToBeMoved","originalTargetBlock","isInsertedAfterTarget","originalTargetKey","originalParentKey","originalNextSiblingKey","originalPrevSiblingKey","newNextSiblingKey","newPrevSiblingKey","newParentChildrenList","targetBlockIndex","blockToBeMoved","blocksToBeMoved","blockMapWithoutBlocksToBeMoved","nextDelimiterBlockKey","isBlockToBeMoved","hasNextSiblingAndIsNotNextSibling","doesNotHaveNextSiblingAndIsNotDelimiter","slicedBlocks","decorators","_decorators","canOccupySlice","targetArr","componentKey","occupySlice","DraftEditorCompositionHandler","DraftEditorContents","DraftEditorDragHandler","DraftEditorEditHandler","flushControlled","DraftEditorPlaceholder","DraftEffects","allowSpellCheck","handlerMap","edit","composite","drag","cut","didInitODS","UpdateDraftEditorFlags","_update","_React$Component2","alreadyHasFocus","onPaste","onCut","onCopy","editHandler","_handler","setMode","contentsKey","clipboard","_clipboard","_dragCount","exitCurrentMode","_editorKey","editorKey","_placeholderAccessibilityID","_latestCommittedEditorState","_onBeforeInput","_buildHandler","_onBlur","_onCharacterData","_onCompositionEnd","_onCompositionStart","_onCopy","_onCut","_onDragEnd","_onDragOver","_onDragStart","_onDrop","_onInput","_onFocus","_onKeyDown","_onKeyPress","_onKeyUp","_onMouseDown","_onMouseUp","_onPaste","_onSelect","getEditorKey","_proto2","_showPlaceholder","_renderPlaceholder","placeHolderProps","accessibilityID","textDirectionality","rootClass","ariaRole","editorContentsProps","_handleEditorContainerRef","ariaControls","ariaLabelledBy","ariaMultiline","autoCapitalize","autoComplete","autoCorrect","notranslate","webDriverTestID","onBeforeInput","onCompositionEnd","onCompositionStart","onDragEnd","onDragStart","onInput","onKeyPress","onKeyUp","onMouseUp","outline","userSelect","WebkitUserSelect","execCommand","DOMObserver","editOnSelect","getEntityKeyForSelection","stillComposing","domObserver","startDOMObserver","resolveComposition","mutations","stopAndFlushMutations","composedChars","_DraftOffsetKey$decod","_editorState$getBlock","replacementRange","compositionEndSelectionState","restoreEditorDOM","editorStateWithUpdatedSelection","getWindowForNode","DOM_OBSERVER_OPTIONS","subtree","childList","characterDataOldValue","USE_CHAR_DATA","containerWindow","observer","registerMutations","onCharData","registerMutation","takeRecords","disconnect","getMutationTextContent","removedNodes","UAParser","UNKNOWN","PLATFORM_MAP","getResult","browserVersionData","major","minor","getBrowserVersion","uaData","cpu","architecture","browserMinorVersion","browserVersion","device","engine","convertPlatformName","platformVersion","MODEL","VENDOR","VERSION","MOBILE","TABLET","SMARTTV","util","extensions","mergedRegexes","str1","str2","lowerize","rgx","ua","arrays","maps","oldsafari","amazon","sprint","vendor","windows","uastring","rgxmap","getBrowser","getCPU","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","WEARABLE","EMBEDDED","ENGINE","OS","jQuery","Zepto","parser","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","rangeComponents","checkLessThan","compareComponents","checkGreaterThanOrEqual","checkGreaterThan","lowerBound","upperBound","numeric","checkApproximateVersion","checkEqual","zeroPad","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","DraftEditorBlockNode","DraftEditorContentsExperimental","prevEditorState","nextEditorState","nextNativeContent","wasComposing","nowComposing","prevContent","nextContent","prevDecorator","nextDecorator","processedBlocks","nodeBlock","blockProps","wrapperTemplate","nextBlockKey","outputBlocks","wrapperElement","DraftEditorNode","getDraftRenderConfig","configForType","getCustomRenderConfig","customRenderer","CustomComponent","customProps","customEditable","getElementPropsConfig","customConfig","elementProps","customClass","isContainerNode","blockHasChanged","wrapperRef","htmlBlockNode","_getDraftRenderConfig","shouldNotAddWrapperElement","wrappedSiblings","_iteratorNormalCompletion","_didIteratorError","_iteratorError","sibling","childrenIs","applyWrapperElementToSiblings","DraftEditorDecoratedLeaves","Leaves","useNewlineChar","_forceFlag","shouldBeNewline","elementNode","isNewline","NEWLINE_A","NEWLINE_B","getActiveElement","getAnonymizedDOM","getNodeLabels","anonymized","anonymizeTextWithin","labels","cloneNode","outerHTML","getAnonymizedEditorDOM","currentNode","hasAttribute","getNodeLength","nodeValue","addFocusToSelection","nodeWasFocus","activeElementName","nodeIsFocus","selectionRangeCount","selectionAnchorNodeName","selectionAnchorOffset","selectionFocusNodeName","selectionFocusOffset","getRangeAt","setEnd","addRange","addPointToSelection","createRange","nodeStart","nodeEnd","documentObject","tempKey","tempOffset","hasAnchor","removeAllRanges","storedFocusNode","storedFocusOffset","camelize","hyphenate","asString","computedStyle","cssFloat","styleFloat","_hyphenPattern","_uppercasePattern","elem","docElem","clientLeft","clientTop","isWebkit","scrollingElement","compatMode","pageXOffset","pageYOffset","joinClasses","getListItemClasses","shouldResetCount","blocksAsArray","lastWrapperTemplate","_className","_ii","newClassName","argLength","nextClass","getTextContentFromFiles","isEventHandled","endDrag","nativeEvent","dropSelection","eventTargetDocument","caretRangeFromPoint","dropRange","rangeParent","rangeOffset","getSelectionForEvent","handleDroppedFiles","fileText","insertTextAtSelection","dragType","_internalDrag","newContentState","mouseUpEvent","MouseEvent","bubbles","cancelable","dispatchEvent","mimeString","getParts","isJpeg","hasArrayNature","isChrome","isFirefox","selectionHandler","isSelectionAtLeafStart","_pendingStateFromBeforeInput","handleBeforeInput","timeStamp","mustPreventNative","oldBlockTree","newBlockTree","oldLeafSet","newLeafSet","oldStart","adjustedStart","oldEnd","adjustedEnd","newStart","newEnd","newDecoratorKey","blockTree","isAtStart","leafStart","preserveSelectionOnBlur","_selection","currentSelection","getFragmentFromSelection","setClipboard","removeFragment","keyCommandPlainBackspace","isGecko","domSelection","isNotTextOrElementNode","previousSibling","span","domText","modelText","preserveEntity","charDelta","contentWithAdjustedDOMSelection","inputType","onInputType","SecondaryClipboard","keyCommandBackspaceToStartOfLine","keyCommandBackspaceWord","keyCommandDeleteWord","keyCommandInsertNewline","keyCommandMoveSelectionToEndOfBlock","keyCommandMoveSelectionToStartOfBlock","keyCommandPlainDelete","keyCommandTransposeCharacters","keyCommandUndo","callDeprecatedHandler","handlerName","deprecatedHandler","paste","onKeyCommand","blockEnd","keyAfter","expandRangeToStartOfLine","areRectsOnOneLine","lineHeight","minTop","minBottom","maxTop","maxBottom","DOCUMENT_TYPE_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","collapsed","containingElement","correctDocument","documentBody","getLineHeightPx","bestContainer","bestOffset","setStartBefore","currentContainer","maxIndexToConsider","toRemove","moveSelectionForward","charAhead","finalSelection","afterInsert","updateFn","undoneState","DraftPasteProcessor","splitTextIntoTextBlocks","clipboardData","defaultFileText","handlePastedFiles","processText","withInsertedText","textBlocks","internalClipboard","getClipboard","areTextBlocksAndClipboardEqual","htmlFragment","processHTML","htmlMap","textFragment","textMap","convertFromHTMLToContentBlocks","textLine","blockNodeConfig","prevSiblingIndex","_uri","adjustment","NEWLINE_REGEX","unstable_flushControlled","encodeEntityRanges","encodeInlineStyleRanges","createRawBlock","entityStorageMap","insertRawBlock","rawBlocks","blockCacheRef","rawBlock","rawDraftContentState","rawState","entityCacheRef","entityStorageKey","stringifiedEntityKey","encodeRawBlocks","rawEntityMap","encodeRawEntityMap","storageMap","encoded","isTruthy","EMPTY_ARRAY","styleList","styleToEncode","filteredInlines","getEncodedInlinesForType","DraftTreeAdapter","createCharacterList","decodeEntityRanges","decodeInlineStyleRanges","decodeBlockNodeConfig","decodeCharacterList","rawEntityRanges","rawInlineStyleRanges","addKeyIfMissing","updateNodeStack","parentRef","nodesWithParentRef","decodeRawBlocks","isTreeRawBlock","fromRawStateToRawTreeState","contentBlockNode","siblings","_index","isValidBlock","_children","_contentBlockNode","decodeContentBlockNodes","decodeContentBlocks","fromRawTreeStateToRawState","rawEntityKey","_rawEntityMap$rawEnti","decodeRawEntityMap","draftTreeState","transformedBlocks","traverseInDepthOrder","addDepthToChildren","draftState","parentStack","treeBlock","lastParent","DraftTreeInvariants","isConnectedTree","eligibleFirstNodes","nodesSeen","currentKey","visitedStack","childKeys","_firstNode","isValidTree","characterArray","getRangeBoundingClientRect","boundingRect","_rects$","_rects$2","checkType","propName","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","createThunkMiddleware","extraArgument","thunk","withExtraArgument","Router","computeMatch","router","isExact","unlisten","LOCATION_CHANGE","ConnectedRouter","handleLocationChange","propsStore","unsubscribeFromHistory","patternCache","cacheCount","cacheKey","compiledPattern","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","updateLocation","ACTIONS","setLayout","layout","materialDesignColors","UserSession","getToken","session","access_token","jwtExpired","expires_on","twelveHours","cookieExpired","keepMeLoggedIn","setAt","clearToken","logoutUser","setTokenAndData","user","setUserData","userData","email","last_name","organization","organizationId","workspaceId","clearUserData","logout","getUserData","Actions","requestAction","responseAction","request","makeRequest","Accept","parentId","refresh","actionResponse","Authorization","btoa","formData","fetch","response","timeTaken","permissionsWereUpdated","setRefreshRequired","resetPermissionFlag","loginUser","password","Api","postForm","UserName","Password","errors","refreshRequired","authenticationReducer","mgs","userToken","getComponentsAction","viewId","getParametersAction","componentId","getViewContextMenuAction","getContextMenuAction","gridName","getObjectAction","patentObjectType","exportComponentAction","gridId","parentObject","getSelectedItemAction","callMethodAction","saveState","getFormAction","objectId","objectType","formAction","getFormValuesAction","getListItems","fieldId","getSearchItems","removeFormValuesAction","getViewAction","recid","toggleDialogAction","menu","showDialog","dialogContent","printDocument","openDocument","dashboardReducer","combineReducers","mainActivity","components","parameterResponse","referencelink","schemaObject","schemaItem","childrenArray","currentComponent","childItem","componentType","parentObjectType","parentItem","parentValues","readSchema","contextMenuResponse","objectResponse","records","responseTime","drawResponse","component_id","draw","selectedItems","parentSelectedItems","formFieldResponse","form","formFieldValuesResponse","formValues","optionValues","listItems","graphItems","param","dialogParent","searchValues","contextMenu","rootReducer","navbar","topNavigation","logo","leftSidebar","leftSidebarIcons","rightSidebar","secondary","danger","backgroundColors","light","authentication","dashboard","notificationsReducer","middleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","createHistory","currentLocation","hashIndex","searchIndex","isModifiedEvent","Link","handleClick","defaultPrevented","innerRef","Menu","badge","LeftSidebar","super","getMenuAction","Logo","ToggleLayout","toggleLayout","setConfig","DropdownMenu","logoutClick","badgeClass","badgeText","NavigationBar","iconColor","Switch","_element$props","pathProp","computedMatch","Route","nextContext","_context$router","staticContext","Form","description","InputText","focused","rules","hasErrors","classNameForLabel","singleBorder","errorIcon","errorPosition","underlineForGeneralError","autocomplete","hasCheckMark","targetName","lastUpdatedField","ERRORS","REQUIRED","EMAIL_FORMAT","STATE_CHARACTER_FORMAT","CITY_CHARACTER_FORMAT","PHONE_NUMBER_FORMAT","PASSWORD_FORMAT","NUMBER_FORMAT","NUMBER_NON_ZERO","DATE_FORMAT","AMERICAN_DATE_FORMAT","CARD_DATE_FORMAT","TIME_FORMAT","Validator","validatePassword","validateNumber","parsed","validatePhoneNumber","phoneNumber","validateAmericanDateFormat","valid","validateTimeFormat","validateEmail","validateCharacter","createErrorMap","validationMap","errorMap","_isNested","validateState","innerKey","corresponding","_setError","validationItem","required","characterState","characterCity","numberOrEmpty","nonZeroNumber","americanDate","LoginForm","VALIDATION_MAP","submit","loading","emailOrPassword","_renderTitle","hasGeneralError","invalidError","LinkState","ResetPasswordForm","GridMaster","searchVal","columns","column","operator","searchLogic","setOffset","searchArray","col","paginate","reload","cmd","showAdvancedSearchModal","loader_showing","getObject","hideloader","dataItem","Nr","hidden","modalType","showDeleteModal","handleShowModal","parentComponent","parentType","File","buildFormData","itemId","actionExecution","serviceName","serviceMethod","template","singleSelect","hasDraw","syntheticEvent","orderColumn","order","orderIndex","newWidth","drawItems","location_x","location_y","originx","originy","sizex","location_l","sizey","location_w","location_txt","location_color","location_x1","location_y1","location_l1","location_w1","location_txt1","location_color1","drawConnection","drawLine","endx","endy","listMenuItems","menuItems","columnWidth","maxItems","parameter","logic","filters","isSearchable","searches","gridContainer","enumerableOnly","_objectSpread2","chr","styleToObject","pair","PRODUCTION","normalizeIconArgs","objectWithKey","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","_classes","spin","pulse","fixedWidth","inverse","border","listItem","rotation","pull","swapOpacity","renderedIcon","_console","extraProps","convertCurry","convert","attrs","_extraProps$style","existingStyle","faBan","faCheck","faCheckCircle","faColumns","faRedo","faSearchPlus","TopButtons","columnDataArray","grid","sortDataArray","sortData","jsonToFormData","displayColumnList","refreshComponent","hideColumn","showList","saveColumnState","resetColumnState","SearchBox","onSearch","searchFunc","showSearchModal","optionsSupported","onceSupported","wrappedHandler","__once","onceHandler","scrollbarSize","recalc","scrollDiv","offsetWidth","useMounted","useWillUnmount","valueRef","onUnmount","usePrevious","useEventCallback","hasClass","psuedoElement","ownerWindow","rUpper","msPattern","hyphenateStyleName","supportedTransforms","transforms","isTransform","removeProperty","cssText","isWindow","DOCUMENT_NODE","isOverflowing","win","bodyIsOverflowing","BLACKLIST","exclude","ariaHidden","show","removeAttribute","manager","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","isContainerOverflowing","modal","containerIndexFromModal","overflowing","setContainerStyle","containerState","paddingRight","removeContainerStyle","modalIdx","containerIdx","dialog","backdrop","hideSiblings","_ref3","showSiblings","_data$modals","isTopModal","useModalManager","provided","modalManager","setDialogRef","setBackdropRef","_ref$show","_ref$role","_ref$backdrop","_ref$keyboard","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerRef","containerClassName","onShow","_ref$onHide","onHide","onResolved","_useState","resolvedRef","setRef","earlyRef","nextRef","useWaitForDOMRef","prevShow","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","createPortal","Manager","qsa","selector","querySelectorAll","Selector","_ModalManager","BootstrapModalManager","adjustAndStore","adjust","_css","actual","restore","_css2","emulateTransitionEnd","called","createEvent","initEvent","triggerTransitionEnd","mult","removeEmulate","nodeRef","maybeNode","maybeAppearing","maybeNextCallback","TransitionGroupContext","_fadeStyles","fadeStyles","triggerBrowserReflow","innerProps","rHyphen","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","createWithBsPrefix","_ref$Component","BsComponent","bsPrefix","_ref2$as","Tag","resolvedPrefix","ModalDialog","centered","dialogClass","CloseButton","ModalHeader","closeLabel","animation","dialogAs","DialogTransition","Modal","modalContext","setModalRef","_modal","handleDialogMouseDown","_waitingForMouseUp","handleMouseUp","_ignoreBackdropClick","updateDialogStyle","handleWindowResize","getModalManager","_this$props4","backdropClassName","containerIsOverflowing","modalIsOverflowing","paddingLeft","_this$props5","dialogClassName","Dialog","ariaLabelledby","clickHandler","baseModalStyle","DecoratedModal","isClassy","_opts","_opts$forwardRefAs","forwardRefAs","createBootstrapComponent","Body","Header","Title","Footer","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","areInputsEqual","newInputs","lastInputs","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","before","rule","_tag","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","ia","ka","aa","ba","la","ma","na","ea","oa","ca","fa","ha","use","toSheet","Sheet","ruleSheet","selectors","line","ns","stylisOptions","stylis","inserted","_insert","stylisPlugins","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","identifierName","EmotionCacheContext","CacheProvider","typePropName","cssProp","newProps","Emotion","argsLength","createElementArgArray","classnames","cls","toAdd","ClassNames","ele","applyPrefixToName","cleanValue","isDocumentElement","getScrollTop","animatedScrollTo","change","currentTime","animateScroll","isTouchCapable","getMenuPlacement","maxHeight","menuEl","minHeight","placement","shouldScroll","isFixedPosition","spacing","excludeStaticParent","overflowRx","docEl","parentElement","overflowY","overflowX","defaultState","offsetParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","MenuPlacer","maxMenuHeight","getPlacement","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getUpdatedProps","placerProps","noticeCSS","_ref5","_ref5$theme","baseUnit","neutral40","noOptionsMessageCSS","loadingMessageCSS","getStyles","_Component2","MenuPortal","_ref7","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","keyList","hasProp","exportedEqual","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","_extends$1","_templateObject","_taggedTemplateLiteralLoose","_extends$2","viewBox","focusable","baseCSS","isFocused","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","_ref6","verticalAlign","isRtl","indicator","_extends$3","_extends$4","_extends$5","isHidden","_extends$6","_ref4","removeProps","selectProps","Container","Label","Remove","emotionCx","_extends$7","cropWithEllipsis","_extends$8","_extends$9","_extends$a","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","DownChevron","CrossIcon","Group","Heading","headingProps","GroupHeading","cleanProps","_objectWithoutPropertiesLoose$1","IndicatorsContainer","indicators","IndicatorSeparator","Input","_objectWithoutPropertiesLoose$2","LoadingIndicator","MenuList","isMulti","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Option","isSelected","option","Placeholder","SelectContainer","SingleValue","ValueContainer","hasValue","diacritics","letters","stripDiacritics","trimString","defaultStringify","DummyInput","emotion","NodeResolver","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","activeScrollLocks","ScrollLock","originalStyles","listenerOptions","accountForScrollbars","touchScrollTarget","targetStyle","currentPadding","adjustedPadding","_ref$1","_PureComponent","ScrollBlock","getScrollTarget","blurSelectInput","isEnabled","ScrollCaptor","isBottom","isTop","scrollTarget","touchStart","cancelScroll","handleEventDelta","delta","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","onWheel","deltaY","onTouchStart","changedTouches","onTouchMove","startListening","stopListening","ScrollCaptorSwitch","_ref$isEnabled","instructionsAriaMessage","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","pointerEvents","_ref$theme","alignItems","neutral5","neutral0","borderColor","neutral10","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","paddingBottom","paddingTop","groupHeading","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","margin","loadingIndicator","marginRight","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","noOptionsMessage","primary25","WebkitTapHighlightColor","primary50","neutral50","singleValue","maxWidth","valueContainer","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","isLoading","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","tabSelectsValue","instanceId","Select","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","blockOptionHover","isComposing","clearFocusValueOnUpdate","hasGroups","initialTouchX","initialTouchY","inputIsHiddenAfterUpdate","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","cacheComponents","focusInput","blurInput","actionMeta","setValue","onMenuClose","selectOption","isOptionSelected","announceAriaLiveSelection","removeValue","removedValue","clearValue","popValue","lastSelectedValue","custom","getElementId","getActiveDescendentId","_this$state","announceAriaLiveContext","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","onClearIndicatorMouseDown","onScroll","touch","touches","deltaX","onTouchEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","shouldHideSelectedOptions","_this$props6","hideSelectedOptions","_this$props7","isClearable","_this$state2","focusValue","focusOption","buildMenuOptions","_props$inputValue","toOption","onHover","optionId","onMouseMove","onMouseOver","itemIndex","groupId","_selectValue","newSelectValue","lastProps","_menuOptions","startListeningComposition","startListeningToTouch","_this$props8","getNextFocusedValue","getNextFocusedOption","focusedEl","menuRect","focusedRect","overScroll","_this$props9","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","nextFocus","_this$state5","getTheme","getCommonProps","classNamePrefix","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","hasOptions","countOptions","_this$props12","formatOptionLabel","constructAriaLiveMessage","_this$state7","_this$props13","valueFocusAriaMessage","optionFocusAriaMessage","screenReaderMessage","resultsAriaMessage","_this$props14","ariaAttributes","_this$commonProps","renderPlaceholderOrValue","_this$components","_this$props15","_this$state8","isOptionFocused","renderClearIndicator","_this$props16","renderLoadingIndicator","_this$props17","renderIndicatorSeparator","_this$components2","renderDropdownIndicator","renderMenu","_this5","_this$components3","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","headingId","_message","menuPlacementProps","menuElement","_ref8","_ref8$placerProps","renderFormField","_this6","_this$props19","_value2","renderLiveRegion","_this$components4","_this$props20","defaultInputValue","defaultMenuIsOpen","SelectComponent","StateManager","callProp","funcs","isTrivialHref","SafeAnchor","_ref$as","variant","Feedback","controlId","FormCheckInput","bsCustomPrefix","isInvalid","isStatic","_useContext","FormCheckLabel","FormCheck","feedback","propCustom","innerFormContext","hasLabel","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","plaintext","_classes2","_classes3","_classes4","_classes5","FormGroup","DEVICE_SIZES","Col","spans","brkPoint","propValue","_propValue$span","infix","FormLabel","srOnly","columnClass","FormText","muted","validated","Row","Check","Text","SelectList","eventHandler","dispatchedEvent","eventData","eventBaseData","unbind","touchRegExp","normalizeEvent","pageX","pageY","originalEvent","isTouch","offsetX","offsetY","this$1","press","release","mouseOnly","_pressHandler","_dragHandler","_releaseHandler","_ignoreMouse","_mouseOnly","_touchstart","_touchmove","_touchend","_restoreMouse","_mousedown","_mousemove","_mouseup","_pointerdown","isPrimary","_pointermove","_pointerup","supportPointerEvent","PointerEvent","bindTo","_element","_unbindFromCurrent","_bindToCurrent","_usePointers","destroy","__extends","extendStatics","_super","Draggable","draggable","onPress","onDrag","onRelease","assingRef","focusFirstFocusableChild","HTMLInputElement","useDir","elementRef","initialDir","setDir","rtlCandidate","useRtl","getterCache","cloneDate","getTabIndex","useDefaultTabIndexWhenDisabled","parsedTabIndex","PagerNumericButtons","handlePageChange","page","pageChange","prevDots","renderDots","postDots","totalPages","numerics","currentPage","buttonCount","reminder","identity","_number","_cldrVersion","language","territory","numbers","decimal","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","patterns","groupSize","scientific","currency","currencies","BGN","EUR","USD","localeCurrency","accounting","gmtFormat","gmtZeroFormat","dateTimeFormats","full","long","medium","short","availableFormats","Bh","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","dateFormats","abbreviated","wide","dayPeriods","midnight","am","noon","pm","morning1","afternoon1","evening1","night1","dateFields","dayperiod","supplemental","likelySubtags","currencyData","region","US","_from","weekData","firstDay","weekendStart","weekendEnd","formatRegExp","IntlError","formatMessage","flattenValues","formattedMessage","cldr","getLocaleInfo","fullName","localeFullName","availableLocaleInfo","NoLocale","localeTerritory","likelyName","territoryFromName","dateFormatNames","nameType","standAlone","lower","formatType","lowerNameType","formatNames","lowerArray","lowerObject","parseRangeDate","NoCurrency","NoCurrencyDisplay","NoSupplementalCurrency","NoCurrencyRegion","NoValidCurrency","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","lengthComparer","territoryCurrencyCode","regionCurrencies","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","_to","validFrom","validTo","stillValidDate","regionCurrency","DAYS_OF_WEEK","NoWeekData","NoFirstDay","isNegativeZero","formatCurrencySymbol","currencyDisplay","currencyInfo","groupInteger","decimalIndex","groupSizes","integerEnd","integer","integerLength","newGroupSize","isCurrencyStyle","padString","decimals","trailingZeroRegex","fractionOptions","currencyFractions","minimumFractionDigits","maximumFractionDigits","isCurrency","fractions","_digits","currencyFractionOptions","literalRegExp","setStyleOptions","formatOptions","setFormatLiterals","literals","quoteChar","literal","trailingZerosRegExp","trailingPointRegExp","commaRegExp","roundNumber","lastZero","trimRegex","zeroIndex","sharpIndex","hasZero","hasSharp","fraction","trailingZeros","negative","negativeZero","placeholderIndex","index1","index2","applyCustomFormat","replaceLiterals","replaceStyleSymbols","lastZeroIndex","hasNegativeFormat","hasGroup","replacePlaceHolders","customNumberFormat","zeroFormat","isConstantFormat","constant","setValueSpecificFormat","setGroupOptions","setPlaceholderIndices","standardFormatRegExp","formatAndPrecision","standardFormatOptions","formatNumber","toExponential","minimumIntegerDigits","formattedValue","useGrouping","currencyUnitPattern","applyPattern","standardNumberFormat","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","cleanCurrencyNumber","displays","currencyDisplays","cleanNumber","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","skeleton","findBestMatch","specifiers","bestMatches","specifiersLength","maxScore","currentFormat","idx$1","bestMatch","matchSpecifier","skeletonFormat","timeStartIndex","dateSkeleton","timeSkeleton","cacheFormat","datePattern","spcifier","skeletonFromOptions","dateNameType","formatLength","DATE_FIELD_MAP","dateFormatRegExp","formatMonth","formatQuarter","formatTimeZone","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","formatDayOfWeek","firstDayIndex","formatters","formatDate","convertTimeZone","fromOffset","fromLocalOffset","offsetDate","toLocalOffset","getHours","getMinutes","getSeconds","getMilliseconds","timeZoneOffsetRegExp","dateRegExp","offsetRegExp","numberRegExp","numberRegex","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","outOfRange","lookAhead","getNumber","valueIdx","getIndexByName","nameLength","subValue","matchLength","matchIdx","checkLiteral","parseTimeZoneOffset","noSeparator","zLiteral","NoGMTInfo","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","dayOfWeek","parsers","addFormatSpaces","parseExact","pmHour","hasTime","setHours","adjustDST","parseMicrosoftDateFormat","tzoffset","parseValue","parseFormats","defaultFormats","periodFormats","shortFormat","NAME_TYPES","minLength","addLiteral","lastPart","isHour12","placeholderFormat","IntlService","parseNumber","isPercent","cleanLiterals","negativeCurrency","currencyNumber","negativeSignIndex","isNegative","dateFieldName","NoDateFieldNames","fieldNameInfo","splitDateFormat","patternLength","numberSymbols","LocalizationService","toLanguageString","GlobalizationContext","intl","__assign","IntlProvider","getIntlService","glob","LocalizationProvider","getLocalizationService","provideIntlService","provideLocalizationService","registerForIntl","registerForLocalization","useLocalization","PagerInput","_text","intlService","localizationService","pageMessage","messagesMap","messageKey","defaultMessage","ofMessage","totalPagesMessage","editorId","editorDisabled","editorValid","localizedOptional","optionalElement","onLabelClick","editorActionElement","actionElement","click","errorClassName","Hint","hintClassName","FloatingLabel","handleFocus","handleBlur","editorValue","editorPlaceholder","spanClassNames","labelClassNames","computedStyles","__rest","AnimationChild","transitionName","transitionEnterDuration","transitionExitDuration","animationEnteringStyle","animationEnteredStyle","animationExitingStyle","animationExitedStyle","childAnimationContainerClassNames","defaultStyle","transitionDelay","animationStyle","entering","transitionDuration","entered","exiting","transitionProps","animatedElement","appearActive","enterActive","exitActive","Animation","componentChildStyle","stackChildren","componentChildClassName","Fade","Expand","animationProps","EXITING_ANIMATION_STYLE","Push","Slide","Zoom","Reveal","componentWillEnter","updateContainerDimensions","componentIsEntering","componentWillExit","newHeight","maxOffset","useAnimation","deps","mount","animationFrame","onStart","frame","timestamp","rate","onUpdate","animate","anchorRect","anchorAlign","elementRect","elementAlign","anchorHorizontal","horizontal","anchorVertical","vertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","cachedWidth","windowViewport","rectOfHiddenElement","elementStyles","useRelative","parentOffset","parentStyles","borderTopWidth","borderLeftWidth","offsetParentElement","parentScrollPosition","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","isBeforeAnchor","collisions","viewPort","elementTop","elementLeft","elementHeight","elementWidth","viewPortHeight","viewPortWidth","isHorizontalFlip","isVerticalFlip","flippedHorizontal","flippedVertical","firstElementChild","nextElementSibling","siblingElements","parentElements","containerElement","eitherRect","OVERFLOW_REGEXP","overflowStyle","HAS_RELATIVE_STACKING_CONTEXT","isDifferent","hasRelativeStackingContext","CollisionType","AlignPoint","AlignService","_dom","alignElement","settings","hasOffsetParent","absoluteRect","relativeRect","align","dom","removedOffset","stackingOffset","removeStackingOffset","stackingElementOffset","stackingScroll","stackingElementScroll","withScroll","addScroll","elementScrollPosition","removeScroll","scrollX","scrollY","DOMService","addOffset","addition","boundingOffset","getWindow","isBodyOffset","offsetParentEl","staticOffset","currentOffset","popup","scale","ref$1","positionScale","relativeOffset","isOffsetBody","restrictToView","scrollableParents","relativeContextElement","getRelativeContextElement","stackingElementViewPort","useRelativePosition","windowViewPort","zIndexStyle","zoomLevel","isZoomed","PositionService","positionElement","initialElementRect","DEFAULT_OFFSET","getHtmlElement","Popup","_exitingAnimation","_prevShow","onOpened","attachRepositionHandlers","onOpen","onClosing","detachRepositionHandlers","onClosed","onClose","anchorElement","popupAlign","collision","alignedOffset","_alignService","_positionService","_flipped","_domService","reposition","wait","previous","later","leading","trailing","throttle","popupClass","newPosition","calculatePosition","openDuration","closeDuration","innerClasses","_scrollableParents","ListContainer","popupSettings","ListFilter","isPresent","sameCharsOnly","shuffleData","splitIndex","defaultItem","matchText","itemIndexStartsWith","itemText","getItemValue","getItemIndexByText","textField","matchCase","casing","data_1","removeDataItems","areSame","item1","item2","getFocusedItem","preventDefaultNonInputs","ListDefaultItem","ListItem","nodata","renderItems","valueField","optionsGuid","highlightSelected","itemRender","realIndex","renderNoValueElement","noDataRender","noDataElement","wrapperCssClass","listStyle","listRef","VirtualScroll","containerHeight","enabled","itemHeight","prevScrollPos","listTranslate","scrollSyncing","scrollerRef","vs","calcScrollElementHeight","heightChanged","scrollElement","scrollHandler","changePage","newSkip","PageChange","translateTo","dY","scrollToEnd","localScrollUp","targetTranslate","additionalOnTop","validateTranslate","localScrollDown","itemsLenght","scrollNonStrict","floatItemIndex","Navigation","navigate","DropDownBase","navigation","handleItemClick","initState","handleItemSelect","togglePopup","applyState","filterChanged","filterable","opened","calculatePopupWidth","triggerOnPageChange","scrollToVirtualItem","selectedItemIndex","scrollToItem","renderScrollWrapper","getPopupSettings","renderScrollElement","listBoxId","guid","didMount","popupWidth","shouldUpdate","calculateDir","dirCalculated","vsEnabled","virtualScroll","scrollElem","viewportHeight","itemOffsetTop","eventArgs","triggerPageChangeCornerItems","dataItemKey","basicPropTypes","accessKey","listNoDataRender","focusedItemIndex","onFilterChange","onPageChange","validityStyles","DropDownList","searchState","_skipFocusEvent","_filterInput","_navigated","newSelected","triggerOnChange","renderDropDownWrapper","iconClassName","valueRender","valueDefaultRendering","valueElement","handleKeyDown","handleKeyPress","handleWrapperClick","dummySelect","_select","valueMap","renderListContainer","listContainerProps","onPopupOpened","onPopupClosed","renderListFilter","renderDefaultItem","renderList","filterText","handleListFilterChange","handleDefaultItemClick","_typingTimeout","selectNext","mappedData","isInLoop","dataLength","loopMatch","nextMatch","_valueDuringOnChange","homeOrEndKeys","upOrDownKeys","shouldOpen","shouldClose","shouldNavigate","onNavigate","charCode","focusElement","setValidity","setCustomValidity","validity","validationMessage","customError","valueMissing","prevTotal","prevOpened","opening","selectedItem_1","prevSelectedItem","selectedItemChanged","dropdownlist","newIndex","hasSelected","ClearButton","ActiveDescendant","SearchBar","_input","prevValue","prevSuggestedText","suggestedText","valueChanged","deleting","setSelectionRange","owns","activedescendant","clearButton","clearButtonClick","ComboBox","_inputId","_suggested","toggleBtnClick","applyValueOnRejectSuggestions","onInputKeyDown","applyValueOnEnter","inputOnChange","suggest","selectionAtEnd","prevText","deletedSuggestion","suggestValue","focusedItem","selectedItem","_valueOnDidUpdate","selectedItemText","inputText","renderClearButton","combobox","renderSearchBar","getFocusedIndex","currentIndex","allowCustom","valueIndex","itemSelected","selectFocusedItem","valueItemText","suggested","suggestedItem","AutoComplete","newText","itemFocus","onChangeHandler","prevSuggestion","prevUserInput","userInput","applyInputValue","prevData","dataChanged","focusedItemChanged","typedText","newFocused","eventKey","readonly","searchbar","TagList","tagData","tagClassName","onTagDelete","tagRender","FocusedItemType","matchTags","tag1","tag2","data1","data2","matchDataCollections","isCustom","CustomItem","MultiSelect","PopupList","_valueItemsDuringOnChange","_tags","indexInValue","newItems","itemsToRemove","getFocusedState","customItem","nextFocusedItem","searchbarRef","onTagsNavigate","customItemSelect","focusedType","autoClose","closing","customItemFocused","focusedTag","tagsToRender","setItems","renderSearchbar","placeholderToShow","ariaActivedescendant","TagsList","itemsKey","newFocusedTag","hasFocused","srcItems","destItems","focusedInd","last_1","None","PagerPageSizes","pageSizeChange","sizes","pageSizes","itemPerPageMessage","Pager","changer","firstPageMessage","previousPageMessage","nextPageMessage","lastPageMessage","infoMessage","previousNext","renderButton","pagerPageSizes","ScrollDirection","createFilterCell","FilterCell","filterChange","inputChange","findCellFilter","filterResult","emptyFilter","operatorChange","clearButtonTitle","operators","operatorComponentProps","inputComponent","operatorComponent","BooleanFilterCell","cellProps","newDate","expected","isEqualDate","RowHeightService","rowHeight","detailRowHeight","offsets","heights","agg","rowIndex","expandDetail","updateRowHeight","collapseDetail","totalHeight","curr","ScrollAction","PageAction","ScrollerService","onScrollAction","onPageAction","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScrollTop","offsetBufferRows","rowsForHeight","skipWithOffset","rowOffset","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","Day","scrollModifiers","Forward","Backward","scrollNormalizers","scrollValidators","Virtualization","animationInProgress","scrollProperty","scrollContainer","scrollToIndex","animateToIndex","cancelAnimation","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","progress","scrollToBottom","scrollDuration","containerScroll","containerScrollPosition","maxScrollDifference","maxScroll","containerMaxScroll","containerScrollSize","containerOffsetSize","initServices","dimension","itemWidth","scrollerService","scrollOffsetSize","getContainerProperty","propertyName","handleScroll","scrollAction","pageAction","handleScrollAction","handlePageAction","activeIndex","itemOffset","isIndexVisible","containerBottom","isListScrolled","onMount","lastTotal","lastDirection","lastTake","vertexLength","placeholderStyle","rootClassNames","scrollableClassNames","forceScroll","Direction","addDays","Action","CalendarViewEnum","weekDay","newDay","moveDateToWeekStart","weekStartDay","Monday","prevDayOfWeek","calcWeekInYear","firstWeekInYear","diffInMS","CalendarCell","handleMouseEnter","handleMouseLeave","xProps","yProps","compareProps","isWeekend","isInRange","isRangeStart","isRangeMid","isRangeEnd","isRangeSplitStart","isRangeSplitEnd","isToday","isEndActive","activeRangeEnd","isStartActive","rootClassName","CalendarWeekCell","EMPTY_SELECTIONRANGE","viewInRange","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","MIN_TIME","MAX_TIME","getToday","isInDateRange","isInSelectionRange","selectionRange","shiftWeekNames","dateInRange","domContainerFactory","lastDayOfMonth","addMonths","expectedMonth","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","durationInCenturies","EMPTY_DATA","Left","Up","Right","Down","PrevView","NextView","FirstInView","LastInView","CenturyViewService","addToDate","datesList","cellUID","focusedDate","isActiveView","cells","firstDate","lastDate","today","baseDate","cellOffset","cellDate","isSelectedFromArray","cellTitle","isInArray","aboveMin","belowMax","isInSameView","move","navigationTitle","rowLength","lastYearOfDecade","durationInDecades","DecadeViewService","addWeeks","firstDayOfMonth","durationInMonths","MonthViewService","firstMonthDate","lastMonthDate","abbrMonthNames","wideMonthNames","prependCell","firstMonthOfYear","lastMonthOfYear","durationInYears","YearViewService","_intl","candidateValue","services","decade","century","BusViewService","onViewChanged","configure","service","moveDown","moveUp","moveToBottom","activeView","canMoveDown","canMoveUp","viewOffset","didCalculate","ensureHeights","calendarHeight","calculateHeights","navElement","ul","li","td","tr","tbody","thead","monthHeader","navigationList","viewFactory","renderWeekHeader","viewElement","contentElement","getScrollable","scrollableElement","monthView","yearView","decadeView","getBody","hostContainer","batch","monthViewHeight","headerHeight","scrollableContentHeight","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","scrollableYearContentHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","navigationItemHeight","viewType","viewDimension","viewWidth","viewProp","appendedContent","KEY_TO_ACTION","UpperView","LowerView","NavigationService","bus","ScrollSyncService","monthScrolled","navScrolled","magnitude","divideByMagnitude","powerByMagnitude","sync","scrollSiblingOf","scrolledElement","siblingComponent","calculateScroll","WeekNamesService","getWeekNames","includeWeekNumber","weekNames","emptyCell","View","buildWeekNumber","row","weekCellValue","getWeekNumber","weekCell","buildRow","cell","aria","firstWeekDateContext","rowCtx","weekNumber","onCellEnter","onCellLeave","showWeekNumbers","weekService","isHorizontal","isMonthView","prevWeekDate","nextWeekDate","weekInYear","CalendarHeaderTitle","prevView","nextView","increaseValue","decreaseValue","swapStartEnd","toggleDateTimeSelector","selectNow","toggleClock","getTitle","rangeLength","nextDate","handleTitleClick","handleTodayClick","todayIsInRange","onTodayClick","todayMessage","titleClassNames","todayClassNames","headerTitleProps","headerTitle","ViewList","isActive","focusActiveDate","focusedCell","nextActiveCell","blurActiveDate","handleVirtualizationMount","virtualization","indexToScroll","buildMonthView","cols","buildDates","calendarView","handleDateChange","scrollableHeight","getTake","isTodayClick","lastView","lastFocus","smoothScroll","_prevProps","_prevState","didViewChange","activeDate","didViewChanged","viewListBody","CalendarNavigationItem","buildNavigationItem","navigationItemProps","navigationItem","maxViewHeight","navigationBody","virtualizationProp","calculateValue","stateValue","Calendar","didNavigationChange","scrollSyncService","calendarViewList","handleNavigationChange","handleViewChange","canNavigateDown","valueDuringOnChange","handleMouseDown","defaultActiveView","bottomView","topView","oldValue","didValueChange","sanitizedValue","calendarBody","Mask","approximateStringMatching","oldTextOrigin","oldFormat","newTextOrigin","oldTextSeparator","oldText","deletedSymbol","dateSymbolMap","wrapperClasses","KendoDate","intlProvider","formatPlaceholder","leadingZero","typedMonthPart","knownParts","monthNames","allFormatedMonths","modifyExisting","getExisting","getDateObject","getTextAndFormat","dateFormatString","sampleFormat","setExisting","modifyPart","setMinutes","parsePart","currentChar","resetLeadingZero","dateParts","baseFormat","replaced","matchMonth","middleNumber","monthNumber","isAbbrMonth","partMap","hasLeadingZero","partPattern","typedChar","monthAsNum","dateFormatParts","partLength","resultText","resultFormat","currentSymbol","TIME_PART","defaultGetters","generateGetters","getters","getterByPart","convertToObject","gettersFactory","generateSnappers","minValue","snapValue","snappersFactory","snapTime","snappers","getNow","normalizeTimes","maxValue","isInTimeRange","isSmallerThanMin","normalizedValue","normalizedMin","isBiggerThanMax","DateInput","kendoDate","_wrapper","spinnersMouseDown","elementChange","dateBeforeChange","navigationOnly","setSelection","selectionBySymbol","switchDateSegment","triggerChange","elementClick","selectionByIndex","wheel","increasePart","decreasePart","modifyDateSegmentValue","elementKeyDown","elementOnFocus","elementOnBlur","_lastSelectedSymbol","ariaProps","wrapperClassesInstance","dateinput","spinners","inRange","minTime","maxTime","rangeOverflow","rangeUnderflow","previousFormatSymbol","currentStepSymbol","timeZoneName","ToggleButton","PickerWrap","DatePicker","_popupId","_dateInput","shouldFocusDateInput","setDateInputRef","dateInput","setCalendarRef","nextShow","handleInputValueChange","handleValueChange","handleCalendarValueChange","mergeTime","showDuringOnChange","nextTickId","setShow","handleIconClick","handleIconMouseDown","defaultShow","toggleButton","pickerWrap","otherPopupSettings","wrapperClassNames","popupClassNames","dateInputProps","popupProps","calendarProps","pickerWrapComp","dateInputComp","toggleButtonComp","popupComp","calendarComp","isAM","inReverseRange","DayPeriodService","hourAM","candidateAM","normalizedRange","dayPeriod","isRangeChanged","limitRange","valueInList","minHour","maxHour","timeListHeight","timeWrapper","rangeValue","clampToRange","distanceFromMin","borderValue","barrier","limitDown","limitUp","HOURS_IN_DAY","HoursService","boundRange","insertUndividedMax","toListItem","selectedValue","getHour","countFromMin","addLast","addMissing","isLastMissing","missing","isMissing","divideByStep","lastHour","missingItem","MINUTES_IN_HOUR","MinutesService","getMinute","lastMinute","SECONDS_IN_HOUR","SecondsService","getSecond","lastSecond","TimeList","distance","bottomThreshold","topThreshold","listHeight","configureServices","newMin","newMax","serviceSettings","handleChange","handleMouseOver","msTransform","TimePart","timeLists","timeList","activeListIndex","hasActiveButton","timeFormatReducer","timeFormatFilter","prevItem","focusList","listReducer","showNowButton","hasSteps","nowButton","handleListBlur","handleListFocus","timeInRange","onNowClick","selectNowMessage","btn","_nowButton","cancelButton","TimeSelector","focusActiveList","timePart","handleAccept","mergeValue","handleReject","onReject","handleNowClick","valueMerger","cancelMessage","setMessage","_cancelButton","_acceptButton","TimePicker","_timeSelector","setTimeSelectorRef","timeSelector","handleValueReject","normalizeTime","toggleClockMessage","toggleTimeMessage","HorizontalViewList","rotateSelectionRange","needRotate","lastViewsCount","views","isDateInList","didViewsCountChange","allowReverse","extractDateFromValue","extractMultipleFromValue","extractRangeFromValue","extractFocusedDate","single","MultiViewCalendar","selectedMultiple","selectedRange","wrapperID","calculateFocusFromValue","clampRange","rangeWithFocused","generateRange","shouldSwap","activeRange","canNavigate","isListInRange","clampDate","shouldAutoCorrect","handleCellEnter","handlePrevButtonClick","handleNextButtonClick","index_1","calculatedFocus","_focusedDate","visualizedRange","wrapperAria","prevViewTitle","nextViewTittle","isPrevDisabled","isNextDisabled","prevBtnAria","nextBtnAria","WRAPPER_STYLES","DateRangePicker","_startInputId","_endInputId","shouldFocusCalendar","_startDateInput","setStartDateInputRef","setEndDateInputRef","_endDateInput","focusCalendarElement","calculateShow","handleReverseClick","handleReverseMouseDown","handleEndChange","handleStartChange","handleCalendarChange","focusDateInputElement","startDateInputId","startDateInputSettings","endDateInputId","endDateInputSettings","startMessage","endMessage","separatorMessage","startDateInputProps","endDateInputProps","calendarSettings","reverseButton","startDateInput","swapButton","endDateInput","Button","toggleIfApplicable","togglable","_activeTemp","look","iconClass","imageUrl","imageAlt","htmlAttributes","hasIcon","hasChildren","buttonProps","iconEl","iconClasses","iconElement","ButtonGroup","mapButtons","groupClasses","groupProps","rtl","ButtonItem","onDown","onPointerDown","renderContent","Render","SplitButtonItem","getAnchorAlign","isDirectionRightToLeft","getPopupAlign","SplitButton","mainButton","buttonsData","dispatchPopupEvent","dispatchClickEvent","arrowKey","onItemClick","clickedItemIndex","onSplitPartClick","toOpen","onDownSplitPart","onItemDown","buttonClass","renderPopup","isItemDisabled","onButtonClick","renderChildItems","DropDownButtonItem","DropDownButton","mouseDown","onClickMainButton","ToolbarItem","ToolbarButton","adjustTabIndex","Toolbar","mapToolbarChild","toolbarItem","mapItemChildren","tool","mapButton","buttonRef","focusButton","onWindowResize","newSizes","onResize","keyboardNavigation","prevFocusedIndex","tabIndex_1","prevIndex","toolbarButton","currentFocused","prevButton","ToolbarSeparator","spacer","DateTimeSelector","tab","_timePart","nextPart","shouldFocusPart","dateValue","timeValue","mergeDate","timeOverride","hasDateValue","handleTimeListContainerChange","handleDateClick","handleTimeClick","handleTimePartMount","setButtonClassName","dateMessage","timeMessage","normalizeRange","DateTimePicker","_dateTimeSelector","handleDateIconClick","dateTimeSelector","DateFilterCell","fitIntoBounds","contender","observers","_observers","addObserver","removeObserver","_suspended","optionsChange","geometryChange","suspend","_observerField","wnd","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationFrameProxy","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","logToConsole","getArray","_defaultPrevented","Class","Observable","_events","handlers","arguments$1","eventNames","handlersIsFunction","loop","eventName$1","sender","isDefaultPrevented","support","browserRxs","edge","webkit","safari","opera","msie","mozilla","agent","documentMode","lastExecTime","throttled","elapsed","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","c1","Bytes","RGB","HSV","toHSL","HSL","hue2rgb","Color","resolvedColor","resolveColor","formatRegex","processor","channels","normalizeByte","padDigit","namedColors","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","200","300","400","500","600","700","800","900","1000","arabicToRoman","roman","createPromise","resolveFn","rejectFn","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MIN_NUM","deg","radians","encodeUnit","KEY_STR","encodeBase64","utfInput","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","initialTouch","isTransparent","limitValue","mergeSort","cmp","ai","bi","promiseAll","rad","degrees","power","valueOrDefault","bindEvents","box","stylesArray","getPixels","size$1","unbindEvents","LRUCache","_size","_length","newer","older","REPLACE_REGEX","normalizeText","objectKey","hashKey","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","baseline","cachedResult","measureBox","baselineMarker","_baselineMarker","textStr","measureText","OptionsStore","_wrap","_set","parentObj","fieldName","_clear","wrapped","setAccessor","getAccessor","defineAccessors","capitalized","Matrix","multiplyCopy","matrix","invert","det","angle","cos","sin","scaleX","scaleY","IDENTITY","toMatrix","transformation","Point","staticAccessors","originPoint","translateWith","scaleCopy","transformCopy","distanceTo","dx","dy","doRound","arg0","arg1","minX","minY","maxX","maxY","minPoint","maxPoint","Size","Rect","setOrigin","getOrigin","getSize","bbox","tl","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","rect1","rect2","Transformation","_matrix","_optionsChange","_initOptions","clip","parentTransform","parentMatrix","currentTransform","combinedMatrix","elementMatrix","visible","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","stroke","ellipseExtremeAngles","ry","extremeX","extremeY","atan2","PI_DIV_2","Circle","radius","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","newFill","IDENTITY_MATRIX_HASH","matrixHash","_bboxCache","_matrixHash","_bbox","geometryAccessor","defineGeometryAccessors","geometry","rawBBox","_geometry","tolerance","closeOrLess","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","startPoint","intersection","p0","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","parameters","x1","y1","y2","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_change","_add","howMany","_clearObserver","_setObserver","GeometryElementsArray","pointAccessor","definePointAccessors","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","nthR","isReal","numberSign","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","intersects","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","rotatedPoints","_isOnLineTo","_isOnPathTo","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","MultiPath","moveTo","lineTo","curveTo","arc","arcTo","toLineParamaters","isVertical","insertPosition","reflectionPoint","quadraticToCubicControlPoints","scaledPoint","isRelative","lastControlIn","previousCommand","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","PathParser","multiPath","closePath","parseParameters","Path","lineJoin","lastSegment","_addArcSegments","closed","intersectionsCount","pathWidth","segmentBox","fromRect","fromArc","toPath","font","_rect","childrenField","traverse","childrenChange","_reparent","insertAt","removeAt","translateToPoint","transofrm","axis","sizeField","alignStartReverse","alignContent","orientation","lineSpacing","revers","forEachReverse","Layout","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groupsSize","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","_newGroup","addGroup","_addToGroup","alignElements","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","vStack","wrapElements","stacks","stackSize","addElementToStack","getStacks","startElement","elementIdx","vWrap","elementSize","rectSize","StopsArray","optionsAccessor","GradientStop","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","swing","easeOutElastic","asin","AnimationFactory","_items","register","setup","play","easing","_stopped","wallTime","easingPosition","SurfaceFactory","preferred","Surface","_kendoExportVisual","exportVisual","_click","_mouseenter","_mouseleave","_visual","_enableTracking","eventTarget","domNode","_kendoNode","srcElement","currentSize","_resize","resize","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","_surfacePoint","coord","BaseNode","load","removeSelf","invalidate","renderAttr","renderAllAttr","renderStyle","SVG_NS","renderSVG","svg","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","DefinitionMap","isDefinition","clearDefinitions","childNode","createDefinitions","domElement","setElement","childElement","renderChildren","updateDefinition","removeAttr","allAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","renderOpacity","renderId","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","GradientStopNode","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","BaseSurface","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","mousemove","visual","hasFeature","GroupNode","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","printPath","currentType","segmentType","printPoints","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","CircleNode","RectNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","ENTITY_REGEX","decodeEntities","innerText","TextNode","setY","renderTextAnchor","MultiPathNode","exportGroup","rootGroup","exportRoot","renderPath","prevOut","bezierCurveTo","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","renderTo","save","canvas","getContext","invalidateHandler","_invalidate","_rescale","devicePixelRatio","clearRect","QuadRoot","shapes","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","_initChildren","halfWidth","halfHeight","zIndexComparer","_zIndex","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","levelWeight","bboxChange","_insertShape","elementsArray","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","onLoad","onError","crossOrigin","drawImage","fillText","strokeText","exportImage","surfaceOptions","exportSVG","keyStr","HAS_TYPED_ARRAYS","BASE64","BinaryStream","ensure","writeString","writeByte","readByte","readShort","writeShort","readLong","writeLong","readLong_","writeLong_","stream","eof","readFixed","writeFixed","readShort_","writeShort_","readFixed_","writeFixed_","readString","nbytes","saveExcursion","writeBase64","base64","atob","base64ToUint8Array","atobUint8Array","createUint8Array","sortedKeys","Directory","scalerType","tableCount","searchRange","entrySelector","rangeShift","tables","checksum","deftable","Ctor","rawData","readTable","maxpow2","directoryLength","headOffset","tableData","POSTSCRIPT_GLYPHS","HeadTable","revision","checkSumAdjustment","magicNumber","unitsPerEm","created","modified","xMin","yMin","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","LocaTable","offsetOf","lengthOf","needsLongFormat","HheaTable","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","ids","MaxpTable","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","HmtxTable","hhea","metrics","advance","lsb","lsbCount","maxp","leftSideBearings","forGlyph","GlyfTable","SimpleGlyph","compound","CompoundGlyph","idOffsets","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameTable","NameEntry","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","rec","postscriptEntry","postscriptName","psName","strCount","strTable","PostTable","numberOfGlyphs","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","indexes","post","CmapTable","CmapEntry","codeMap","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","ncid2ogid","ogid2ngid","codes","startCodes","endCodes","new_gid","charcode","segCountX2","deltas","rangeOffsets","startGlyph","renderCharmap","OS2Table","averageCharWidth","weightClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","subsetTag","Subfont","subset","unicodes","ngid2ogid","firstChar","nextGid","nextSubsetTag","TTFFont","contents","numFonts","ucs2decode","old_gid","cmap","encodeText","glyphsFor","glyf","old_gid_ids","lastChar","hmtx","os2","directory","cidToGidMap","cid","widthOfGlyph","makeSubset","NL","RESOURCE_COUNTER","PAPER_SIZE","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","tabloid","makeOutput","indentLevel","PDFValue","beforeRender","renderArray","renderDate","PDFDictionary","writeData","withIndent","getPaperOptions","getOption","paperSize","unitsToPoints","PDFDocument","objcount","objects","defval","attach","renderValue","renderFull","wrapObject","pages","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","catalog","PDFCatalog","pageTree","PDFPageTree","nameTree","JavaScript","Names","PDFString","JS","setPages","Producer","Author","Subject","Keywords","Creator","CreationDate","addPage","paperOptions","contentWidth","contentHeight","Contents","Parent","MediaBox","PDFPage","_content","xrefOffset","zeropad","Root","Info","FONT_CACHE","IMAGE_CACHE","loadOne","cont","responseType","VBArray","responseBody","loadBinary","urls","loadImages","images","bloburl","blob","_load","_onerror","_onload","_trycanvas","imgdata","getImageData","ex","hasAlpha","alpha","rawbytes","PDFRawImage","PDFJpegImage","readAsArrayBuffer","loadImage","loadFonts","getFont","PDFStandardFont","PDFFont","getImage","asStream","getOpacityGS","forStroke","_opacityGSCache","gs","Type","CA","_resourceName","mm2pt","cm2pt","cm","in2pt","inch","defclass","utf16be","txt","trail","encodeUTF16BE","PDFHexString","PDFName","PDFName_cache","compress","Filter","Length","pagesObj","Pages","Kids","Count","pageObj","SOF_CODES","colorSpace","bitsPerComponent","Subtype","Width","Height","BitsPerComponent","ColorSpace","Decode","pdf","SMask","BaseFont","Encoding","_pdf","_font","_sub","stemV","isSerif","isScript","getTextWidth","fontStream","Length1","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","gid","descendant","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","unimap","PDFToUnicodeCmap","unimapStream","ToUnicode","makeHash","cacheColorGradientFunction","r1","g1","r2","g2","FunctionType","Domain","C0","C1","cacheOpacityGradientFunction","cacheGradient","isRadial","cur","prevColor","curColor","opacities","assemble","Functions","Bounds","Encode","makeGradientFunctions","coords","shading","ShadingType","Coords","Extend","cacheColorGradient","AIS","FormType","BBox","CS","Resources","ExtGState","Shading","s0","cacheOpacityGradient","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","_out","isIdentityMatrix","mmul","sx","sy","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","showText","requestedWidth","showTextNL","_toPage","ur","Border","setStrokeColor","setFillOpacity","setStrokeOpacity","setFillColor","oname","sname","setDashPattern","dashPhase","setLineWidth","setMitterLimit","mitterLimit","bezier","bezier1","bezier2","ellipse","_X","_Y","circle","nop","clipStroke","closeStroke","fillStroke","FONT_MAPPINGS","fontAlias","d1","e1","f1","d2","thing","nodeInfo","microsoft","TextRect","_pdfRect","setCSS","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","closest","cloneNodes","kendo","$el","$clone","dive","canvases","orig","drawDOM","defineFont","getFontFaces","doOne","_clipbox","_stackingContext","avoidLinks","_avoidLinks","renderElement","cacheImages","forceBreak","forcePageBreak","hasPaperSize","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","copy","_destructive","tfoot","ol","beforePageBreak","doPageBreak","splitElement","tableLayout","keepTogether","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","makePage","pageNum","whenImagesAreActuallyLoaded","firstInParent","colgroup","gridHead","repeatHeaders","extractContents","preventBulletOnListItem","pageClassName","available","selectNodeContents","nextnode","findEOP","handlePageBreaks","canceled","drawText","pushNodeInfo","renderText","_renderElement","popNodeInfo","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","skip_ws","read_stop","to1","to2","parseAngle","read_linear_gradient","read_url","splitProperty","in_paren","in_string","looking_at","getFontHeight","doStylesheet","styleSheet","family","findFonts","addRule","addRules","incCounter","resetCounter","doCounters","updateCounters","counterReset","counterIncrement","bg","alphaNumeral","decoration","createsStackingContext","updateClipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","innerBox","wr","wb","wl","radiansToDegrees","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bb","pr","pb","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","place","psel","saveTextOverflow","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","boxes","innerbox","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","elementIndex","drawBullet","clipit","isFormField","widget","widgetInstance","exportDOMVisual","maybeRenderWidget","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","ri","drawOneBackground","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","getContentBox","zIndexSort","sa","sb","za","zb","pa","renderCheckbox","selectedOptions","getSelectedOption","floats","positioned","floating","isJustified","estimateLineLength","prevLineBottom","lineThrough","overline","hasDecoration","doChunk","selectNode","ypos","actuallyGetRangeBoundingRect","chrome","rectangles","origStart","findEOL","eol","cc","getTransform","_dom_zIndex","groupInStackingContext","parsedColor","getHSV","getRGBA","getColorFromHSV","hsva","hue","saturation","getColorFromHue","HexInput","onHexChange","originalHex","ColorInput","onRgbaRChange","dispatchRgbaChange","onRgbaGChange","onRgbaBChange","onRgbaAChange","hexMessage","rMessage","gMessage","bMessage","aMessage","NumericTextBox","rgba","onRgbaChange","ColorGradient","isUncontrolled","componentGuid","cacheHex","dispatchChangeEvent","getColorFromRGBA","cacheRgba","onAlphaSliderChange","handleHsvaChange","onHueSliderChange","gradientWrapper","changePosition","onGradientWrapperClick","gradientRectMetrics","getGradientRectMetrics","getStateFromValue","isFirstRender","setAlphaSliderBackground","renderRectangleDragHandle","top_1","cacheHsva","cachedColor","getCachedHsva","getCachedRgba","getCachedHex","alphaSlider","sliderTrack","touchAction","ColorPaletteService","colorRows","setColorMatrix","palette","getCellCoordsFor","_loop_1","_loop_2","this_1","state_2","state_1","getColorAt","cellCoords","getNextCell","horizontalStep","verticalStep","clampIndex","PALETTEPRESETS","basic","office","apex","austin","clarity","slipstream","metro","flow","hardcover","trek","verve","monochrome","ColorPalette","handleCellNavigation","onColorClick","selectedColor","focusedColor","paletteService","paletteInfo","getPaletteInfo","svc","selectedCellCoords","focusedCellCoords","createCellId","renderRows","focusedColorCooridanates","newCoords","rgbaValue","preset","renderColumns","rowIsSelected","selectedColumn","rowIsFocused","focusedColumn","tileSize","Picker","horizontalAlign","popupAnchor","DEFAULT_PALETTE_SETTINGS","ColorPicker","gradientSettings","paletteSettings","focusableElementRef","gradientRef","paletteRef","blurTimeoutRef","setFocused","setStateValue","stateOpen","setStateOpen","isValueControlled","isOpenControlled","setOpen","nextOpen","isBlur","onKeyDownHandler","onOpenHandler","onClickHandler","onFocusHandler","onBlurTimeout","onBlurHandler","isPalette","onPaletteChangeHandler","ResultType","handleAutoFill","animationName","parent_1","badInput","patternMismatch","stepMismatch","tooLong","typeMismatch","visited","touched","textbox","onAnimationStart","Result","Undefined","fold","Stream","inputCursor","controlCursor","char","eat_input","eat_control","eat","Parser","isLiteral","Literal","creator","rawMask","prompt","promptPlaceholder","rawLiteral","includeLiterals","sequence","greedy","MaskingService","maskTokens","unmaskTokens","rawTokens","validationTokens","tokenize","validationValue","maskedValue","unmasked","rawValue","maskRaw","masked","maskInput","splitPoint","maskRemoved","maskInserted","maskInRange","pasted","beforeChange","unchanged","changed","adjustPosition","caretChar","_token","maskTokenCreator","unmaskTokenCreator","rawTokenCreator","validationTokenCreator","defaultRules","returnFalse","sameRules","rules1","rules2","same","MaskedTextBox","_service","_isPasted","pasteHandler","rightPart","blurHandler","maskValidation","prevSelection","nextSelection","updateService","DIGITS_REGEX","getStateOrPropsValue","formatValue","fractionLength","maxFractionLength","toFixedPrecision","maxPrecision","limitPrecision","increasedValue","eventValue","currentLooseValue","getLastNumberIndex","decreasedValue","rangeSelection","nextLooseValue","formatInfo","maxPosition","formatSuffixIndex","currSuffix","getMaxCursorPosition","minPosition","formatPrefixIndex","currPrefix","getMinCursorPosition","setInvalid","prevLooseValue","valueIsCorrected","getInitialPosition","decimalIdex","reverseString","inputRegex","getPrefix","getSuffix","reversedString","getFirstNumberIndex","getDecimalCount","currentDecimalPlace","changeBasedSelection","selectionPosition","isDelete","sanitizeRegex","isCurrentLeadingZero","isNextLeadingZero","numberCounter","newSelection","sanitizeNumber","restrictedSymbols","positiveResult","negativeResult","zeroResult","oneResult","getFormatSymbols","currentLooseValueAsString","prevLooseValueAsString","sanitizeGroupRegex","allSymbolsRegex","sanitizedString","numberStart","numberEnd","sanitizedFormattedString","formattedMax","maxDecimalIndex","maxDecimalCount","formattedMin","minDecimalIndex","minDecimalCount","positivePrefix","negativePrefix","zeroPrefix","onePrefix","positiveInfo","negativeInfo","zeroInfo","oneInfo","getFormatPrefixSufix","isFormatContainPrefixSuffix","nestedInfo","isPaste","isMinusSymbolAdded","currentNumberStart","oldNumberStart","valueCandidate","currentLastNumberIndex","isDecimalDuplicated","prefixIndex","suffixIndex","prefixFound","suffixFound","prefixGap","suffixGap","currentDecimalCount","endsOnDecimal","valueUntillDecimal","looseDecimalPlace","calculatedId","elementWrapperRef","valueDuringChangeRef","setForceUpdate","stateRef","decimalSelect","valueIsOutOfRange","isPasteRef","prevLooseValueRef","stateValueRef","looseValue","validityGetter","valueGetter","nameGetter","requiredGetter","validityStylesGetter","propsGetter","getImperativeHandle","getCurrentState","rangedValue","wrapper_1","_x","stateCandidate","rangeOnEnter","onPasteHandler","onIncrease","onDecrease","onWheelHandler","numerictextbox","Slider","decrementTitle","decrement","incrementTitle","increment","isLabel","dragStart","dragOver","percentage","lS","percentValue","trackStyles","sliderItemsStyle","flexDirection","_sliderTrack","RANGE_ACTION","useRange","handleDispatchAction","rangeReducer","RangeSlider","sliderRef","sliderSelectionRef","startHandle","endHandle","currentDrag","setCurrentDrag","dispatchStateValue","sliderTrackRef","sliderTrackWrapRef","percentStart","percentEnd","calcNewDistance","calc","calcKey","handleStartKeyDown","handleEndKeyDown","handleTrackPress","useDraggable","startTabIndex","endTabIndex","defaultValidationMessage","wrapperWidth","dummyInput","handleWrapperFocus","handleWrapperBlur","offLabel","onLabel","switchClassName","Checkbox","labelPlacement","others","stateChecked","setStateChecked","valueIsBoolean","isCheckedControlled","currentChecked","useValueAsChecked","checkedProp","valueProp","indeterminateProp","currentVal","checkboxClasses","checkboxInput","checkboxLabel","RadioButton","radioButtonLabel","radio","RadioGroup","isControlled","checkedRadioValue","radioGroupName","radioGroupClasses","radioOptions","isCurrentlyChecked","noOptionChecked","radioButtonProps","NumericFilterCell","TextFilterCell","nextColumn","getIndex","elementFromPoint","columnResize","resizable","setIsRtl","headerRow","filterRow","HeaderCell","clickProps","defaultRendering","allowUnsort","ColumnResizer","ColumnDraggable","pressHandler","dragHandler","releaseHandler","sortSeqMap","true","false","ariaSortMap","HeaderRow","cellClick","sortChange","sortable","oldDescriptor","newDescriptor","rowIndexes","columnIndex","sortDir","headerCellProps","selectionChange","selectionValue","headerSelectionValue","cellRender","sortIcon","kFirst","cellClass","headerClassName","locked","borderRightWidth","rightBorder","ColumnMenu","columnMenu","rowSpan","onSortChange","columnMenuFilter","columnMenuFilterChange","headerCell","columnsMap","ColumnResize","triggerResize","dragCue","stopImmediatePropagation","tdElement","oldWidth","setWidths","coef","indexInOriginal","toAdjust","colToAdjust","targetWidth","minResizableWidth","updateColElements","affectedColumns","colIndex","currentColumnFloatWidth","currentWidth","setColWidth","colGroupMain","colGroupHeader","colGroupFooter","CommonDragLogic","columnReorder","groupReorder","columnToGroup","reorderable","groupable","startColumn","startGroup","currentColumn","currentGroup","dropElementClue","dragElementClue","groupPanelDivElement","refGroupPanelDiv","refDropElementClue","refDragElementClue","getColumnIndex","getGroupIndex","invalidIndex","targetElement","updateDragElementClue","updateDropElementClue","prevColumnIndex","nextColumnIndex","prevGroupIndex","nextGroupIndex","parentIndex","DragClue","DropClue","TextFilter","nextFilter","NumericFilter","DateFilter","EnumFilter","locService","locData","textOperators","BooleanFilter","numericOperators","dateOperators","booleanOperators","stringOperator","Operators","unaryOperator","Expression","onFieldChange","nextFieldName","nextField","prevFilter","triggerOnFilterChange","onOperatorChange","prevFilterNoValue","changeEvent","onFilterRemove","removeEvent","isBlank","isNotNullOrEmptyString","isNullOrEmptyString","isNumeric","isCompositeFilterDescriptor","ifElse","toUTC","isDateValue","normalizeOperator","equalto","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","normalizeFilters","normalizeDescriptor","what","indexAccessor","pairwise","accessor","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","aggregates","formatSort","formatGroup","formatAggregates","aggregate","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","translateAggregate","translateAggregates","translateGroup","hasSubgroups","Aggregates","Member","HasSubgroups","Items","Key","groupCombinator","groupValue","valueToString","__position","aggregatesCombinator","descriptors","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","average","NEGATIVE_INFINITY","POSITIVE_INFINITY","aggregatesFuncs","isTransformerResult","__value","length_1","aggregateBy","transformers","expandAggregates","operatorsMap","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","eq","gte","isnotnull","lte","neq","startswith","transformFilter","itemProp","typedGetter","convertValue","transformCompositeFilter","combiner","compileFilter","filterBy","normalizeGroups","originalData","aggregateResult","filteredData","onGroupRemove","onAddExpression","firstField","newExpression","onAddGroup","defaultGroupFilter","onLogicAnd","changeLogic","onLogicOr","replaceFilter","ColumnMenuOperators","GridColumn","getNestedValue","filterCell","footerCell","GridSelectionCell","handleOnChange","rowType","GridHierarchyCell","expanded_1","GridEditCell","editCellClasses","BrowserSupportService","scrollbar","divStyle","headerWrap","syncScroll","_event","scrollableDataElement","scrollbarWidth","setScrollLeft","setWidth","staticHeaders","GridHeaderCell","blurTimeout","closeMenu","anchorClick","ChildComponent","_anchor","onCloseMenu","dataStartColumn","ariaAttrs","filterOperators","declarationIndex","filterClearButton","filterTitle","pagerMessagesMap","pagerMessageKey","_match","filterLogicList","IsUnaryFilter","booleanFilterValues","defaultHideSecondFilter","boolean","cellInputChange","defaultOperator","getDefaultOperator","filterType","getFilterType","cellBoolDropdownChange","cellOperatorChange","GridFilterCell","renderOperatorEditor","boolDropdownChange","filterComponent","booleanValues","FilterRow","headerCellClassName","setFilter","oldFilters","activeFilterValueFor","serviceIndex","filterCells","filterCellProps","GroupingIndicator","groupRemove","GroupPanel","newGroups","groupChange","onGroupSortChange","groupDesc","resolveTitle","refCallback","footerWrap","topCacheCount","attendedSkip","propsSkip","scrollableVirtual","realSkip","heightContainer","tableTranslate","allRows","tableBody","accumulate","syncTimeout","rowHeights","targetFloorScrollPosition","rowsCount","floatRowIndex","rowpercentage","microAdjust","rowIndexOffset","fixateInitialWidths","remainingCount","perCol","GridCell","dataAsString","GridGroupCell","columnsCount","definedField","GridRow","isAltRow","selectedField","isInEdit","onDoubleClick","GridHeaderSelectionCell","GridNoRecords","FooterRow","renderCell","tdProps","hasParentFooterCell","Grid","_columns","_columnsMap","_header","_footer","forceUpdateTimeout","columnVirtualization","rowClick","onRowClick","getArguments","rowDblClick","onRowDoubleClick","itemChange","onItemChange","expandField","expandChange","onExpandChange","onHeaderSelectionChange","raiseDataEvent","onGroupChange","dragLogic","shuffledColumns","sanitize","propsData","groupingFooter","resolvedGroupsCount","flatData","dataIndex","groupDefined","maxLevel","initColumns","noRecords","columnsWithColGroup","groupingPanel","clues","headerCellRender","filterCellRender","tableWidth","tableViewPortWidth","colSpans","hiddenColumns","widths","widthOfHiddenColumns","considerNext","totalWidth","hiddenSeqLength","updateIndex","hiddenCols","lastVisible","anyHidden","allHidden","tableColumnsVirtualization","isColHidden","hiddenRows","absoluteIndex","absoluteDataIndex","isAlt","editField","inEdit","dataRow","rowRender","detail","pager","pageable","colGroups","resetTableWidth","onSelectionChange","moreData","dataStateChange","onDataStateChange","getDataState","dataState","eventColumnProps","onColumnReorder","groupIndex","colElements","onColumnResize","columnElements","groupCount","oldColumns","columnProps","oldColumn","ret_1","flat_1","pIndex","propData","itemForColumnsGen","autoGenerateColumns","defaultServiceProps","columnIndexOffset","needKFirst","stickyLeftWidth","stickyRightWidth","mapColumns","GridColumnMenuItem","GridColumnMenuItemGroup","sortedAsc","sortedIndex","sortedDesc","GridColumnMenuSort","onAscClick","onSort","onDescClick","selectedDir","currentSortIndex","GridColumnMenuItemContent","GridColumnMenuFilterCell","GridColumnMenuFilterUI","firstFilterProps","hideSecondFilter","secondFilterProps","logicData","logicValue","onLogicChange","rootFilterOrDefault","rootFilter","filterGroupByField","nf","GridColumnMenuFilter","filterGroup","onFilterExpand","firstFilterChange","secondFilterChange","logicChange","rootFilters","currentFilterGroup","updatedFilter","removeGroup","insertGroup","filterIndex","filterUI","currentHideSecondFilter","currentOperators","firstFilterCellProps","secondFilterCellProps","filterLogic","logicProps","FilterUI","filterUIProps","isFilterValid","expandState","onReset","GridColumnMenuCheckboxFilter","parseData","isUnique","getFilterIndex","handleSearchChange","filterExpression","uniqueData","currentFilter","compositeFilterIndex","handleCheckBoxChange","newFilter","fieldFilters","isAllSelected","isAllChecked","filters_1","dataFromProps","firstArray","secondArray","filterValues","filterItem","searchBox","uniqueFilterValues","GridDetailRow","GridToolbar","EnumList","optionsString","checkValid","returnOptions","refArray","typeReference","SearchList","parentValue","cacheMax","displayResults","searchItems","selectItem","RenderForm","itemName","arrayBuffer","optionArray","stateArray","newUrl","changeSelectValues","is_valid","submit_button_disabled","onUpdateForm","readAsDataURL","imgObject","naturalWidth","naturalHeight","newFormValues","displayValues","returnDisplayOption","formHeight","handleFormAction","checkIsValid","draftToMarkdown","formatted_date","returnDisplayOptions","changeMultiselectValues","changeMultiselect","FormModal","formTitle","isOpen","onRequestClose","DeleteModal","deleteItems","SearchModal","between","onAdvancedSearch","changeSearchOption","changeSearchValue","matchesImpl","defaultKey","_toPropertyKey","prim","_toPrimitive","useUncontrolledProp","wasPropRef","isProp","wasProp","useCallbackRef","getBasePlacement","getLayoutRect","offsetLeft","isShadow","getRootNode","host","isSameNode","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","getOffsetParent","perspective","willChange","getContainingBlock","getMainAxisFromPlacement","within","mergePaddingObject","paddingObject","expandToHashMap","hashMap","basePlacements","variationPlacements","modifierPhases","phase","_state$modifiersData$","arrowElement","arrow","popperOffsets","modifiersData","basePlacement","arrowRect","minProp","maxProp","endDiff","reference","popper","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","effect","_options$element","_options$padding","requires","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","dpr","roundOffsets","hasX","hasY","sideX","sideY","_Object$assign","commonStyles","_options$gpuAccelerat","_options$adaptive","_options$scroll","_options$resize","scrollParents","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","isScrollParent","_getComputedStyle","listScrollParents","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","altContext","referenceElement","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_preventedOffset","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","modifiers","dep","depModifier","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","orderModifiers","merged","mergeByName","_ref3$options","cleanupFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","eventListeners","initialPopperStyles","initialArrowStyles","popperElement","_ref$enabled","_ref$placement","_ref$strategy","_ref$eventsEnabled","eventsEnabled","userModifiers","popperOptions","popperInstanceRef","scheduleUpdate","_useSafeState","outOfBoundaries","arrowStyles","updateModifier","_data$state$modifiers","_data$state$styles","_data$state$styles2","eventsModifier","componentOrElement","safeFindDOMNode","getRefTarget","onRootClose","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","handleMouseCapture","isLeftClickEvent","handleMouse","handleKeyUp","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","useDropdownMenu","_modifiers$arrow","_useCallbackRef","attachArrowRef","hasShownRef","rootCloseEvent","_options$popperConfig","popperConfig","_options$usePopper","usePopper","shouldUsePopper","alignEnd","handleClose","drop","setMenu","toggleElement","toModifierMap","menuProps","childArgs","hasShown","arrowProps","useDropdownToggle","_ref$toggle","setToggle","DropdownToggle","_useDropdownToggle","_useDropdownToggle$","focusFirstItemOnShow","itemSelector","onToggle","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","_useUncontrolledProp","menuRef","lastShow","lastSourceEvent","focusInDropdown","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","getNextFocusedChild","Toggle","SelectableContext","makeEventKey","DropdownItem","propActive","onSelectCtx","activeKey","toFnRef","refA","refB","mergeRefs","useWrappedRefWithWarning","usePopperMarginModifiers","overlayRef","margins","overlay","_margins$current","alignRight","showProps","renderOnMount","_ref$popperConfig","isNavbar","NavbarContext","_usePopperMarginModif","popperRef","marginModifiers","_useDropdownMenu","childBsPrefix","toggleProps","uncontrolledProps","_useUncontrolled","_extends2","propsValue","useUncontrolled","_useUncontrolled$as","handleToggle","handleSelect","dropdownProps","Divider","TopContextMenu","commandName","commandArray","displayForm","exportComponent","TabStripNavigationItem","itemClasses","TabStripNavigation","tabs","tabsCount","childElements","tabProps","navClasses","TabStripContent","contentId","selectedTab","contentClasses","contentClassName","keepTabsMounted","renderChild","contentProps","TabStrip","keyBinding","prevNavigatableTab","nextNavigatableTab","invertKeys","tabContentStyle","firstNavigatableTab","lastNavigatableTab","childrenCount","tabPosition","componentClasses","inverted","TabStripTab","PanelBarItem","uniquePrivateKey","panelBarItemAriaAttributes","panelBarItemClassName","panelBarHeaderClassName","panelBarItemArrowClassName","parentExpanded","parentPrivateKey","nestedChildren","privateKey","parentUniquePrivateKey","wrapperFocused","expandMode","mapItemsToComponents","NavigationAction","SelectionService","onSelectCallback","onFocusCallback","flatChildren","flattenChildren","flatVisibleChildren","flattenVisibleChildren","selectedChild","newExpanded","currentFocus","focusedChild","ixd","setExpandMode","Next","Previous","PanelBar","_selectionService","activeDescendant","_navigationService","prop_1","isIdZeroLevel","rootParentItem","getRootParentId","isIdEmptyOrZeroLevel","firstSeparatorIndex","getIdWithoutRootParentId","getFirstChildId","createId","childId","getDirectParentId","lastSeparatorIndex","isIdFirstLevel","getSeparatorOccurances","getShortId","getDirectSiblingIdForLevelZero","shortItemId","siblingsCount","MenuItem","cssClass","cssStyle","linkRender","contentRender","prepareInputItemsForInternalWork","models","menuChildren","convertInputModelsToInternalOnesHelper","inputItems","getMenuItemChildComponents","inputModels","convertInputComponentsToInputModelsHelper","copyInputItemWithoutChildren","inputModel","internalModel","isLastFromSiblings","copyOrCreateModelChildren","contentParentItemId","NO_WHITESPACE_REGEX","getNewItemIdUponKeyboardNavigation","sourceItems","sourceItemId","isMenuVertical","sourceItem","getItemById","getIdUponRightKeyForVerticalMenu","getIdUponLeftKeyForVerticalMenu","getIdUponRightKeyForHorizontalMenu","getIdUponLeftKeyForHorizontalMenu","getPrevSiblingId","getLastChildIdForEnabledItemOrGetSameId","getNextSiblingId","getFirstChildIdForEnabledItemOrGetSameId","getSiblings","searchChar","currentItemIndex","matchedSibling","getIdUponSearchByChar","getFirstOrLastChildIdForEnabledItemOrGetSameId","getSiblingId","getFirstChild","itemChildren","getLastChildId","directParentId","MenuItemLink","getMenuItemClassName","POPUP_ALIGN","POPUP_ALIGN_RTL","VERTICAL_COLLISION","HORIZONTAL_COLLISION","POPUP_SETTINGS_RTL","downward","leftward","POPUP_SETTINGS","rightward","getChildrenPosition","convertBoolDirectionToString","getDOMElementId","menuGuid","avatarShape","avatarType","cardOrientation","cardType","cardActionsLayout","MenuItemArrow","getArrowClassName","childrenPosition","verticalMenu","MenuItemInternal","focusedItemId","currentItemId","itemElement","tabbableItemId","Opened","renderMenuItemLink","renderPopupIfOpened","onOriginalItemNeeded","textOrItemRender","renderMenuIconIfApplicable","renderArrowIfApplicable","getPopupClassName","parentItemId","lastItemIdToBeOpened","MenuItemInternalsList","DirectionHolder","getIsDirectionRightToLeft","setIsDirectionRightToLeft","previousIsDirectionRightToLeft","hasDirectionChanged","MouseOverHandler","openOnClick","resetMenu","openItem","isMouseOverEnabled","handleItemSelectedViaKeyboard","handleItemMouseDown","handleItemFocus","clickedItemIsWithDefaultClose","initialItemsIds","hoveredItemId","directionHolder","clearItemHoverAndLeaveRequestsIfApplicable","currentItem","newItemId","setFocusedItemId","mouseOverHandler","dispatchSelectEventIfWired","onItemMouseOver","IsMouseOverEnabled","itemHoverRequest","setHoveredItemId","hoverOpenDelay","getHoverOpenDelay","onItemMouseLeave","isItemWithDefaultClose","itemLeaveRequest","hoverCloseDelay","getHoverCloseDelay","onItemMouseDown","onItemFocus","onItemBlur","getInputItem","prepareItems","checkIsDirectionRightToLeft","getMenuWrapperClassName","menuWrapperEl","getMenuClassName","OpenOnClick","customCloseItemIds","SplitterPane","containsSplitter","collapsible","keepMounted","fixedSize","flexBasis","paneClasses","SplitterBar","isDraggable","onPrevToggle","onNextToggle","onKeyboardResize","previousArrowClass","isCollapsible","nextArrowClass","betweenResizablePanes","nearCollapsiblePane","nearCollapsedPane","barClasses","PANE_DEFAULTS","Splitter","validatePanes","panesOptions","pane","mapPaneOptions","panes","panesContent","dragIndex","isDragging","paneOptions","paneContent","mapSplitterPanes","splitterBar","paneKey","barKey","onBarDragResize","onBarToggle","onBarKeyboardResize","paneProps","getPaneProps","onLayoutChange","barElement","surroudingPanes","prevElement","nextElement","originalX","originalY","originalPrevSize","originalNextSize","resetDragState","containerSize","_container","isContainer","sizeType","defaultPanes","panesDuringOnChange","isControlledState","previousElementSibling","toPixels","splitterSize","prevSize","nextSize","prevOptions","nextOptions","prevDragState","initialSize","nextDragState","paneState","Card","HORIZONTAL","VERTICAL","CardHeader","CardTitle","CardBody","CardActions","START","CardImage","CardSubtitle","CardFooter","Avatar","INITIALS","SQUARE","DrawerContext","mini","miniWidth","DrawerItem","itemClassNames","drawerItemContent","targetItem","DEFAULT_ANIMATION","NO_ANIMATION","DrawerNavigation","onOverlayClick","customSettings","navWidth","navMiniWidth","navigationClassNames","expandPush","WebkitTransition","expandOverlay","collapsePush","collapseOverlay","collapseOverlayRtl","collapseOverlayMini","WebkitTransitionDuration","drawerAnimation","drawerItems","drawerItemProps","ItemComp","drawerNavigation","Drawer","itemTarget","drawerClassNames","DrawerContent","contentClassNames","StepperContext","linear","Step","animationDuration","numOfSteps","allowClick","isInLabel","optionalMessage","progressAnimation","itemStyles","stepIndicator","stepLabel","stepLink","calculatePercentage","onePercent","updateProgress","progressRef","progressWrapRef","progressPercentage","progressWrapPercentage","ChunkProgressBar","chunkCount","emptyStyle","emptyClassName","progressStyle","progressClassName","wrapperProps","chunkSizePercentage","progressRatio","calculateRatio","completedChunksCount","completedChunks","reverseCompletedChunks","isComplete","ProgressBar","labelVisible","progressStatusRef","progressStatusWrapRef","formattedLabel","numberParts","truncateNumber","labelProps","renderLabel","positionClasses","handleStart","handleUpdate","handleEnd","Stepper","focusedIdx","setFocusedIdx","syntethicEvent","currIndex","maxNavIndex","stepperClasses","stepperStyles","gridTemplateColumns","gridTemplateRows","listClasses","listStyles","progressbarStyles","stepProps","getLeftPosition","screen","availWidth","getTopPosition","getDomRect","toolTipSelectors","isTooltipElement","Tooltip","willOpen","handleMouseOut","isVisible","showToolTip","handleBodyMousemove","domRect","titleExpando","parentTitle","calloutClassName","openTimeout","tooltip_1","onMouseOut","showCallout","setCalloutOnPositionAuto","openDelay","ProductNameCell","tooltip","TooltipContentTemplate","DivLayout","windowStage","trElement","trProps","handleContextMenuOpen","dataItemIndex","handleShowDeleteModal","menuWrapperRef","viewName","handleShowSearchModal","onPopupOpen","handleOnSelect","reorderColumns","resizeColumns","headerSelectionChange","onPaginate","caption","Loading","handleCloseModal","handleUpdateForm","handleCloseDeleteModal","handleCloseSearchModal","DialogTitleBar","onCloseButtonClick","closeIcon","DialogActionsBar","generateTitleId","handleCloseDialog","contentStyle","getContent","getActionBar","WindowTitleBarComponent","onMinimizeButtonClick","onFullScreenButtonClick","onRestoreButtonClick","stage","minimizeButtonRender","minimizeButton","maximizeButtonRender","maximizeButton","restoreButtonRender","restoreButton","closeButtonRender","WindowTitleBar","ResizeHandlers","MiddleLayerOptimization","shouldUpdateOnDrag","windowCoordinatesState","differenceLeft","differenceTop","FULLSCREEN","onMove","dispatchMoveEvent","MINIMIZED","handleRestore","onStageChange","handleFullscreen","handleMinimize","handleCloseWindow","getInitialTop","getInitialLeft","leftBeforeAction","topBeforeAction","widthBeforeAction","heightBeforeAction","handleDoubleClick","handleResize","currentHeight","heightDifference","widthDifference","hight","handleBrowserWindowResize","initialTop","initialLeft","initialWidth","initialHeight","classNamesWindow","windowElement","doubleClickStageChange","initialwidth","UiGrid","parentID","conflict_tooltip","w2ui","toggleDialog","getComponent","_renderDialog","getRecords","componentID","all_data_visible","DivVerticalLayout","UiVerticalGrid","UiForm","ARC","BLACK","CENTER","CIRCLE","FORMAT_REGEX","MIN_VALUE","VALUE","WHITE","classArray","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","convertableToNumber","deepExtendOne","destination","propType","propInit","destProp","deepExtend","styleValue","SIZE_STYLES_REGEX","isSizeField","field$1","getSpacing","defaultSpacing","userImplementation","FORMAT_REPLACE_REGEX","FormatService","_intlService","prototypeAccessors","auto","formatString","localeAuto","chart","isPannable","pannable","lock","TemplateService","getTemplate","grep","hasClasses","HashMap","inArray","interpolateValue","callObserver","fnName","requiresHandlers","mousewheelDelta","wheelDelta","elementOffset","FontLoader","fetchFonts","fonts","preloadFonts","setDefaultOptions","sparseArrayLimits","autoMajorUnit","DEFAULT_PRECISION","relativeValue","theta","cosT","sinT","onCircle","rotatePoint","Box","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","dh","unpad","getHash","overlaps","r3","r4","toRect","hasSize","sizeFunc","numericComparer","Ring","innerRadius","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","vector","startVector","endVector","getBBox","angles","allAngles","startAngleIndex","endAngleIndex","Sector","ShapeBuilder","createRing","innerEnd","ChartElement","initUserOptions","currentChild","getRoot","getSender","getService","chartService","translateChildren","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","series","category","runningTotal","createGradientOverlay","gradientOptions","createGradient","BoxElement","shrinkToFit","hasSetSize","reflowPaddingBox","vAlign","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","visualOptions","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","maxGroupElementsSize","groupsCount","groupsStart","alignStart","groupElements","groupElementsCount","groupElementStart","elementBox","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","buildTitle","titleOptions","AxisLabel","culture","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","aliasFor","wrapperBox","lineStart","linePoints","createLine","defaultVisual","over","createAxisTick","tickOptions","tickX","tickY","tick","createAxisGridLine","gridLine","lineEnd","Axis","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","labelOptions","clearLabels","autoRotateLabels","createAxisLabel","clearTitle","lineBox","mirror","axisX","axisY","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","axes","slotX","slotY","getSlot","bandRect","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","labelOffset","tickIx","labelPos","labelBox","firstTickPosition","nextTickPosition","labelX","labelY","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","maxLabelOffset","lastLabel","offsetField","startPosition","maxStartOffset","maxEndOffset","startTick","endTick","rangeSize","valueRange","seriesMin","seriesMax","justified","prepareUserOptions","axisCrossingValue","TIME_PER_UNIT","absoluteDateDiff","addTicks","ticks","addDuration","daysToSubtract","startOfWeek","roundedDate","tzDiff","addHours","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","dateIndex","baseUnitStep","startDate","parseDates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","startValue","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","zoomRange","totalMin","totalMax","scaleRange","dataItems","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","mapCategories","DateLabelFormats","BASE_UNITS","categoryRange","_range","EmptyDateRange","displayIndices","displayRange","valuesCount","dateAt","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","totalUnits","initUnit","lastCategory","minDiff","categoryIx","TIME_PER_MONTH","defaultBaseUnit","_indices","minIdx","maxIdx","_values","upper","roundedStep","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","divisionOptions","dataRangeOptions","divisionRange","rounds","totalLimits","panRange","datesRange","indicesRange","fit","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","unitFormat","dateRange","limitCoordinate","MIN_VALUE_RANGE","NumericAxis","autoOptions","narrowRange","autoMin","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","valueOffset","endValue","isValidRange","newRange","ratio","remainder","DateValueAxis","axisOptions","timeUnits","baseUnitTime","actualUnits","unitsToAdd","axisCrossingValues","timeRange","limittedRange","LogarithmicAxis","logMaxRemainder","throwNegativeValuesError","initRange","logMin","logMax","startEdge","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","_lineOptions","minorOptions","_minorIntervalOptions","minorStep","acceptOptionsRange","acceptNewRange","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","PolarAxis","instanceOptions","angularDistance","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","removeDuplicates","initialControlPoint","lastControlPoint","tangent","firstControlPoint","secondControlPoint","controlPoints","tangent$1","cp0","controlPoints$1","controlPoints$2","tangent$2","invertAxis","lineFunction","calculateFunction","isLine","xField","yField","restrict","switchOrientation","monotonic","isMonotonicByField","oldXField","restrictControlPoint","cp","xValue","yValue","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","sumOrNull","avg","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","seriesTypes","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","low","high","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","isSample","squareDifferenceSum","START_SCALE","BAR","COLUMN","LINE","PIE","VERTICAL_LINE","EQUALLY_SPACED_SERIES","MOUSEWHEEL","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","evalOptions","dryRun","needsEval","seriesCount","CategoricalChart","categoryAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","errorBars","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","currentSeries","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","_bindPoint","seriesIx$2","outOfRangePoint","_bindCache","bindCache","formatPointValue","hover","createNote","LinePoint","tooltipTracking","markers","_rendered","createMarker","labelTemplate","labelText","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","shadow","highlightVisual","halfSize","tooltipAnchor","clipBox","overlapsBox","unclipElements","LineSegment","toGeometryPoints","segmentVisual","getNearestPoint","toGeometryPoint","lintPoint","stepAxis","stepDir","calculateStepPoints","previousPoint","stepPoint","StepLineSegment","SplineSegment","curve","renderSegments","_segments","sortedPoints","sortPoints","pointCount","seriesMissingValues","createSegment","_addSegment","missingValues","nearestPoint","allPoints","nearestPointDistance","superclass","ClipAnimation","_setEnd","setX","anyHasZIndex","transitions","_setChildrenAnimation","animationPoints","LineChart","AreaSegment","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","pointOffset","_outOfRangeMinPoint","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","BarLabel","textBox","alignToClipBox","parentBox","hasGradientOverlay","Bar","createLabel","rectVisual","createRect","getBorderColor","baseColor","_brightness","ClusterLayout","gap","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","childrenLength","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","areNumbers","CandlestickChart","splitValue","downColor","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","median","mean","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","whiskers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","area","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","BaseTooltip","pointColor","tooltipOptions","CrosshairTooltip","crosshair","formatService","initAxisName","showAt","stickyMode","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","Pane","ID","appendAxis","appendAxisAt","appendChart","removeAxis","i$1","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","appendIfNotNull","segmentVisible","pointVisibility","bindSegments","equalsIgnoreCase","filterSeriesByType","getDateField","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","findNext","pointHasValue","outPoint","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","_outOfRangeMaxPoint","PlotAreaBase","initSeries","legend","crosshairs","originalOptions","createPanes","createCrosshairs","panesLength","setTitle","currentPane","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItems","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","shrinkAxisHeight","shrinked","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isSingleAxis","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","axisPane","categoryField","aggregateSeries","filterSeries","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","unique","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","toChartAxisRanges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","_updateAxisRanges","startLocation","MousewheelZoom","updateRanges","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","Legend","createItems","userAlign","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","PlotAreaFactory","_registry","registry","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","_move","tap","_tap","_press","gesturestart","_gesturestart","gesturechange","_gesturechange","gestureend","_gestureend","_mwTimeout","_rangeEventArgs","moveTarget","oldRange","rightClick","_toModelCoordinates","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","xValues","yValues","PieSegment","brightnessValue","themeLabels","seriesDefaults","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","seriesColors","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","boxX","labelDistance","boxY","hAlignLabel","connectors","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","sector_center","uat","ub","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","xComparer","PolarAreaChart","_hasMissingValuesGap","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","FunnelChart","labelPadding","dynamicSlopeReflow","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","dynamicHeight","FunnelPlotArea","createFunnelChart","funnelChart","FIRST","MAX","errorLow","errorHigh","AXIS_NAMES","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","bindCategories","fontLoaded","_destroyed","_redraw","_attachEvents","_setElementClass","seriesCopies","resolveAxisAliases","applyDefaults","applySeriesColors","chartArea","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","showTooltip","_sharedTooltip","_tooltip","hideTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","currentOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","axisDefaults","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_selectEnd","_clickHandler","_mouseleaveHandler","_mouseover","_mouseout","_toDocumentCoordinates","obj$1","_shouldAttachMouseMove","_hoveredPoint","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","scaleDelta","_drawingChartElement","_startNavigation","_suppressHover","ranges$1","_endNavigation","totalDelta","chartEvent","_getChartElement","coordinates","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","activePoint","_activePoint","hoveredPoint","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","autoBind","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","srcDates","comparer","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","bar","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","bubble","candlestick","ohlc","boxPlot","verticalBullet","polarArea","polarLine","radarArea","radarLine","waterfall","DATA_FIELDS","fieldValue","originalValue","nullValue","ChartSharedTooltip","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","displayState","_autoWidth","_calculateWidth","currentChart","pointWidth","normalizeOptions","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","minPos","clearHideTimeout","_visible","tooltipStyle","_hideTimeout","_hideAnimation","hideDelay","ClonedObject","Navigator","chartObserver","clean","_redrawSelf","initSelection","ref$2","axisClone","selectStart","selectEnd","setRange","filterAxes","silent","redrawSlaves","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","_dragEnd","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","NAVIGATOR_AXIS","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","dirty","_seriesCount","copyNavigatorCategories","DEGREE","buildLabelElement","styleGeometry","styleBox","getRange","Gauge","contextService","surfaceElement","pointerValue","pointer","pointers","_setValueOptions","_draw","_visuals","allValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","_defaultSize","renderAxisTick","tickRenderOptions","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelAngle","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","rangePlaceholderColor","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","RangePointerAnimation","startColor","RangePointer","rangeColor","SANS","ArcGauge","centerLabelPosition","yLimit","SANS12","SANS16","rangeArea","verticalRangeArea","outliersField","meanField","funnel","horizontalWaterfall","rangeBar","verticalBoxPlot","baseTheme","validateChildren","childType","flag","getTouch","domEvent","shouldBindGroup","groupNames","eventGroups","DomEvents","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","xLocation","yLocation","pointer1","pointer2","srcEvent","initialDelta","eventGroup","nameIdx","name_1","enable","recognizer","DomEventsBuilder","HAMMER","Hammer","recognizers","Tap","Pan","Pinch","Press","BaseEvent","AxisLabelClickEvent","PreventableEvent","prevented","DragEvent","DragEndEvent","DragStartEvent","LegendItemHoverEvent","LegendItemClickEvent","LegendItemLeaveEvent","NavigatorFilterEvent","NoteClickEvent","NoteHoverEvent","PlotAreaClickEvent","PlotAreaHoverEvent","RenderEvent","SelectEvent","SelectEndEvent","SelectStartEvent","SeriesClickEvent","SeriesHoverEvent","ZoomEvent","ZoomEndEvent","EVENT_MAP","axisLabelClick","dragEnd","legendItemHover","legendItemClick","legendItemLeave","navigatorFilter","noteClick","noteHover","plotAreaClick","plotAreaHover","seriesClick","seriesHover","zoomEnd","zoomStart","ZoomStartEvent","DomEvent","toDomEvent","ThemeService","setStyle","setColors","mapColor","queryStyle","setFonts","defaultFont","titleFont","labelFont","setSeriesColors","seriesPos","varName","subscribe","optionsReducer","chartCollectionIdxKey","collectionConfigurationItem","chartKey","configurationItem","themeReducer","themeItem","observersReducer","inCollection","collectionName","collectionIdx","nextStore","dateCategoryAxisFormats","dateValueAxisFormats","TooltipPoint","xLow","xHigh","yLow","yHigh","SharedTooltipContent","colorMarker","colspan","nameColumn","ChartContext","COLLISION","TOOLTIP_CLASS","TooltipPopup","onChartMouseLeave","relatedTarget","childrenObserver","observersStore","popupShown","popupOffset","popupStyles","popupContent","wrapperClass","SeriesTooltip","popupContext","tooltipProps","tooltipContent","findRenderFunction","seriesRenderer","findRenderFunctionByIndex","popupContainerClassName","onShowTooltip","createSharedTooltipContext","createTooltipContext","onHideTooltip","optionsStore","popupContend","AXES","mapTooltips","tooltips","axesCrosshairTooltipOptions","tooltipIdx","CrosshairTooltipContainer","storeUnsubscriber","childrenMap","BaseChart","chartInstance","optionsUnsubscriber","themeStore","themeUnsubscriber","onRender","onLegendItemClick","seriesByIndex","triggerDomEvent","onChildMouseLeave","contextValue","loadTheme","instantiateCoreChart","spreadProps","currentIntlService","localeChanged","keyValue","chartStyles","getChartOptions","deriveOptionsFromParent","onRefresh","chartConstructor","eventObject","getTarget","DonutCenter","donutCenterStyles","_baseChart","donutCenterRender","baseChartProps","baseChart","sparklineOptions","NAVIGATOR_DEFAULTS","ConfigurationComponent","childStore","_chartKey","_chartCollectionIdxKey","_parentStore","configurationItemProps","CollectionConfigurationComponent","collectionItemProps","ChartCategoryAxisItem","ChartCategoryAxis","ChartLegend","ChartNavigator","ChartPanes","ChartSeriesItem","ChartSeries","ChartTooltip","ChartValueAxisItem","ChartValueAxis","ChartXAxisItem","ChartXAxis","ChartYAxisItem","ChartYAxis","ChartAxisDefaultsTitle","ChartAxisDefaultsLabels","ChartAxisDefaultsCrosshair","ChartAxisDefaultsCrosshairTooltip","ChartCategoryAxisCrosshair","ChartCategoryAxisCrosshairTooltip","ChartCategoryAxisTitle","ChartCategoryAxisLabels","ChartPaneTitle","ChartLegendItem","ChartLegendInactiveItems","ChartSeriesDefaultsLabels","ChartSeriesLabels","ChartValueAxisCrosshair","ChartValueAxisCrosshairTooltip","ChartValueAxisLabels","ChartValueAxisTitle","ChartXAxisCrosshair","ChartXAxisCrosshairTooltip","ChartXAxisLabels","ChartXAxisTitle","ChartYAxisCrosshair","ChartYAxisCrosshairTooltip","ChartYAxisLabels","ChartYAxisTitle","ChartNavigatorCategoryAxis","ChartNavigatorPane","ChartNavigatorSeriesItem","ChartNavigatorSeries","ChartNavigatorCategoryAxisCrosshair","ChartNavigatorCategoryAxisCrosshairTooltip","ChartNavigatorCategoryAxisTitle","ChartNavigatorCategoryAxisLabels","ChartNavigatorPaneTitle","ChartNavigatorSeriesLabels","userColor","colorField","UiDraw","getDraw","clickDrawItems","drawItem","clickItems","drawScene","createSurface","getDrawAction","Widget","Uicomponent","layoutItem","vunits","componentname","getComponentByPosition","Dashboard","bindActionCreators","compiledGenerator","Redirect","prevTo","nextTo","computeTo","PrivateRoute","isAuth","authenticated","Index","Routes","NewLogin","ResetPassword","EmptyPage","App","isEmptyView","data-layout","data-background","data-navbar","data-top-navigation","data-logo","data-left-sidebar","data-collapsed","ReactDOM"],"mappings":"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R,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KAC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sM,QAAS,aACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,mEACR,CACD/sM,KAAM,IACN+sM,QAAS,2CACR,CACD/sM,KAAM,IACN+sM,QAAS,6GACR,CACD/sM,KAAM,IACN+sM,QAAS,6GACR,CACD/sM,KAAM,IACN+sM,QAAS,iGACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,mNACR,CACD/sM,KAAM,IACN+sM,QAAS,uDACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,mEACR,CACD/sM,KAAM,IACN+sM,QAAS,qCACR,CACD/sM,KAAM,IACN+sM,QAAS,iGACR,CACD/sM,KAAM,IACN+sM,QAAS,2FACR,CACD/sM,KAAM,IACN+sM,QAAS,yNACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,KACN+sM,QAAS,yBACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,KACN+sM,QAAS,mBACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,6DACR,CACD/sM,KAAM,IACN+sM,QAAS,qFACR,CACD/sM,KAAM,IACN+sM,QAAS,2FACR,CACD/sM,KAAM,KACN+sM,QAAS,mBACR,CACD/sM,KAAM,IACN+sM,QAAS,iMACR,CACD/sM,KAAM,IACN+sM,QAAS,2CACR,CACD/sM,KAAM,IACN+sM,QAAS,iGACR,CACD/sM,KAAM,IACN+sM,QAAS,iGACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,+HACR,CACD/sM,KAAM,IACN+sM,QAAS,2CACR,CACD/sM,KAAM,IACN+sM,QAAS,2FACR,CACD/sM,KAAM,IACN+sM,QAAS,yHACR,CACD/sM,KAAM,KACN+sM,QAAS,aACR,CACD/sM,KAAM,IACN+sM,QAAS,uDACR,CACD/sM,KAAM,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R,EAAG,IACHo9N,GAAI,MACJC,IAAK,QACLC,KAAM,WACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPC,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACTzC,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAEXuC,YAAa,CACT1C,KAAM,kBACNC,KAAM,YACNC,OAAQ,WACRC,MAAO,UAEX1rN,KAAM,CACFje,OAAQ,CACJmsO,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ/oN,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJumN,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJyC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ/oN,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJumN,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJyC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZjgO,OAAQ,CACJnM,OAAQ,CACJmsO,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ/oN,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJgpN,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJ/oN,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJgpN,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZvuN,SAAU,CACN7d,OAAQ,CACJmsO,YAAa,CACT,KACA,KACA,KACA,MAEJ/o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","file":"app.bundle.js?id=6bf31ff50e8b8ee7efc4","sourcesContent":["//! moment.js\n//! version : 2.27.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged and will be removed in an upcoming major release. Please refer to ' +\n            'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.27.0';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n *  Copyright (c) 2014-2015, Facebook, Inc.\n *  All rights reserved.\n *\n *  This source code is licensed under the BSD-style license found in the\n *  LICENSE file in the root directory of this source tree. An additional grant\n *  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n  function createClass(ctor, superClass) {\n    if (superClass) {\n      ctor.prototype = Object.create(superClass.prototype);\n    }\n    ctor.prototype.constructor = ctor;\n  }\n\n  function Iterable(value) {\n      return isIterable(value) ? value : Seq(value);\n    }\n\n\n  createClass(KeyedIterable, Iterable);\n    function KeyedIterable(value) {\n      return isKeyed(value) ? value : KeyedSeq(value);\n    }\n\n\n  createClass(IndexedIterable, Iterable);\n    function IndexedIterable(value) {\n      return isIndexed(value) ? value : IndexedSeq(value);\n    }\n\n\n  createClass(SetIterable, Iterable);\n    function SetIterable(value) {\n      return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n    }\n\n\n\n  function isIterable(maybeIterable) {\n    return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n  }\n\n  function isKeyed(maybeKeyed) {\n    return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n  }\n\n  function isIndexed(maybeIndexed) {\n    return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n  }\n\n  function isAssociative(maybeAssociative) {\n    return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n  }\n\n  function isOrdered(maybeOrdered) {\n    return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n  }\n\n  Iterable.isIterable = isIterable;\n  Iterable.isKeyed = isKeyed;\n  Iterable.isIndexed = isIndexed;\n  Iterable.isAssociative = isAssociative;\n  Iterable.isOrdered = isOrdered;\n\n  Iterable.Keyed = KeyedIterable;\n  Iterable.Indexed = IndexedIterable;\n  Iterable.Set = SetIterable;\n\n\n  var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  // Used for setting prototype methods that IE8 chokes on.\n  var DELETE = 'delete';\n\n  // Constants describing the size of trie nodes.\n  var SHIFT = 5; // Resulted in best performance after ______?\n  var SIZE = 1 << SHIFT;\n  var MASK = SIZE - 1;\n\n  // A consistent shared value representing \"not set\" which equals nothing other\n  // than itself, and nothing that could be provided externally.\n  var NOT_SET = {};\n\n  // Boolean references, Rough equivalent of `bool &`.\n  var CHANGE_LENGTH = { value: false };\n  var DID_ALTER = { value: false };\n\n  function MakeRef(ref) {\n    ref.value = false;\n    return ref;\n  }\n\n  function SetRef(ref) {\n    ref && (ref.value = true);\n  }\n\n  // A function which returns a value representing an \"owner\" for transient writes\n  // to tries. The return value will only ever equal itself, and will not equal\n  // the return of any subsequent call of this function.\n  function OwnerID() {}\n\n  // http://jsperf.com/copy-array-inline\n  function arrCopy(arr, offset) {\n    offset = offset || 0;\n    var len = Math.max(0, arr.length - offset);\n    var newArr = new Array(len);\n    for (var ii = 0; ii < len; ii++) {\n      newArr[ii] = arr[ii + offset];\n    }\n    return newArr;\n  }\n\n  function ensureSize(iter) {\n    if (iter.size === undefined) {\n      iter.size = iter.__iterate(returnTrue);\n    }\n    return iter.size;\n  }\n\n  function wrapIndex(iter, index) {\n    // This implements \"is array index\" which the ECMAString spec defines as:\n    //\n    //     A String property name P is an array index if and only if\n    //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n    //     to 2^32−1.\n    //\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n    if (typeof index !== 'number') {\n      var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n      if ('' + uint32Index !== index || uint32Index === 4294967295) {\n        return NaN;\n      }\n      index = uint32Index;\n    }\n    return index < 0 ? ensureSize(iter) + index : index;\n  }\n\n  function returnTrue() {\n    return true;\n  }\n\n  function wholeSlice(begin, end, size) {\n    return (begin === 0 || (size !== undefined && begin <= -size)) &&\n      (end === undefined || (size !== undefined && end >= size));\n  }\n\n  function resolveBegin(begin, size) {\n    return resolveIndex(begin, size, 0);\n  }\n\n  function resolveEnd(end, size) {\n    return resolveIndex(end, size, size);\n  }\n\n  function resolveIndex(index, size, defaultIndex) {\n    return index === undefined ?\n      defaultIndex :\n      index < 0 ?\n        Math.max(0, size + index) :\n        size === undefined ?\n          index :\n          Math.min(size, index);\n  }\n\n  /* global Symbol */\n\n  var ITERATE_KEYS = 0;\n  var ITERATE_VALUES = 1;\n  var ITERATE_ENTRIES = 2;\n\n  var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n  var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n  function Iterator(next) {\n      this.next = next;\n    }\n\n    Iterator.prototype.toString = function() {\n      return '[Iterator]';\n    };\n\n\n  Iterator.KEYS = ITERATE_KEYS;\n  Iterator.VALUES = ITERATE_VALUES;\n  Iterator.ENTRIES = ITERATE_ENTRIES;\n\n  Iterator.prototype.inspect =\n  Iterator.prototype.toSource = function () { return this.toString(); }\n  Iterator.prototype[ITERATOR_SYMBOL] = function () {\n    return this;\n  };\n\n\n  function iteratorValue(type, k, v, iteratorResult) {\n    var value = type === 0 ? k : type === 1 ? v : [k, v];\n    iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n      value: value, done: false\n    });\n    return iteratorResult;\n  }\n\n  function iteratorDone() {\n    return { value: undefined, done: true };\n  }\n\n  function hasIterator(maybeIterable) {\n    return !!getIteratorFn(maybeIterable);\n  }\n\n  function isIterator(maybeIterator) {\n    return maybeIterator && typeof maybeIterator.next === 'function';\n  }\n\n  function getIterator(iterable) {\n    var iteratorFn = getIteratorFn(iterable);\n    return iteratorFn && iteratorFn.call(iterable);\n  }\n\n  function getIteratorFn(iterable) {\n    var iteratorFn = iterable && (\n      (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n      iterable[FAUX_ITERATOR_SYMBOL]\n    );\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  function isArrayLike(value) {\n    return value && typeof value.length === 'number';\n  }\n\n  createClass(Seq, Iterable);\n    function Seq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        isIterable(value) ? value.toSeq() : seqFromValue(value);\n    }\n\n    Seq.of = function(/*...values*/) {\n      return Seq(arguments);\n    };\n\n    Seq.prototype.toSeq = function() {\n      return this;\n    };\n\n    Seq.prototype.toString = function() {\n      return this.__toString('Seq {', '}');\n    };\n\n    Seq.prototype.cacheResult = function() {\n      if (!this._cache && this.__iterateUncached) {\n        this._cache = this.entrySeq().toArray();\n        this.size = this._cache.length;\n      }\n      return this;\n    };\n\n    // abstract __iterateUncached(fn, reverse)\n\n    Seq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, true);\n    };\n\n    // abstract __iteratorUncached(type, reverse)\n\n    Seq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, true);\n    };\n\n\n\n  createClass(KeyedSeq, Seq);\n    function KeyedSeq(value) {\n      return value === null || value === undefined ?\n        emptySequence().toKeyedSeq() :\n        isIterable(value) ?\n          (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n          keyedSeqFromValue(value);\n    }\n\n    KeyedSeq.prototype.toKeyedSeq = function() {\n      return this;\n    };\n\n\n\n  createClass(IndexedSeq, Seq);\n    function IndexedSeq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n    }\n\n    IndexedSeq.of = function(/*...values*/) {\n      return IndexedSeq(arguments);\n    };\n\n    IndexedSeq.prototype.toIndexedSeq = function() {\n      return this;\n    };\n\n    IndexedSeq.prototype.toString = function() {\n      return this.__toString('Seq [', ']');\n    };\n\n    IndexedSeq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, false);\n    };\n\n    IndexedSeq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, false);\n    };\n\n\n\n  createClass(SetSeq, Seq);\n    function SetSeq(value) {\n      return (\n        value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value\n      ).toSetSeq();\n    }\n\n    SetSeq.of = function(/*...values*/) {\n      return SetSeq(arguments);\n    };\n\n    SetSeq.prototype.toSetSeq = function() {\n      return this;\n    };\n\n\n\n  Seq.isSeq = isSeq;\n  Seq.Keyed = KeyedSeq;\n  Seq.Set = SetSeq;\n  Seq.Indexed = IndexedSeq;\n\n  var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n  Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n  createClass(ArraySeq, IndexedSeq);\n    function ArraySeq(array) {\n      this._array = array;\n      this.size = array.length;\n    }\n\n    ArraySeq.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n    };\n\n    ArraySeq.prototype.__iterate = function(fn, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ArraySeq.prototype.__iterator = function(type, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n      );\n    };\n\n\n\n  createClass(ObjectSeq, KeyedSeq);\n    function ObjectSeq(object) {\n      var keys = Object.keys(object);\n      this._object = object;\n      this._keys = keys;\n      this.size = keys.length;\n    }\n\n    ObjectSeq.prototype.get = function(key, notSetValue) {\n      if (notSetValue !== undefined && !this.has(key)) {\n        return notSetValue;\n      }\n      return this._object[key];\n    };\n\n    ObjectSeq.prototype.has = function(key) {\n      return this._object.hasOwnProperty(key);\n    };\n\n    ObjectSeq.prototype.__iterate = function(fn, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        if (fn(object[key], key, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ObjectSeq.prototype.__iterator = function(type, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, key, object[key]);\n      });\n    };\n\n  ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(IterableSeq, IndexedSeq);\n    function IterableSeq(iterable) {\n      this._iterable = iterable;\n      this.size = iterable.length || iterable.size;\n    }\n\n    IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      var iterations = 0;\n      if (isIterator(iterator)) {\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (fn(step.value, iterations++, this) === false) {\n            break;\n          }\n        }\n      }\n      return iterations;\n    };\n\n    IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      if (!isIterator(iterator)) {\n        return new Iterator(iteratorDone);\n      }\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step : iteratorValue(type, iterations++, step.value);\n      });\n    };\n\n\n\n  createClass(IteratorSeq, IndexedSeq);\n    function IteratorSeq(iterator) {\n      this._iterator = iterator;\n      this._iteratorCache = [];\n    }\n\n    IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      while (iterations < cache.length) {\n        if (fn(cache[iterations], iterations++, this) === false) {\n          return iterations;\n        }\n      }\n      var step;\n      while (!(step = iterator.next()).done) {\n        var val = step.value;\n        cache[iterations] = val;\n        if (fn(val, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n\n    IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      return new Iterator(function()  {\n        if (iterations >= cache.length) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          cache[iterations] = step.value;\n        }\n        return iteratorValue(type, iterations, cache[iterations++]);\n      });\n    };\n\n\n\n\n  // # pragma Helper functions\n\n  function isSeq(maybeSeq) {\n    return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n  }\n\n  var EMPTY_SEQ;\n\n  function emptySequence() {\n    return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n  }\n\n  function keyedSeqFromValue(value) {\n    var seq =\n      Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n      isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n      hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n      typeof value === 'object' ? new ObjectSeq(value) :\n      undefined;\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of [k, v] entries, '+\n        'or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function indexedSeqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value);\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function seqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value) ||\n      (typeof value === 'object' && new ObjectSeq(value));\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values, or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function maybeIndexedSeqFromValue(value) {\n    return (\n      isArrayLike(value) ? new ArraySeq(value) :\n      isIterator(value) ? new IteratorSeq(value) :\n      hasIterator(value) ? new IterableSeq(value) :\n      undefined\n    );\n  }\n\n  function seqIterate(seq, fn, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    }\n    return seq.__iterateUncached(fn, reverse);\n  }\n\n  function seqIterator(seq, type, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n      });\n    }\n    return seq.__iteratorUncached(type, reverse);\n  }\n\n  function fromJS(json, converter) {\n    return converter ?\n      fromJSWith(converter, json, '', {'': json}) :\n      fromJSDefault(json);\n  }\n\n  function fromJSWith(converter, json, key, parentJSON) {\n    if (Array.isArray(json)) {\n      return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    if (isPlainObj(json)) {\n      return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    return json;\n  }\n\n  function fromJSDefault(json) {\n    if (Array.isArray(json)) {\n      return IndexedSeq(json).map(fromJSDefault).toList();\n    }\n    if (isPlainObj(json)) {\n      return KeyedSeq(json).map(fromJSDefault).toMap();\n    }\n    return json;\n  }\n\n  function isPlainObj(value) {\n    return value && (value.constructor === Object || value.constructor === undefined);\n  }\n\n  /**\n   * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n   * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n   *\n   * NaN is considered the same as NaN, however -0 and 0 are considered the same\n   * value, which is different from the algorithm described by\n   * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n   *\n   * This is extended further to allow Objects to describe the values they\n   * represent, by way of `valueOf` or `equals` (and `hashCode`).\n   *\n   * Note: because of this extension, the key equality of Immutable.Map and the\n   * value equality of Immutable.Set will differ from ES6 Map and Set.\n   *\n   * ### Defining custom values\n   *\n   * The easiest way to describe the value an object represents is by implementing\n   * `valueOf`. For example, `Date` represents a value by returning a unix\n   * timestamp for `valueOf`:\n   *\n   *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n   *     var date2 = new Date(1234567890000);\n   *     date1.valueOf(); // 1234567890000\n   *     assert( date1 !== date2 );\n   *     assert( Immutable.is( date1, date2 ) );\n   *\n   * Note: overriding `valueOf` may have other implications if you use this object\n   * where JavaScript expects a primitive, such as implicit string coercion.\n   *\n   * For more complex types, especially collections, implementing `valueOf` may\n   * not be performant. An alternative is to implement `equals` and `hashCode`.\n   *\n   * `equals` takes another object, presumably of similar type, and returns true\n   * if the it is equal. Equality is symmetrical, so the same result should be\n   * returned if this and the argument are flipped.\n   *\n   *     assert( a.equals(b) === b.equals(a) );\n   *\n   * `hashCode` returns a 32bit integer number representing the object which will\n   * be used to determine how to store the value object in a Map or Set. You must\n   * provide both or neither methods, one must not exist without the other.\n   *\n   * Also, an important relationship between these methods must be upheld: if two\n   * values are equal, they *must* return the same hashCode. If the values are not\n   * equal, they might have the same hashCode; this is called a hash collision,\n   * and while undesirable for performance reasons, it is acceptable.\n   *\n   *     if (a.equals(b)) {\n   *       assert( a.hashCode() === b.hashCode() );\n   *     }\n   *\n   * All Immutable collections implement `equals` and `hashCode`.\n   *\n   */\n  function is(valueA, valueB) {\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n      return true;\n    }\n    if (!valueA || !valueB) {\n      return false;\n    }\n    if (typeof valueA.valueOf === 'function' &&\n        typeof valueB.valueOf === 'function') {\n      valueA = valueA.valueOf();\n      valueB = valueB.valueOf();\n      if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n        return true;\n      }\n      if (!valueA || !valueB) {\n        return false;\n      }\n    }\n    if (typeof valueA.equals === 'function' &&\n        typeof valueB.equals === 'function' &&\n        valueA.equals(valueB)) {\n      return true;\n    }\n    return false;\n  }\n\n  function deepEqual(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (\n      !isIterable(b) ||\n      a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n      a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n      isKeyed(a) !== isKeyed(b) ||\n      isIndexed(a) !== isIndexed(b) ||\n      isOrdered(a) !== isOrdered(b)\n    ) {\n      return false;\n    }\n\n    if (a.size === 0 && b.size === 0) {\n      return true;\n    }\n\n    var notAssociative = !isAssociative(a);\n\n    if (isOrdered(a)) {\n      var entries = a.entries();\n      return b.every(function(v, k)  {\n        var entry = entries.next().value;\n        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n      }) && entries.next().done;\n    }\n\n    var flipped = false;\n\n    if (a.size === undefined) {\n      if (b.size === undefined) {\n        if (typeof a.cacheResult === 'function') {\n          a.cacheResult();\n        }\n      } else {\n        flipped = true;\n        var _ = a;\n        a = b;\n        b = _;\n      }\n    }\n\n    var allEqual = true;\n    var bSize = b.__iterate(function(v, k)  {\n      if (notAssociative ? !a.has(v) :\n          flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n        allEqual = false;\n        return false;\n      }\n    });\n\n    return allEqual && a.size === bSize;\n  }\n\n  createClass(Repeat, IndexedSeq);\n\n    function Repeat(value, times) {\n      if (!(this instanceof Repeat)) {\n        return new Repeat(value, times);\n      }\n      this._value = value;\n      this.size = times === undefined ? Infinity : Math.max(0, times);\n      if (this.size === 0) {\n        if (EMPTY_REPEAT) {\n          return EMPTY_REPEAT;\n        }\n        EMPTY_REPEAT = this;\n      }\n    }\n\n    Repeat.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Repeat []';\n      }\n      return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n    };\n\n    Repeat.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._value : notSetValue;\n    };\n\n    Repeat.prototype.includes = function(searchValue) {\n      return is(this._value, searchValue);\n    };\n\n    Repeat.prototype.slice = function(begin, end) {\n      var size = this.size;\n      return wholeSlice(begin, end, size) ? this :\n        new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n    };\n\n    Repeat.prototype.reverse = function() {\n      return this;\n    };\n\n    Repeat.prototype.indexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return 0;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.lastIndexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return this.size;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.__iterate = function(fn, reverse) {\n      for (var ii = 0; ii < this.size; ii++) {\n        if (fn(this._value, ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n      );\n    };\n\n    Repeat.prototype.equals = function(other) {\n      return other instanceof Repeat ?\n        is(this._value, other._value) :\n        deepEqual(other);\n    };\n\n\n  var EMPTY_REPEAT;\n\n  function invariant(condition, error) {\n    if (!condition) throw new Error(error);\n  }\n\n  createClass(Range, IndexedSeq);\n\n    function Range(start, end, step) {\n      if (!(this instanceof Range)) {\n        return new Range(start, end, step);\n      }\n      invariant(step !== 0, 'Cannot step a Range by 0');\n      start = start || 0;\n      if (end === undefined) {\n        end = Infinity;\n      }\n      step = step === undefined ? 1 : Math.abs(step);\n      if (end < start) {\n        step = -step;\n      }\n      this._start = start;\n      this._end = end;\n      this._step = step;\n      this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n      if (this.size === 0) {\n        if (EMPTY_RANGE) {\n          return EMPTY_RANGE;\n        }\n        EMPTY_RANGE = this;\n      }\n    }\n\n    Range.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Range []';\n      }\n      return 'Range [ ' +\n        this._start + '...' + this._end +\n        (this._step > 1 ? ' by ' + this._step : '') +\n      ' ]';\n    };\n\n    Range.prototype.get = function(index, notSetValue) {\n      return this.has(index) ?\n        this._start + wrapIndex(this, index) * this._step :\n        notSetValue;\n    };\n\n    Range.prototype.includes = function(searchValue) {\n      var possibleIndex = (searchValue - this._start) / this._step;\n      return possibleIndex >= 0 &&\n        possibleIndex < this.size &&\n        possibleIndex === Math.floor(possibleIndex);\n    };\n\n    Range.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      begin = resolveBegin(begin, this.size);\n      end = resolveEnd(end, this.size);\n      if (end <= begin) {\n        return new Range(0, 0);\n      }\n      return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n    };\n\n    Range.prototype.indexOf = function(searchValue) {\n      var offsetValue = searchValue - this._start;\n      if (offsetValue % this._step === 0) {\n        var index = offsetValue / this._step;\n        if (index >= 0 && index < this.size) {\n          return index\n        }\n      }\n      return -1;\n    };\n\n    Range.prototype.lastIndexOf = function(searchValue) {\n      return this.indexOf(searchValue);\n    };\n\n    Range.prototype.__iterate = function(fn, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(value, ii, this) === false) {\n          return ii + 1;\n        }\n        value += reverse ? -step : step;\n      }\n      return ii;\n    };\n\n    Range.prototype.__iterator = function(type, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      var ii = 0;\n      return new Iterator(function()  {\n        var v = value;\n        value += reverse ? -step : step;\n        return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n      });\n    };\n\n    Range.prototype.equals = function(other) {\n      return other instanceof Range ?\n        this._start === other._start &&\n        this._end === other._end &&\n        this._step === other._step :\n        deepEqual(this, other);\n    };\n\n\n  var EMPTY_RANGE;\n\n  createClass(Collection, Iterable);\n    function Collection() {\n      throw TypeError('Abstract');\n    }\n\n\n  createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n  createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n  createClass(SetCollection, Collection);function SetCollection() {}\n\n\n  Collection.Keyed = KeyedCollection;\n  Collection.Indexed = IndexedCollection;\n  Collection.Set = SetCollection;\n\n  var imul =\n    typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n    Math.imul :\n    function imul(a, b) {\n      a = a | 0; // int\n      b = b | 0; // int\n      var c = a & 0xffff;\n      var d = b & 0xffff;\n      // Shift by 0 fixes the sign on the high part.\n      return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n    };\n\n  // v8 has an optimization for storing 31-bit signed numbers.\n  // Values which have either 00 or 11 as the high order bits qualify.\n  // This function drops the highest order bit in a signed number, maintaining\n  // the sign bit.\n  function smi(i32) {\n    return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n  }\n\n  function hash(o) {\n    if (o === false || o === null || o === undefined) {\n      return 0;\n    }\n    if (typeof o.valueOf === 'function') {\n      o = o.valueOf();\n      if (o === false || o === null || o === undefined) {\n        return 0;\n      }\n    }\n    if (o === true) {\n      return 1;\n    }\n    var type = typeof o;\n    if (type === 'number') {\n      var h = o | 0;\n      if (h !== o) {\n        h ^= o * 0xFFFFFFFF;\n      }\n      while (o > 0xFFFFFFFF) {\n        o /= 0xFFFFFFFF;\n        h ^= o;\n      }\n      return smi(h);\n    }\n    if (type === 'string') {\n      return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n    }\n    if (typeof o.hashCode === 'function') {\n      return o.hashCode();\n    }\n    if (type === 'object') {\n      return hashJSObj(o);\n    }\n    if (typeof o.toString === 'function') {\n      return hashString(o.toString());\n    }\n    throw new Error('Value type ' + type + ' cannot be hashed.');\n  }\n\n  function cachedHashString(string) {\n    var hash = stringHashCache[string];\n    if (hash === undefined) {\n      hash = hashString(string);\n      if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n        STRING_HASH_CACHE_SIZE = 0;\n        stringHashCache = {};\n      }\n      STRING_HASH_CACHE_SIZE++;\n      stringHashCache[string] = hash;\n    }\n    return hash;\n  }\n\n  // http://jsperf.com/hashing-strings\n  function hashString(string) {\n    // This is the hash from JVM\n    // The hash code for a string is computed as\n    // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n    // where s[i] is the ith character of the string and n is the length of\n    // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n    // (exclusive) by dropping high bits.\n    var hash = 0;\n    for (var ii = 0; ii < string.length; ii++) {\n      hash = 31 * hash + string.charCodeAt(ii) | 0;\n    }\n    return smi(hash);\n  }\n\n  function hashJSObj(obj) {\n    var hash;\n    if (usingWeakMap) {\n      hash = weakMap.get(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = obj[UID_HASH_KEY];\n    if (hash !== undefined) {\n      return hash;\n    }\n\n    if (!canDefineProperty) {\n      hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n      if (hash !== undefined) {\n        return hash;\n      }\n\n      hash = getIENodeHash(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = ++objHashUID;\n    if (objHashUID & 0x40000000) {\n      objHashUID = 0;\n    }\n\n    if (usingWeakMap) {\n      weakMap.set(obj, hash);\n    } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n      throw new Error('Non-extensible objects are not allowed as keys.');\n    } else if (canDefineProperty) {\n      Object.defineProperty(obj, UID_HASH_KEY, {\n        'enumerable': false,\n        'configurable': false,\n        'writable': false,\n        'value': hash\n      });\n    } else if (obj.propertyIsEnumerable !== undefined &&\n               obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n      // Since we can't define a non-enumerable property on the object\n      // we'll hijack one of the less-used non-enumerable properties to\n      // save our hash on it. Since this is a function it will not show up in\n      // `JSON.stringify` which is what we want.\n      obj.propertyIsEnumerable = function() {\n        return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n      };\n      obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n    } else if (obj.nodeType !== undefined) {\n      // At this point we couldn't get the IE `uniqueID` to use as a hash\n      // and we couldn't use a non-enumerable property to exploit the\n      // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n      // itself.\n      obj[UID_HASH_KEY] = hash;\n    } else {\n      throw new Error('Unable to set a non-enumerable property on object.');\n    }\n\n    return hash;\n  }\n\n  // Get references to ES5 object methods.\n  var isExtensible = Object.isExtensible;\n\n  // True if Object.defineProperty works as expected. IE8 fails this test.\n  var canDefineProperty = (function() {\n    try {\n      Object.defineProperty({}, '@', {});\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }());\n\n  // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n  // and avoid memory leaks from the IE cloneNode bug.\n  function getIENodeHash(node) {\n    if (node && node.nodeType > 0) {\n      switch (node.nodeType) {\n        case 1: // Element\n          return node.uniqueID;\n        case 9: // Document\n          return node.documentElement && node.documentElement.uniqueID;\n      }\n    }\n  }\n\n  // If possible, use a WeakMap.\n  var usingWeakMap = typeof WeakMap === 'function';\n  var weakMap;\n  if (usingWeakMap) {\n    weakMap = new WeakMap();\n  }\n\n  var objHashUID = 0;\n\n  var UID_HASH_KEY = '__immutablehash__';\n  if (typeof Symbol === 'function') {\n    UID_HASH_KEY = Symbol(UID_HASH_KEY);\n  }\n\n  var STRING_HASH_CACHE_MIN_STRLEN = 16;\n  var STRING_HASH_CACHE_MAX_SIZE = 255;\n  var STRING_HASH_CACHE_SIZE = 0;\n  var stringHashCache = {};\n\n  function assertNotInfinite(size) {\n    invariant(\n      size !== Infinity,\n      'Cannot perform this action with an infinite size.'\n    );\n  }\n\n  createClass(Map, KeyedCollection);\n\n    // @pragma Construction\n\n    function Map(value) {\n      return value === null || value === undefined ? emptyMap() :\n        isMap(value) && !isOrdered(value) ? value :\n        emptyMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    Map.prototype.toString = function() {\n      return this.__toString('Map {', '}');\n    };\n\n    // @pragma Access\n\n    Map.prototype.get = function(k, notSetValue) {\n      return this._root ?\n        this._root.get(0, undefined, k, notSetValue) :\n        notSetValue;\n    };\n\n    // @pragma Modification\n\n    Map.prototype.set = function(k, v) {\n      return updateMap(this, k, v);\n    };\n\n    Map.prototype.setIn = function(keyPath, v) {\n      return this.updateIn(keyPath, NOT_SET, function()  {return v});\n    };\n\n    Map.prototype.remove = function(k) {\n      return updateMap(this, k, NOT_SET);\n    };\n\n    Map.prototype.deleteIn = function(keyPath) {\n      return this.updateIn(keyPath, function()  {return NOT_SET});\n    };\n\n    Map.prototype.update = function(k, notSetValue, updater) {\n      return arguments.length === 1 ?\n        k(this) :\n        this.updateIn([k], notSetValue, updater);\n    };\n\n    Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n      if (!updater) {\n        updater = notSetValue;\n        notSetValue = undefined;\n      }\n      var updatedValue = updateInDeepMap(\n        this,\n        forceIterator(keyPath),\n        notSetValue,\n        updater\n      );\n      return updatedValue === NOT_SET ? undefined : updatedValue;\n    };\n\n    Map.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._root = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyMap();\n    };\n\n    // @pragma Composition\n\n    Map.prototype.merge = function(/*...iters*/) {\n      return mergeIntoMapWith(this, undefined, arguments);\n    };\n\n    Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, merger, iters);\n    };\n\n    Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.merge === 'function' ?\n          m.merge.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoMapWith(this, deepMerger, arguments);\n    };\n\n    Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n    };\n\n    Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.mergeDeep === 'function' ?\n          m.mergeDeep.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator));\n    };\n\n    Map.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator, mapper));\n    };\n\n    // @pragma Mutability\n\n    Map.prototype.withMutations = function(fn) {\n      var mutable = this.asMutable();\n      fn(mutable);\n      return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n    };\n\n    Map.prototype.asMutable = function() {\n      return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n    };\n\n    Map.prototype.asImmutable = function() {\n      return this.__ensureOwner();\n    };\n\n    Map.prototype.wasAltered = function() {\n      return this.__altered;\n    };\n\n    Map.prototype.__iterator = function(type, reverse) {\n      return new MapIterator(this, type, reverse);\n    };\n\n    Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      this._root && this._root.iterate(function(entry ) {\n        iterations++;\n        return fn(entry[1], entry[0], this$0);\n      }, reverse);\n      return iterations;\n    };\n\n    Map.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeMap(this.size, this._root, ownerID, this.__hash);\n    };\n\n\n  function isMap(maybeMap) {\n    return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n  }\n\n  Map.isMap = isMap;\n\n  var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n  var MapPrototype = Map.prototype;\n  MapPrototype[IS_MAP_SENTINEL] = true;\n  MapPrototype[DELETE] = MapPrototype.remove;\n  MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n  // #pragma Trie Nodes\n\n\n\n    function ArrayMapNode(ownerID, entries) {\n      this.ownerID = ownerID;\n      this.entries = entries;\n    }\n\n    ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && entries.length === 1) {\n        return; // undefined\n      }\n\n      if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n        return createNodes(ownerID, entries, key, value);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new ArrayMapNode(ownerID, newEntries);\n    };\n\n\n\n\n    function BitmapIndexedNode(ownerID, bitmap, nodes) {\n      this.ownerID = ownerID;\n      this.bitmap = bitmap;\n      this.nodes = nodes;\n    }\n\n    BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n      var bitmap = this.bitmap;\n      return (bitmap & bit) === 0 ? notSetValue :\n        this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n    };\n\n    BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var bit = 1 << keyHashFrag;\n      var bitmap = this.bitmap;\n      var exists = (bitmap & bit) !== 0;\n\n      if (!exists && value === NOT_SET) {\n        return this;\n      }\n\n      var idx = popCount(bitmap & (bit - 1));\n      var nodes = this.nodes;\n      var node = exists ? nodes[idx] : undefined;\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n      if (newNode === node) {\n        return this;\n      }\n\n      if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n        return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n      }\n\n      if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n        return nodes[idx ^ 1];\n      }\n\n      if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n        return newNode;\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n      var newNodes = exists ? newNode ?\n        setIn(nodes, idx, newNode, isEditable) :\n        spliceOut(nodes, idx, isEditable) :\n        spliceIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.bitmap = newBitmap;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n    };\n\n\n\n\n    function HashArrayMapNode(ownerID, count, nodes) {\n      this.ownerID = ownerID;\n      this.count = count;\n      this.nodes = nodes;\n    }\n\n    HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var node = this.nodes[idx];\n      return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n    };\n\n    HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var removed = value === NOT_SET;\n      var nodes = this.nodes;\n      var node = nodes[idx];\n\n      if (removed && !node) {\n        return this;\n      }\n\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n      if (newNode === node) {\n        return this;\n      }\n\n      var newCount = this.count;\n      if (!node) {\n        newCount++;\n      } else if (!newNode) {\n        newCount--;\n        if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n          return packNodes(ownerID, nodes, newCount, idx);\n        }\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.count = newCount;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new HashArrayMapNode(ownerID, newCount, newNodes);\n    };\n\n\n\n\n    function HashCollisionNode(ownerID, keyHash, entries) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entries = entries;\n    }\n\n    HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n\n      var removed = value === NOT_SET;\n\n      if (keyHash !== this.keyHash) {\n        if (removed) {\n          return this;\n        }\n        SetRef(didAlter);\n        SetRef(didChangeSize);\n        return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n      }\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && len === 2) {\n        return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n    };\n\n\n\n\n    function ValueNode(ownerID, keyHash, entry) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entry = entry;\n    }\n\n    ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n    };\n\n    ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n      var keyMatch = is(key, this.entry[0]);\n      if (keyMatch ? value === this.entry[1] : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n\n      if (removed) {\n        SetRef(didChangeSize);\n        return; // undefined\n      }\n\n      if (keyMatch) {\n        if (ownerID && ownerID === this.ownerID) {\n          this.entry[1] = value;\n          return this;\n        }\n        return new ValueNode(ownerID, this.keyHash, [key, value]);\n      }\n\n      SetRef(didChangeSize);\n      return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n    };\n\n\n\n  // #pragma Iterators\n\n  ArrayMapNode.prototype.iterate =\n  HashCollisionNode.prototype.iterate = function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  }\n\n  BitmapIndexedNode.prototype.iterate =\n  HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  }\n\n  ValueNode.prototype.iterate = function (fn, reverse) {\n    return fn(this.entry);\n  }\n\n  createClass(MapIterator, Iterator);\n\n    function MapIterator(map, type, reverse) {\n      this._type = type;\n      this._reverse = reverse;\n      this._stack = map._root && mapIteratorFrame(map._root);\n    }\n\n    MapIterator.prototype.next = function() {\n      var type = this._type;\n      var stack = this._stack;\n      while (stack) {\n        var node = stack.node;\n        var index = stack.index++;\n        var maxIndex;\n        if (node.entry) {\n          if (index === 0) {\n            return mapIteratorValue(type, node.entry);\n          }\n        } else if (node.entries) {\n          maxIndex = node.entries.length - 1;\n          if (index <= maxIndex) {\n            return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n          }\n        } else {\n          maxIndex = node.nodes.length - 1;\n          if (index <= maxIndex) {\n            var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n            if (subNode) {\n              if (subNode.entry) {\n                return mapIteratorValue(type, subNode.entry);\n              }\n              stack = this._stack = mapIteratorFrame(subNode, stack);\n            }\n            continue;\n          }\n        }\n        stack = this._stack = this._stack.__prev;\n      }\n      return iteratorDone();\n    };\n\n\n  function mapIteratorValue(type, entry) {\n    return iteratorValue(type, entry[0], entry[1]);\n  }\n\n  function mapIteratorFrame(node, prev) {\n    return {\n      node: node,\n      index: 0,\n      __prev: prev\n    };\n  }\n\n  function makeMap(size, root, ownerID, hash) {\n    var map = Object.create(MapPrototype);\n    map.size = size;\n    map._root = root;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_MAP;\n  function emptyMap() {\n    return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n  }\n\n  function updateMap(map, k, v) {\n    var newRoot;\n    var newSize;\n    if (!map._root) {\n      if (v === NOT_SET) {\n        return map;\n      }\n      newSize = 1;\n      newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n    } else {\n      var didChangeSize = MakeRef(CHANGE_LENGTH);\n      var didAlter = MakeRef(DID_ALTER);\n      newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n      if (!didAlter.value) {\n        return map;\n      }\n      newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n    }\n    if (map.__ownerID) {\n      map.size = newSize;\n      map._root = newRoot;\n      map.__hash = undefined;\n      map.__altered = true;\n      return map;\n    }\n    return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n  }\n\n  function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n    if (!node) {\n      if (value === NOT_SET) {\n        return node;\n      }\n      SetRef(didAlter);\n      SetRef(didChangeSize);\n      return new ValueNode(ownerID, keyHash, [key, value]);\n    }\n    return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n  }\n\n  function isLeafNode(node) {\n    return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n  }\n\n  function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n    if (node.keyHash === keyHash) {\n      return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n    }\n\n    var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n    var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n    var newNode;\n    var nodes = idx1 === idx2 ?\n      [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n      ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n    return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n  }\n\n  function createNodes(ownerID, entries, key, value) {\n    if (!ownerID) {\n      ownerID = new OwnerID();\n    }\n    var node = new ValueNode(ownerID, hash(key), [key, value]);\n    for (var ii = 0; ii < entries.length; ii++) {\n      var entry = entries[ii];\n      node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n    }\n    return node;\n  }\n\n  function packNodes(ownerID, nodes, count, excluding) {\n    var bitmap = 0;\n    var packedII = 0;\n    var packedNodes = new Array(count);\n    for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n      var node = nodes[ii];\n      if (node !== undefined && ii !== excluding) {\n        bitmap |= bit;\n        packedNodes[packedII++] = node;\n      }\n    }\n    return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n  }\n\n  function expandNodes(ownerID, nodes, bitmap, including, node) {\n    var count = 0;\n    var expandedNodes = new Array(SIZE);\n    for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n      expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n    }\n    expandedNodes[including] = node;\n    return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n  }\n\n  function mergeIntoMapWith(map, merger, iterables) {\n    var iters = [];\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = KeyedIterable(value);\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    return mergeIntoCollectionWith(map, merger, iters);\n  }\n\n  function deepMerger(existing, value, key) {\n    return existing && existing.mergeDeep && isIterable(value) ?\n      existing.mergeDeep(value) :\n      is(existing, value) ? existing : value;\n  }\n\n  function deepMergerWith(merger) {\n    return function(existing, value, key)  {\n      if (existing && existing.mergeDeepWith && isIterable(value)) {\n        return existing.mergeDeepWith(merger, value);\n      }\n      var nextValue = merger(existing, value, key);\n      return is(existing, nextValue) ? existing : nextValue;\n    };\n  }\n\n  function mergeIntoCollectionWith(collection, merger, iters) {\n    iters = iters.filter(function(x ) {return x.size !== 0});\n    if (iters.length === 0) {\n      return collection;\n    }\n    if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n      return collection.constructor(iters[0]);\n    }\n    return collection.withMutations(function(collection ) {\n      var mergeIntoMap = merger ?\n        function(value, key)  {\n          collection.update(key, NOT_SET, function(existing )\n            {return existing === NOT_SET ? value : merger(existing, value, key)}\n          );\n        } :\n        function(value, key)  {\n          collection.set(key, value);\n        }\n      for (var ii = 0; ii < iters.length; ii++) {\n        iters[ii].forEach(mergeIntoMap);\n      }\n    });\n  }\n\n  function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n    var isNotSet = existing === NOT_SET;\n    var step = keyPathIter.next();\n    if (step.done) {\n      var existingValue = isNotSet ? notSetValue : existing;\n      var newValue = updater(existingValue);\n      return newValue === existingValue ? existing : newValue;\n    }\n    invariant(\n      isNotSet || (existing && existing.set),\n      'invalid keyPath'\n    );\n    var key = step.value;\n    var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n    var nextUpdated = updateInDeepMap(\n      nextExisting,\n      keyPathIter,\n      notSetValue,\n      updater\n    );\n    return nextUpdated === nextExisting ? existing :\n      nextUpdated === NOT_SET ? existing.remove(key) :\n      (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n  }\n\n  function popCount(x) {\n    x = x - ((x >> 1) & 0x55555555);\n    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n    x = (x + (x >> 4)) & 0x0f0f0f0f;\n    x = x + (x >> 8);\n    x = x + (x >> 16);\n    return x & 0x7f;\n  }\n\n  function setIn(array, idx, val, canEdit) {\n    var newArray = canEdit ? array : arrCopy(array);\n    newArray[idx] = val;\n    return newArray;\n  }\n\n  function spliceIn(array, idx, val, canEdit) {\n    var newLen = array.length + 1;\n    if (canEdit && idx + 1 === newLen) {\n      array[idx] = val;\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        newArray[ii] = val;\n        after = -1;\n      } else {\n        newArray[ii] = array[ii + after];\n      }\n    }\n    return newArray;\n  }\n\n  function spliceOut(array, idx, canEdit) {\n    var newLen = array.length - 1;\n    if (canEdit && idx === newLen) {\n      array.pop();\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        after = 1;\n      }\n      newArray[ii] = array[ii + after];\n    }\n    return newArray;\n  }\n\n  var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n  var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n  var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n  createClass(List, IndexedCollection);\n\n    // @pragma Construction\n\n    function List(value) {\n      var empty = emptyList();\n      if (value === null || value === undefined) {\n        return empty;\n      }\n      if (isList(value)) {\n        return value;\n      }\n      var iter = IndexedIterable(value);\n      var size = iter.size;\n      if (size === 0) {\n        return empty;\n      }\n      assertNotInfinite(size);\n      if (size > 0 && size < SIZE) {\n        return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n      }\n      return empty.withMutations(function(list ) {\n        list.setSize(size);\n        iter.forEach(function(v, i)  {return list.set(i, v)});\n      });\n    }\n\n    List.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    List.prototype.toString = function() {\n      return this.__toString('List [', ']');\n    };\n\n    // @pragma Access\n\n    List.prototype.get = function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      if (index >= 0 && index < this.size) {\n        index += this._origin;\n        var node = listNodeFor(this, index);\n        return node && node.array[index & MASK];\n      }\n      return notSetValue;\n    };\n\n    // @pragma Modification\n\n    List.prototype.set = function(index, value) {\n      return updateList(this, index, value);\n    };\n\n    List.prototype.remove = function(index) {\n      return !this.has(index) ? this :\n        index === 0 ? this.shift() :\n        index === this.size - 1 ? this.pop() :\n        this.splice(index, 1);\n    };\n\n    List.prototype.insert = function(index, value) {\n      return this.splice(index, 0, value);\n    };\n\n    List.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = this._origin = this._capacity = 0;\n        this._level = SHIFT;\n        this._root = this._tail = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyList();\n    };\n\n    List.prototype.push = function(/*...values*/) {\n      var values = arguments;\n      var oldSize = this.size;\n      return this.withMutations(function(list ) {\n        setListBounds(list, 0, oldSize + values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(oldSize + ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.pop = function() {\n      return setListBounds(this, 0, -1);\n    };\n\n    List.prototype.unshift = function(/*...values*/) {\n      var values = arguments;\n      return this.withMutations(function(list ) {\n        setListBounds(list, -values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.shift = function() {\n      return setListBounds(this, 1);\n    };\n\n    // @pragma Composition\n\n    List.prototype.merge = function(/*...iters*/) {\n      return mergeIntoListWith(this, undefined, arguments);\n    };\n\n    List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, merger, iters);\n    };\n\n    List.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoListWith(this, deepMerger, arguments);\n    };\n\n    List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, deepMergerWith(merger), iters);\n    };\n\n    List.prototype.setSize = function(size) {\n      return setListBounds(this, 0, size);\n    };\n\n    // @pragma Iteration\n\n    List.prototype.slice = function(begin, end) {\n      var size = this.size;\n      if (wholeSlice(begin, end, size)) {\n        return this;\n      }\n      return setListBounds(\n        this,\n        resolveBegin(begin, size),\n        resolveEnd(end, size)\n      );\n    };\n\n    List.prototype.__iterator = function(type, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      return new Iterator(function()  {\n        var value = values();\n        return value === DONE ?\n          iteratorDone() :\n          iteratorValue(type, index++, value);\n      });\n    };\n\n    List.prototype.__iterate = function(fn, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      var value;\n      while ((value = values()) !== DONE) {\n        if (fn(value, index++, this) === false) {\n          break;\n        }\n      }\n      return index;\n    };\n\n    List.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        return this;\n      }\n      return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n    };\n\n\n  function isList(maybeList) {\n    return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n  }\n\n  List.isList = isList;\n\n  var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n  var ListPrototype = List.prototype;\n  ListPrototype[IS_LIST_SENTINEL] = true;\n  ListPrototype[DELETE] = ListPrototype.remove;\n  ListPrototype.setIn = MapPrototype.setIn;\n  ListPrototype.deleteIn =\n  ListPrototype.removeIn = MapPrototype.removeIn;\n  ListPrototype.update = MapPrototype.update;\n  ListPrototype.updateIn = MapPrototype.updateIn;\n  ListPrototype.mergeIn = MapPrototype.mergeIn;\n  ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  ListPrototype.withMutations = MapPrototype.withMutations;\n  ListPrototype.asMutable = MapPrototype.asMutable;\n  ListPrototype.asImmutable = MapPrototype.asImmutable;\n  ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n    function VNode(array, ownerID) {\n      this.array = array;\n      this.ownerID = ownerID;\n    }\n\n    // TODO: seems like these methods are very similar\n\n    VNode.prototype.removeBefore = function(ownerID, level, index) {\n      if (index === level ? 1 << level : 0 || this.array.length === 0) {\n        return this;\n      }\n      var originIndex = (index >>> level) & MASK;\n      if (originIndex >= this.array.length) {\n        return new VNode([], ownerID);\n      }\n      var removingFirst = originIndex === 0;\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[originIndex];\n        newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && removingFirst) {\n          return this;\n        }\n      }\n      if (removingFirst && !newChild) {\n        return this;\n      }\n      var editable = editableVNode(this, ownerID);\n      if (!removingFirst) {\n        for (var ii = 0; ii < originIndex; ii++) {\n          editable.array[ii] = undefined;\n        }\n      }\n      if (newChild) {\n        editable.array[originIndex] = newChild;\n      }\n      return editable;\n    };\n\n    VNode.prototype.removeAfter = function(ownerID, level, index) {\n      if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n        return this;\n      }\n      var sizeIndex = ((index - 1) >>> level) & MASK;\n      if (sizeIndex >= this.array.length) {\n        return this;\n      }\n\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[sizeIndex];\n        newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n          return this;\n        }\n      }\n\n      var editable = editableVNode(this, ownerID);\n      editable.array.splice(sizeIndex + 1);\n      if (newChild) {\n        editable.array[sizeIndex] = newChild;\n      }\n      return editable;\n    };\n\n\n\n  var DONE = {};\n\n  function iterateList(list, reverse) {\n    var left = list._origin;\n    var right = list._capacity;\n    var tailPos = getTailOffset(right);\n    var tail = list._tail;\n\n    return iterateNodeOrLeaf(list._root, list._level, 0);\n\n    function iterateNodeOrLeaf(node, level, offset) {\n      return level === 0 ?\n        iterateLeaf(node, offset) :\n        iterateNode(node, level, offset);\n    }\n\n    function iterateLeaf(node, offset) {\n      var array = offset === tailPos ? tail && tail.array : node && node.array;\n      var from = offset > left ? 0 : left - offset;\n      var to = right - offset;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        return array && array[idx];\n      };\n    }\n\n    function iterateNode(node, level, offset) {\n      var values;\n      var array = node && node.array;\n      var from = offset > left ? 0 : (left - offset) >> level;\n      var to = ((right - offset) >> level) + 1;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        do {\n          if (values) {\n            var value = values();\n            if (value !== DONE) {\n              return value;\n            }\n            values = null;\n          }\n          if (from === to) {\n            return DONE;\n          }\n          var idx = reverse ? --to : from++;\n          values = iterateNodeOrLeaf(\n            array && array[idx], level - SHIFT, offset + (idx << level)\n          );\n        } while (true);\n      };\n    }\n  }\n\n  function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n    var list = Object.create(ListPrototype);\n    list.size = capacity - origin;\n    list._origin = origin;\n    list._capacity = capacity;\n    list._level = level;\n    list._root = root;\n    list._tail = tail;\n    list.__ownerID = ownerID;\n    list.__hash = hash;\n    list.__altered = false;\n    return list;\n  }\n\n  var EMPTY_LIST;\n  function emptyList() {\n    return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n  }\n\n  function updateList(list, index, value) {\n    index = wrapIndex(list, index);\n\n    if (index !== index) {\n      return list;\n    }\n\n    if (index >= list.size || index < 0) {\n      return list.withMutations(function(list ) {\n        index < 0 ?\n          setListBounds(list, index).set(0, value) :\n          setListBounds(list, 0, index + 1).set(index, value)\n      });\n    }\n\n    index += list._origin;\n\n    var newTail = list._tail;\n    var newRoot = list._root;\n    var didAlter = MakeRef(DID_ALTER);\n    if (index >= getTailOffset(list._capacity)) {\n      newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n    } else {\n      newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n    }\n\n    if (!didAlter.value) {\n      return list;\n    }\n\n    if (list.__ownerID) {\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n  }\n\n  function updateVNode(node, ownerID, level, index, value, didAlter) {\n    var idx = (index >>> level) & MASK;\n    var nodeHas = node && idx < node.array.length;\n    if (!nodeHas && value === undefined) {\n      return node;\n    }\n\n    var newNode;\n\n    if (level > 0) {\n      var lowerNode = node && node.array[idx];\n      var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n      if (newLowerNode === lowerNode) {\n        return node;\n      }\n      newNode = editableVNode(node, ownerID);\n      newNode.array[idx] = newLowerNode;\n      return newNode;\n    }\n\n    if (nodeHas && node.array[idx] === value) {\n      return node;\n    }\n\n    SetRef(didAlter);\n\n    newNode = editableVNode(node, ownerID);\n    if (value === undefined && idx === newNode.array.length - 1) {\n      newNode.array.pop();\n    } else {\n      newNode.array[idx] = value;\n    }\n    return newNode;\n  }\n\n  function editableVNode(node, ownerID) {\n    if (ownerID && node && ownerID === node.ownerID) {\n      return node;\n    }\n    return new VNode(node ? node.array.slice() : [], ownerID);\n  }\n\n  function listNodeFor(list, rawIndex) {\n    if (rawIndex >= getTailOffset(list._capacity)) {\n      return list._tail;\n    }\n    if (rawIndex < 1 << (list._level + SHIFT)) {\n      var node = list._root;\n      var level = list._level;\n      while (node && level > 0) {\n        node = node.array[(rawIndex >>> level) & MASK];\n        level -= SHIFT;\n      }\n      return node;\n    }\n  }\n\n  function setListBounds(list, begin, end) {\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n    var owner = list.__ownerID || new OwnerID();\n    var oldOrigin = list._origin;\n    var oldCapacity = list._capacity;\n    var newOrigin = oldOrigin + begin;\n    var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n    if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n      return list;\n    }\n\n    // If it's going to end after it starts, it's empty.\n    if (newOrigin >= newCapacity) {\n      return list.clear();\n    }\n\n    var newLevel = list._level;\n    var newRoot = list._root;\n\n    // New origin might need creating a higher root.\n    var offsetShift = 0;\n    while (newOrigin + offsetShift < 0) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n      newLevel += SHIFT;\n      offsetShift += 1 << newLevel;\n    }\n    if (offsetShift) {\n      newOrigin += offsetShift;\n      oldOrigin += offsetShift;\n      newCapacity += offsetShift;\n      oldCapacity += offsetShift;\n    }\n\n    var oldTailOffset = getTailOffset(oldCapacity);\n    var newTailOffset = getTailOffset(newCapacity);\n\n    // New size might need creating a higher root.\n    while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n      newLevel += SHIFT;\n    }\n\n    // Locate or create the new tail.\n    var oldTail = list._tail;\n    var newTail = newTailOffset < oldTailOffset ?\n      listNodeFor(list, newCapacity - 1) :\n      newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n    // Merge Tail into tree.\n    if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n      newRoot = editableVNode(newRoot, owner);\n      var node = newRoot;\n      for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n        var idx = (oldTailOffset >>> level) & MASK;\n        node = node.array[idx] = editableVNode(node.array[idx], owner);\n      }\n      node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n    }\n\n    // If the size has been reduced, there's a chance the tail needs to be trimmed.\n    if (newCapacity < oldCapacity) {\n      newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n    }\n\n    // If the new origin is within the tail, then we do not need a root.\n    if (newOrigin >= newTailOffset) {\n      newOrigin -= newTailOffset;\n      newCapacity -= newTailOffset;\n      newLevel = SHIFT;\n      newRoot = null;\n      newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n    } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n      offsetShift = 0;\n\n      // Identify the new top root node of the subtree of the old root.\n      while (newRoot) {\n        var beginIndex = (newOrigin >>> newLevel) & MASK;\n        if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n          break;\n        }\n        if (beginIndex) {\n          offsetShift += (1 << newLevel) * beginIndex;\n        }\n        newLevel -= SHIFT;\n        newRoot = newRoot.array[beginIndex];\n      }\n\n      // Trim the new sides of the new root.\n      if (newRoot && newOrigin > oldOrigin) {\n        newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n      }\n      if (newRoot && newTailOffset < oldTailOffset) {\n        newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n      }\n      if (offsetShift) {\n        newOrigin -= offsetShift;\n        newCapacity -= offsetShift;\n      }\n    }\n\n    if (list.__ownerID) {\n      list.size = newCapacity - newOrigin;\n      list._origin = newOrigin;\n      list._capacity = newCapacity;\n      list._level = newLevel;\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n  }\n\n  function mergeIntoListWith(list, merger, iterables) {\n    var iters = [];\n    var maxSize = 0;\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = IndexedIterable(value);\n      if (iter.size > maxSize) {\n        maxSize = iter.size;\n      }\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    if (maxSize > list.size) {\n      list = list.setSize(maxSize);\n    }\n    return mergeIntoCollectionWith(list, merger, iters);\n  }\n\n  function getTailOffset(size) {\n    return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n  }\n\n  createClass(OrderedMap, Map);\n\n    // @pragma Construction\n\n    function OrderedMap(value) {\n      return value === null || value === undefined ? emptyOrderedMap() :\n        isOrderedMap(value) ? value :\n        emptyOrderedMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    OrderedMap.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedMap.prototype.toString = function() {\n      return this.__toString('OrderedMap {', '}');\n    };\n\n    // @pragma Access\n\n    OrderedMap.prototype.get = function(k, notSetValue) {\n      var index = this._map.get(k);\n      return index !== undefined ? this._list.get(index)[1] : notSetValue;\n    };\n\n    // @pragma Modification\n\n    OrderedMap.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._map.clear();\n        this._list.clear();\n        return this;\n      }\n      return emptyOrderedMap();\n    };\n\n    OrderedMap.prototype.set = function(k, v) {\n      return updateOrderedMap(this, k, v);\n    };\n\n    OrderedMap.prototype.remove = function(k) {\n      return updateOrderedMap(this, k, NOT_SET);\n    };\n\n    OrderedMap.prototype.wasAltered = function() {\n      return this._map.wasAltered() || this._list.wasAltered();\n    };\n\n    OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._list.__iterate(\n        function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n        reverse\n      );\n    };\n\n    OrderedMap.prototype.__iterator = function(type, reverse) {\n      return this._list.fromEntrySeq().__iterator(type, reverse);\n    };\n\n    OrderedMap.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      var newList = this._list.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        this._list = newList;\n        return this;\n      }\n      return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n    };\n\n\n  function isOrderedMap(maybeOrderedMap) {\n    return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n  }\n\n  OrderedMap.isOrderedMap = isOrderedMap;\n\n  OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n  OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n  function makeOrderedMap(map, list, ownerID, hash) {\n    var omap = Object.create(OrderedMap.prototype);\n    omap.size = map ? map.size : 0;\n    omap._map = map;\n    omap._list = list;\n    omap.__ownerID = ownerID;\n    omap.__hash = hash;\n    return omap;\n  }\n\n  var EMPTY_ORDERED_MAP;\n  function emptyOrderedMap() {\n    return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n  }\n\n  function updateOrderedMap(omap, k, v) {\n    var map = omap._map;\n    var list = omap._list;\n    var i = map.get(k);\n    var has = i !== undefined;\n    var newMap;\n    var newList;\n    if (v === NOT_SET) { // removed\n      if (!has) {\n        return omap;\n      }\n      if (list.size >= SIZE && list.size >= map.size * 2) {\n        newList = list.filter(function(entry, idx)  {return entry !== undefined && i !== idx});\n        newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n        if (omap.__ownerID) {\n          newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n        }\n      } else {\n        newMap = map.remove(k);\n        newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n      }\n    } else {\n      if (has) {\n        if (v === list.get(i)[1]) {\n          return omap;\n        }\n        newMap = map;\n        newList = list.set(i, [k, v]);\n      } else {\n        newMap = map.set(k, list.size);\n        newList = list.set(list.size, [k, v]);\n      }\n    }\n    if (omap.__ownerID) {\n      omap.size = newMap.size;\n      omap._map = newMap;\n      omap._list = newList;\n      omap.__hash = undefined;\n      return omap;\n    }\n    return makeOrderedMap(newMap, newList);\n  }\n\n  createClass(ToKeyedSequence, KeyedSeq);\n    function ToKeyedSequence(indexed, useKeys) {\n      this._iter = indexed;\n      this._useKeys = useKeys;\n      this.size = indexed.size;\n    }\n\n    ToKeyedSequence.prototype.get = function(key, notSetValue) {\n      return this._iter.get(key, notSetValue);\n    };\n\n    ToKeyedSequence.prototype.has = function(key) {\n      return this._iter.has(key);\n    };\n\n    ToKeyedSequence.prototype.valueSeq = function() {\n      return this._iter.valueSeq();\n    };\n\n    ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n      var reversedSequence = reverseFactory(this, true);\n      if (!this._useKeys) {\n        reversedSequence.valueSeq = function()  {return this$0._iter.toSeq().reverse()};\n      }\n      return reversedSequence;\n    };\n\n    ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n      var mappedSequence = mapFactory(this, mapper, context);\n      if (!this._useKeys) {\n        mappedSequence.valueSeq = function()  {return this$0._iter.toSeq().map(mapper, context)};\n      }\n      return mappedSequence;\n    };\n\n    ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var ii;\n      return this._iter.__iterate(\n        this._useKeys ?\n          function(v, k)  {return fn(v, k, this$0)} :\n          ((ii = reverse ? resolveSize(this) : 0),\n            function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n        reverse\n      );\n    };\n\n    ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n      if (this._useKeys) {\n        return this._iter.__iterator(type, reverse);\n      }\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var ii = reverse ? resolveSize(this) : 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n      });\n    };\n\n  ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(ToIndexedSequence, IndexedSeq);\n    function ToIndexedSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToIndexedSequence.prototype.includes = function(value) {\n      return this._iter.includes(value);\n    };\n\n    ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n    };\n\n    ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, iterations++, step.value, step)\n      });\n    };\n\n\n\n  createClass(ToSetSequence, SetSeq);\n    function ToSetSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToSetSequence.prototype.has = function(key) {\n      return this._iter.includes(key);\n    };\n\n    ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n    };\n\n    ToSetSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, step.value, step.value, step);\n      });\n    };\n\n\n\n  createClass(FromEntriesSequence, KeyedSeq);\n    function FromEntriesSequence(entries) {\n      this._iter = entries;\n      this.size = entries.size;\n    }\n\n    FromEntriesSequence.prototype.entrySeq = function() {\n      return this._iter.toSeq();\n    };\n\n    FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(entry ) {\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedIterable = isIterable(entry);\n          return fn(\n            indexedIterable ? entry.get(1) : entry[1],\n            indexedIterable ? entry.get(0) : entry[0],\n            this$0\n          );\n        }\n      }, reverse);\n    };\n\n    FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          // Check if entry exists first so array access doesn't throw for holes\n          // in the parent iteration.\n          if (entry) {\n            validateEntry(entry);\n            var indexedIterable = isIterable(entry);\n            return iteratorValue(\n              type,\n              indexedIterable ? entry.get(0) : entry[0],\n              indexedIterable ? entry.get(1) : entry[1],\n              step\n            );\n          }\n        }\n      });\n    };\n\n\n  ToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\n\n  function flipFactory(iterable) {\n    var flipSequence = makeSequence(iterable);\n    flipSequence._iter = iterable;\n    flipSequence.size = iterable.size;\n    flipSequence.flip = function()  {return iterable};\n    flipSequence.reverse = function () {\n      var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n      reversedSequence.flip = function()  {return iterable.reverse()};\n      return reversedSequence;\n    };\n    flipSequence.has = function(key ) {return iterable.includes(key)};\n    flipSequence.includes = function(key ) {return iterable.has(key)};\n    flipSequence.cacheResult = cacheResultThrough;\n    flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(k, v, this$0) !== false}, reverse);\n    }\n    flipSequence.__iteratorUncached = function(type, reverse) {\n      if (type === ITERATE_ENTRIES) {\n        var iterator = iterable.__iterator(type, reverse);\n        return new Iterator(function()  {\n          var step = iterator.next();\n          if (!step.done) {\n            var k = step.value[0];\n            step.value[0] = step.value[1];\n            step.value[1] = k;\n          }\n          return step;\n        });\n      }\n      return iterable.__iterator(\n        type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n        reverse\n      );\n    }\n    return flipSequence;\n  }\n\n\n  function mapFactory(iterable, mapper, context) {\n    var mappedSequence = makeSequence(iterable);\n    mappedSequence.size = iterable.size;\n    mappedSequence.has = function(key ) {return iterable.has(key)};\n    mappedSequence.get = function(key, notSetValue)  {\n      var v = iterable.get(key, NOT_SET);\n      return v === NOT_SET ?\n        notSetValue :\n        mapper.call(context, v, key, iterable);\n    };\n    mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(\n        function(v, k, c)  {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n        reverse\n      );\n    }\n    mappedSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        return iteratorValue(\n          type,\n          key,\n          mapper.call(context, entry[1], key, iterable),\n          step\n        );\n      });\n    }\n    return mappedSequence;\n  }\n\n\n  function reverseFactory(iterable, useKeys) {\n    var reversedSequence = makeSequence(iterable);\n    reversedSequence._iter = iterable;\n    reversedSequence.size = iterable.size;\n    reversedSequence.reverse = function()  {return iterable};\n    if (iterable.flip) {\n      reversedSequence.flip = function () {\n        var flipSequence = flipFactory(iterable);\n        flipSequence.reverse = function()  {return iterable.flip()};\n        return flipSequence;\n      };\n    }\n    reversedSequence.get = function(key, notSetValue) \n      {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n    reversedSequence.has = function(key )\n      {return iterable.has(useKeys ? key : -1 - key)};\n    reversedSequence.includes = function(value ) {return iterable.includes(value)};\n    reversedSequence.cacheResult = cacheResultThrough;\n    reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(v, k, this$0)}, !reverse);\n    };\n    reversedSequence.__iterator =\n      function(type, reverse)  {return iterable.__iterator(type, !reverse)};\n    return reversedSequence;\n  }\n\n\n  function filterFactory(iterable, predicate, context, useKeys) {\n    var filterSequence = makeSequence(iterable);\n    if (useKeys) {\n      filterSequence.has = function(key ) {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n      };\n      filterSequence.get = function(key, notSetValue)  {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n          v : notSetValue;\n      };\n    }\n    filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      }, reverse);\n      return iterations;\n    };\n    filterSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          var key = entry[0];\n          var value = entry[1];\n          if (predicate.call(context, value, key, iterable)) {\n            return iteratorValue(type, useKeys ? key : iterations++, value, step);\n          }\n        }\n      });\n    }\n    return filterSequence;\n  }\n\n\n  function countByFactory(iterable, grouper, context) {\n    var groups = Map().asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        0,\n        function(a ) {return a + 1}\n      );\n    });\n    return groups.asImmutable();\n  }\n\n\n  function groupByFactory(iterable, grouper, context) {\n    var isKeyedIter = isKeyed(iterable);\n    var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n      );\n    });\n    var coerce = iterableClass(iterable);\n    return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n  }\n\n\n  function sliceFactory(iterable, begin, end, useKeys) {\n    var originalSize = iterable.size;\n\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n\n    if (wholeSlice(begin, end, originalSize)) {\n      return iterable;\n    }\n\n    var resolvedBegin = resolveBegin(begin, originalSize);\n    var resolvedEnd = resolveEnd(end, originalSize);\n\n    // begin or end will be NaN if they were provided as negative numbers and\n    // this iterable's size is unknown. In that case, cache first so there is\n    // a known size and these do not resolve to NaN.\n    if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n      return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n    }\n\n    // Note: resolvedEnd is undefined when the original sequence's length is\n    // unknown and this slice did not supply an end and should contain all\n    // elements after resolvedBegin.\n    // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n    var resolvedSize = resolvedEnd - resolvedBegin;\n    var sliceSize;\n    if (resolvedSize === resolvedSize) {\n      sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n    }\n\n    var sliceSeq = makeSequence(iterable);\n\n    // If iterable.size is undefined, the size of the realized sliceSeq is\n    // unknown at this point unless the number of items to slice is 0\n    sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n    if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n      sliceSeq.get = function (index, notSetValue) {\n        index = wrapIndex(this, index);\n        return index >= 0 && index < sliceSize ?\n          iterable.get(index + resolvedBegin, notSetValue) :\n          notSetValue;\n      }\n    }\n\n    sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (sliceSize === 0) {\n        return 0;\n      }\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var skipped = 0;\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k)  {\n        if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n                 iterations !== sliceSize;\n        }\n      });\n      return iterations;\n    };\n\n    sliceSeq.__iteratorUncached = function(type, reverse) {\n      if (sliceSize !== 0 && reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      // Don't bother instantiating parent iterator if taking 0.\n      var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n      var skipped = 0;\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (skipped++ < resolvedBegin) {\n          iterator.next();\n        }\n        if (++iterations > sliceSize) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (useKeys || type === ITERATE_VALUES) {\n          return step;\n        } else if (type === ITERATE_KEYS) {\n          return iteratorValue(type, iterations - 1, undefined, step);\n        } else {\n          return iteratorValue(type, iterations - 1, step.value[1], step);\n        }\n      });\n    }\n\n    return sliceSeq;\n  }\n\n\n  function takeWhileFactory(iterable, predicate, context) {\n    var takeSequence = makeSequence(iterable);\n    takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c) \n        {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n      );\n      return iterations;\n    };\n    takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterating = true;\n      return new Iterator(function()  {\n        if (!iterating) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var k = entry[0];\n        var v = entry[1];\n        if (!predicate.call(context, v, k, this$0)) {\n          iterating = false;\n          return iteratorDone();\n        }\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return takeSequence;\n  }\n\n\n  function skipWhileFactory(iterable, predicate, context, useKeys) {\n    var skipSequence = makeSequence(iterable);\n    skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      });\n      return iterations;\n    };\n    skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var skipping = true;\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step, k, v;\n        do {\n          step = iterator.next();\n          if (step.done) {\n            if (useKeys || type === ITERATE_VALUES) {\n              return step;\n            } else if (type === ITERATE_KEYS) {\n              return iteratorValue(type, iterations++, undefined, step);\n            } else {\n              return iteratorValue(type, iterations++, step.value[1], step);\n            }\n          }\n          var entry = step.value;\n          k = entry[0];\n          v = entry[1];\n          skipping && (skipping = predicate.call(context, v, k, this$0));\n        } while (skipping);\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return skipSequence;\n  }\n\n\n  function concatFactory(iterable, values) {\n    var isKeyedIterable = isKeyed(iterable);\n    var iters = [iterable].concat(values).map(function(v ) {\n      if (!isIterable(v)) {\n        v = isKeyedIterable ?\n          keyedSeqFromValue(v) :\n          indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedIterable) {\n        v = KeyedIterable(v);\n      }\n      return v;\n    }).filter(function(v ) {return v.size !== 0});\n\n    if (iters.length === 0) {\n      return iterable;\n    }\n\n    if (iters.length === 1) {\n      var singleton = iters[0];\n      if (singleton === iterable ||\n          isKeyedIterable && isKeyed(singleton) ||\n          isIndexed(iterable) && isIndexed(singleton)) {\n        return singleton;\n      }\n    }\n\n    var concatSeq = new ArraySeq(iters);\n    if (isKeyedIterable) {\n      concatSeq = concatSeq.toKeyedSeq();\n    } else if (!isIndexed(iterable)) {\n      concatSeq = concatSeq.toSetSeq();\n    }\n    concatSeq = concatSeq.flatten(true);\n    concatSeq.size = iters.reduce(\n      function(sum, seq)  {\n        if (sum !== undefined) {\n          var size = seq.size;\n          if (size !== undefined) {\n            return sum + size;\n          }\n        }\n      },\n      0\n    );\n    return concatSeq;\n  }\n\n\n  function flattenFactory(iterable, depth, useKeys) {\n    var flatSequence = makeSequence(iterable);\n    flatSequence.__iterateUncached = function(fn, reverse) {\n      var iterations = 0;\n      var stopped = false;\n      function flatDeep(iter, currentDepth) {var this$0 = this;\n        iter.__iterate(function(v, k)  {\n          if ((!depth || currentDepth < depth) && isIterable(v)) {\n            flatDeep(v, currentDepth + 1);\n          } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n            stopped = true;\n          }\n          return !stopped;\n        }, reverse);\n      }\n      flatDeep(iterable, 0);\n      return iterations;\n    }\n    flatSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(type, reverse);\n      var stack = [];\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (iterator) {\n          var step = iterator.next();\n          if (step.done !== false) {\n            iterator = stack.pop();\n            continue;\n          }\n          var v = step.value;\n          if (type === ITERATE_ENTRIES) {\n            v = v[1];\n          }\n          if ((!depth || stack.length < depth) && isIterable(v)) {\n            stack.push(iterator);\n            iterator = v.__iterator(type, reverse);\n          } else {\n            return useKeys ? step : iteratorValue(type, iterations++, v, step);\n          }\n        }\n        return iteratorDone();\n      });\n    }\n    return flatSequence;\n  }\n\n\n  function flatMapFactory(iterable, mapper, context) {\n    var coerce = iterableClass(iterable);\n    return iterable.toSeq().map(\n      function(v, k)  {return coerce(mapper.call(context, v, k, iterable))}\n    ).flatten(true);\n  }\n\n\n  function interposeFactory(iterable, separator) {\n    var interposedSequence = makeSequence(iterable);\n    interposedSequence.size = iterable.size && iterable.size * 2 -1;\n    interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k) \n        {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n        fn(v, iterations++, this$0) !== false},\n        reverse\n      );\n      return iterations;\n    };\n    interposedSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      var step;\n      return new Iterator(function()  {\n        if (!step || iterations % 2) {\n          step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n        }\n        return iterations % 2 ?\n          iteratorValue(type, iterations++, separator) :\n          iteratorValue(type, iterations++, step.value, step);\n      });\n    };\n    return interposedSequence;\n  }\n\n\n  function sortFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    var isKeyedIterable = isKeyed(iterable);\n    var index = 0;\n    var entries = iterable.toSeq().map(\n      function(v, k)  {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n    ).toArray();\n    entries.sort(function(a, b)  {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n      isKeyedIterable ?\n      function(v, i)  { entries[i].length = 2; } :\n      function(v, i)  { entries[i] = v[1]; }\n    );\n    return isKeyedIterable ? KeyedSeq(entries) :\n      isIndexed(iterable) ? IndexedSeq(entries) :\n      SetSeq(entries);\n  }\n\n\n  function maxFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    if (mapper) {\n      var entry = iterable.toSeq()\n        .map(function(v, k)  {return [v, mapper(v, k, iterable)]})\n        .reduce(function(a, b)  {return maxCompare(comparator, a[1], b[1]) ? b : a});\n      return entry && entry[0];\n    } else {\n      return iterable.reduce(function(a, b)  {return maxCompare(comparator, a, b) ? b : a});\n    }\n  }\n\n  function maxCompare(comparator, a, b) {\n    var comp = comparator(b, a);\n    // b is considered the new max if the comparator declares them equal, but\n    // they are not equal and b is in fact a nullish value.\n    return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n  }\n\n\n  function zipWithFactory(keyIter, zipper, iters) {\n    var zipSequence = makeSequence(keyIter);\n    zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n    // Note: this a generic base implementation of __iterate in terms of\n    // __iterator which may be more generically useful in the future.\n    zipSequence.__iterate = function(fn, reverse) {\n      /* generic:\n      var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        iterations++;\n        if (fn(step.value[1], step.value[0], this) === false) {\n          break;\n        }\n      }\n      return iterations;\n      */\n      // indexed:\n      var iterator = this.__iterator(ITERATE_VALUES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n    zipSequence.__iteratorUncached = function(type, reverse) {\n      var iterators = iters.map(function(i )\n        {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n      );\n      var iterations = 0;\n      var isDone = false;\n      return new Iterator(function()  {\n        var steps;\n        if (!isDone) {\n          steps = iterators.map(function(i ) {return i.next()});\n          isDone = steps.some(function(s ) {return s.done});\n        }\n        if (isDone) {\n          return iteratorDone();\n        }\n        return iteratorValue(\n          type,\n          iterations++,\n          zipper.apply(null, steps.map(function(s ) {return s.value}))\n        );\n      });\n    };\n    return zipSequence\n  }\n\n\n  // #pragma Helper Functions\n\n  function reify(iter, seq) {\n    return isSeq(iter) ? seq : iter.constructor(seq);\n  }\n\n  function validateEntry(entry) {\n    if (entry !== Object(entry)) {\n      throw new TypeError('Expected [K, V] tuple: ' + entry);\n    }\n  }\n\n  function resolveSize(iter) {\n    assertNotInfinite(iter.size);\n    return ensureSize(iter);\n  }\n\n  function iterableClass(iterable) {\n    return isKeyed(iterable) ? KeyedIterable :\n      isIndexed(iterable) ? IndexedIterable :\n      SetIterable;\n  }\n\n  function makeSequence(iterable) {\n    return Object.create(\n      (\n        isKeyed(iterable) ? KeyedSeq :\n        isIndexed(iterable) ? IndexedSeq :\n        SetSeq\n      ).prototype\n    );\n  }\n\n  function cacheResultThrough() {\n    if (this._iter.cacheResult) {\n      this._iter.cacheResult();\n      this.size = this._iter.size;\n      return this;\n    } else {\n      return Seq.prototype.cacheResult.call(this);\n    }\n  }\n\n  function defaultComparator(a, b) {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  function forceIterator(keyPath) {\n    var iter = getIterator(keyPath);\n    if (!iter) {\n      // Array might not be iterable in this environment, so we need a fallback\n      // to our wrapped type.\n      if (!isArrayLike(keyPath)) {\n        throw new TypeError('Expected iterable or array-like: ' + keyPath);\n      }\n      iter = getIterator(Iterable(keyPath));\n    }\n    return iter;\n  }\n\n  createClass(Record, KeyedCollection);\n\n    function Record(defaultValues, name) {\n      var hasInitialized;\n\n      var RecordType = function Record(values) {\n        if (values instanceof RecordType) {\n          return values;\n        }\n        if (!(this instanceof RecordType)) {\n          return new RecordType(values);\n        }\n        if (!hasInitialized) {\n          hasInitialized = true;\n          var keys = Object.keys(defaultValues);\n          setProps(RecordTypePrototype, keys);\n          RecordTypePrototype.size = keys.length;\n          RecordTypePrototype._name = name;\n          RecordTypePrototype._keys = keys;\n          RecordTypePrototype._defaultValues = defaultValues;\n        }\n        this._map = Map(values);\n      };\n\n      var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n      RecordTypePrototype.constructor = RecordType;\n\n      return RecordType;\n    }\n\n    Record.prototype.toString = function() {\n      return this.__toString(recordName(this) + ' {', '}');\n    };\n\n    // @pragma Access\n\n    Record.prototype.has = function(k) {\n      return this._defaultValues.hasOwnProperty(k);\n    };\n\n    Record.prototype.get = function(k, notSetValue) {\n      if (!this.has(k)) {\n        return notSetValue;\n      }\n      var defaultVal = this._defaultValues[k];\n      return this._map ? this._map.get(k, defaultVal) : defaultVal;\n    };\n\n    // @pragma Modification\n\n    Record.prototype.clear = function() {\n      if (this.__ownerID) {\n        this._map && this._map.clear();\n        return this;\n      }\n      var RecordType = this.constructor;\n      return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n    };\n\n    Record.prototype.set = function(k, v) {\n      if (!this.has(k)) {\n        throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n      }\n      var newMap = this._map && this._map.set(k, v);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.remove = function(k) {\n      if (!this.has(k)) {\n        return this;\n      }\n      var newMap = this._map && this._map.remove(k);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterator(type, reverse);\n    };\n\n    Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterate(fn, reverse);\n    };\n\n    Record.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map && this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return makeRecord(this, newMap, ownerID);\n    };\n\n\n  var RecordPrototype = Record.prototype;\n  RecordPrototype[DELETE] = RecordPrototype.remove;\n  RecordPrototype.deleteIn =\n  RecordPrototype.removeIn = MapPrototype.removeIn;\n  RecordPrototype.merge = MapPrototype.merge;\n  RecordPrototype.mergeWith = MapPrototype.mergeWith;\n  RecordPrototype.mergeIn = MapPrototype.mergeIn;\n  RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n  RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n  RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  RecordPrototype.setIn = MapPrototype.setIn;\n  RecordPrototype.update = MapPrototype.update;\n  RecordPrototype.updateIn = MapPrototype.updateIn;\n  RecordPrototype.withMutations = MapPrototype.withMutations;\n  RecordPrototype.asMutable = MapPrototype.asMutable;\n  RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n  function makeRecord(likeRecord, map, ownerID) {\n    var record = Object.create(Object.getPrototypeOf(likeRecord));\n    record._map = map;\n    record.__ownerID = ownerID;\n    return record;\n  }\n\n  function recordName(record) {\n    return record._name || record.constructor.name || 'Record';\n  }\n\n  function setProps(prototype, names) {\n    try {\n      names.forEach(setProp.bind(undefined, prototype));\n    } catch (error) {\n      // Object.defineProperty failed. Probably IE8.\n    }\n  }\n\n  function setProp(prototype, name) {\n    Object.defineProperty(prototype, name, {\n      get: function() {\n        return this.get(name);\n      },\n      set: function(value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      }\n    });\n  }\n\n  createClass(Set, SetCollection);\n\n    // @pragma Construction\n\n    function Set(value) {\n      return value === null || value === undefined ? emptySet() :\n        isSet(value) && !isOrdered(value) ? value :\n        emptySet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    Set.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Set.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    Set.prototype.toString = function() {\n      return this.__toString('Set {', '}');\n    };\n\n    // @pragma Access\n\n    Set.prototype.has = function(value) {\n      return this._map.has(value);\n    };\n\n    // @pragma Modification\n\n    Set.prototype.add = function(value) {\n      return updateSet(this, this._map.set(value, true));\n    };\n\n    Set.prototype.remove = function(value) {\n      return updateSet(this, this._map.remove(value));\n    };\n\n    Set.prototype.clear = function() {\n      return updateSet(this, this._map.clear());\n    };\n\n    // @pragma Composition\n\n    Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n      iters = iters.filter(function(x ) {return x.size !== 0});\n      if (iters.length === 0) {\n        return this;\n      }\n      if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n        return this.constructor(iters[0]);\n      }\n      return this.withMutations(function(set ) {\n        for (var ii = 0; ii < iters.length; ii++) {\n          SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n        }\n      });\n    };\n\n    Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (!iters.every(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (iters.some(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.merge = function() {\n      return this.union.apply(this, arguments);\n    };\n\n    Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return this.union.apply(this, iters);\n    };\n\n    Set.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator));\n    };\n\n    Set.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator, mapper));\n    };\n\n    Set.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._map.__iterate(function(_, k)  {return fn(k, k, this$0)}, reverse);\n    };\n\n    Set.prototype.__iterator = function(type, reverse) {\n      return this._map.map(function(_, k)  {return k}).__iterator(type, reverse);\n    };\n\n    Set.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return this.__make(newMap, ownerID);\n    };\n\n\n  function isSet(maybeSet) {\n    return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n  }\n\n  Set.isSet = isSet;\n\n  var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n  var SetPrototype = Set.prototype;\n  SetPrototype[IS_SET_SENTINEL] = true;\n  SetPrototype[DELETE] = SetPrototype.remove;\n  SetPrototype.mergeDeep = SetPrototype.merge;\n  SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n  SetPrototype.withMutations = MapPrototype.withMutations;\n  SetPrototype.asMutable = MapPrototype.asMutable;\n  SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n  SetPrototype.__empty = emptySet;\n  SetPrototype.__make = makeSet;\n\n  function updateSet(set, newMap) {\n    if (set.__ownerID) {\n      set.size = newMap.size;\n      set._map = newMap;\n      return set;\n    }\n    return newMap === set._map ? set :\n      newMap.size === 0 ? set.__empty() :\n      set.__make(newMap);\n  }\n\n  function makeSet(map, ownerID) {\n    var set = Object.create(SetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_SET;\n  function emptySet() {\n    return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n  }\n\n  createClass(OrderedSet, Set);\n\n    // @pragma Construction\n\n    function OrderedSet(value) {\n      return value === null || value === undefined ? emptyOrderedSet() :\n        isOrderedSet(value) ? value :\n        emptyOrderedSet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    OrderedSet.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedSet.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    OrderedSet.prototype.toString = function() {\n      return this.__toString('OrderedSet {', '}');\n    };\n\n\n  function isOrderedSet(maybeOrderedSet) {\n    return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n  }\n\n  OrderedSet.isOrderedSet = isOrderedSet;\n\n  var OrderedSetPrototype = OrderedSet.prototype;\n  OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n  OrderedSetPrototype.__empty = emptyOrderedSet;\n  OrderedSetPrototype.__make = makeOrderedSet;\n\n  function makeOrderedSet(map, ownerID) {\n    var set = Object.create(OrderedSetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_ORDERED_SET;\n  function emptyOrderedSet() {\n    return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n  }\n\n  createClass(Stack, IndexedCollection);\n\n    // @pragma Construction\n\n    function Stack(value) {\n      return value === null || value === undefined ? emptyStack() :\n        isStack(value) ? value :\n        emptyStack().unshiftAll(value);\n    }\n\n    Stack.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Stack.prototype.toString = function() {\n      return this.__toString('Stack [', ']');\n    };\n\n    // @pragma Access\n\n    Stack.prototype.get = function(index, notSetValue) {\n      var head = this._head;\n      index = wrapIndex(this, index);\n      while (head && index--) {\n        head = head.next;\n      }\n      return head ? head.value : notSetValue;\n    };\n\n    Stack.prototype.peek = function() {\n      return this._head && this._head.value;\n    };\n\n    // @pragma Modification\n\n    Stack.prototype.push = function(/*...values*/) {\n      if (arguments.length === 0) {\n        return this;\n      }\n      var newSize = this.size + arguments.length;\n      var head = this._head;\n      for (var ii = arguments.length - 1; ii >= 0; ii--) {\n        head = {\n          value: arguments[ii],\n          next: head\n        };\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pushAll = function(iter) {\n      iter = IndexedIterable(iter);\n      if (iter.size === 0) {\n        return this;\n      }\n      assertNotInfinite(iter.size);\n      var newSize = this.size;\n      var head = this._head;\n      iter.reverse().forEach(function(value ) {\n        newSize++;\n        head = {\n          value: value,\n          next: head\n        };\n      });\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pop = function() {\n      return this.slice(1);\n    };\n\n    Stack.prototype.unshift = function(/*...values*/) {\n      return this.push.apply(this, arguments);\n    };\n\n    Stack.prototype.unshiftAll = function(iter) {\n      return this.pushAll(iter);\n    };\n\n    Stack.prototype.shift = function() {\n      return this.pop.apply(this, arguments);\n    };\n\n    Stack.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._head = undefined;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyStack();\n    };\n\n    Stack.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      var resolvedBegin = resolveBegin(begin, this.size);\n      var resolvedEnd = resolveEnd(end, this.size);\n      if (resolvedEnd !== this.size) {\n        // super.slice(begin, end);\n        return IndexedCollection.prototype.slice.call(this, begin, end);\n      }\n      var newSize = this.size - resolvedBegin;\n      var head = this._head;\n      while (resolvedBegin--) {\n        head = head.next;\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    // @pragma Mutability\n\n    Stack.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeStack(this.size, this._head, ownerID, this.__hash);\n    };\n\n    // @pragma Iteration\n\n    Stack.prototype.__iterate = function(fn, reverse) {\n      if (reverse) {\n        return this.reverse().__iterate(fn);\n      }\n      var iterations = 0;\n      var node = this._head;\n      while (node) {\n        if (fn(node.value, iterations++, this) === false) {\n          break;\n        }\n        node = node.next;\n      }\n      return iterations;\n    };\n\n    Stack.prototype.__iterator = function(type, reverse) {\n      if (reverse) {\n        return this.reverse().__iterator(type);\n      }\n      var iterations = 0;\n      var node = this._head;\n      return new Iterator(function()  {\n        if (node) {\n          var value = node.value;\n          node = node.next;\n          return iteratorValue(type, iterations++, value);\n        }\n        return iteratorDone();\n      });\n    };\n\n\n  function isStack(maybeStack) {\n    return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n  }\n\n  Stack.isStack = isStack;\n\n  var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n  var StackPrototype = Stack.prototype;\n  StackPrototype[IS_STACK_SENTINEL] = true;\n  StackPrototype.withMutations = MapPrototype.withMutations;\n  StackPrototype.asMutable = MapPrototype.asMutable;\n  StackPrototype.asImmutable = MapPrototype.asImmutable;\n  StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n  function makeStack(size, head, ownerID, hash) {\n    var map = Object.create(StackPrototype);\n    map.size = size;\n    map._head = head;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_STACK;\n  function emptyStack() {\n    return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n  }\n\n  /**\n   * Contributes additional methods to a constructor\n   */\n  function mixin(ctor, methods) {\n    var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n    Object.keys(methods).forEach(keyCopier);\n    Object.getOwnPropertySymbols &&\n      Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n    return ctor;\n  }\n\n  Iterable.Iterator = Iterator;\n\n  mixin(Iterable, {\n\n    // ### Conversion to other types\n\n    toArray: function() {\n      assertNotInfinite(this.size);\n      var array = new Array(this.size || 0);\n      this.valueSeq().__iterate(function(v, i)  { array[i] = v; });\n      return array;\n    },\n\n    toIndexedSeq: function() {\n      return new ToIndexedSequence(this);\n    },\n\n    toJS: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n      ).__toJS();\n    },\n\n    toJSON: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n      ).__toJS();\n    },\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, true);\n    },\n\n    toMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Map(this.toKeyedSeq());\n    },\n\n    toObject: function() {\n      assertNotInfinite(this.size);\n      var object = {};\n      this.__iterate(function(v, k)  { object[k] = v; });\n      return object;\n    },\n\n    toOrderedMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedMap(this.toKeyedSeq());\n    },\n\n    toOrderedSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Set(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSetSeq: function() {\n      return new ToSetSequence(this);\n    },\n\n    toSeq: function() {\n      return isIndexed(this) ? this.toIndexedSeq() :\n        isKeyed(this) ? this.toKeyedSeq() :\n        this.toSetSeq();\n    },\n\n    toStack: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Stack(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toList: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return List(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n\n    // ### Common JavaScript methods and properties\n\n    toString: function() {\n      return '[Iterable]';\n    },\n\n    __toString: function(head, tail) {\n      if (this.size === 0) {\n        return head + tail;\n      }\n      return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    concat: function() {var values = SLICE$0.call(arguments, 0);\n      return reify(this, concatFactory(this, values));\n    },\n\n    includes: function(searchValue) {\n      return this.some(function(value ) {return is(value, searchValue)});\n    },\n\n    entries: function() {\n      return this.__iterator(ITERATE_ENTRIES);\n    },\n\n    every: function(predicate, context) {\n      assertNotInfinite(this.size);\n      var returnValue = true;\n      this.__iterate(function(v, k, c)  {\n        if (!predicate.call(context, v, k, c)) {\n          returnValue = false;\n          return false;\n        }\n      });\n      return returnValue;\n    },\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, true));\n    },\n\n    find: function(predicate, context, notSetValue) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[1] : notSetValue;\n    },\n\n    findEntry: function(predicate, context) {\n      var found;\n      this.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          found = [k, v];\n          return false;\n        }\n      });\n      return found;\n    },\n\n    findLastEntry: function(predicate, context) {\n      return this.toSeq().reverse().findEntry(predicate, context);\n    },\n\n    forEach: function(sideEffect, context) {\n      assertNotInfinite(this.size);\n      return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n    },\n\n    join: function(separator) {\n      assertNotInfinite(this.size);\n      separator = separator !== undefined ? '' + separator : ',';\n      var joined = '';\n      var isFirst = true;\n      this.__iterate(function(v ) {\n        isFirst ? (isFirst = false) : (joined += separator);\n        joined += v !== null && v !== undefined ? v.toString() : '';\n      });\n      return joined;\n    },\n\n    keys: function() {\n      return this.__iterator(ITERATE_KEYS);\n    },\n\n    map: function(mapper, context) {\n      return reify(this, mapFactory(this, mapper, context));\n    },\n\n    reduce: function(reducer, initialReduction, context) {\n      assertNotInfinite(this.size);\n      var reduction;\n      var useFirst;\n      if (arguments.length < 2) {\n        useFirst = true;\n      } else {\n        reduction = initialReduction;\n      }\n      this.__iterate(function(v, k, c)  {\n        if (useFirst) {\n          useFirst = false;\n          reduction = v;\n        } else {\n          reduction = reducer.call(context, reduction, v, k, c);\n        }\n      });\n      return reduction;\n    },\n\n    reduceRight: function(reducer, initialReduction, context) {\n      var reversed = this.toKeyedSeq().reverse();\n      return reversed.reduce.apply(reversed, arguments);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, true));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, true));\n    },\n\n    some: function(predicate, context) {\n      return !this.every(not(predicate), context);\n    },\n\n    sort: function(comparator) {\n      return reify(this, sortFactory(this, comparator));\n    },\n\n    values: function() {\n      return this.__iterator(ITERATE_VALUES);\n    },\n\n\n    // ### More sequential methods\n\n    butLast: function() {\n      return this.slice(0, -1);\n    },\n\n    isEmpty: function() {\n      return this.size !== undefined ? this.size === 0 : !this.some(function()  {return true});\n    },\n\n    count: function(predicate, context) {\n      return ensureSize(\n        predicate ? this.toSeq().filter(predicate, context) : this\n      );\n    },\n\n    countBy: function(grouper, context) {\n      return countByFactory(this, grouper, context);\n    },\n\n    equals: function(other) {\n      return deepEqual(this, other);\n    },\n\n    entrySeq: function() {\n      var iterable = this;\n      if (iterable._cache) {\n        // We cache as an entries array, so we can just return the cache!\n        return new ArraySeq(iterable._cache);\n      }\n      var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n      entriesSequence.fromEntrySeq = function()  {return iterable.toSeq()};\n      return entriesSequence;\n    },\n\n    filterNot: function(predicate, context) {\n      return this.filter(not(predicate), context);\n    },\n\n    findLast: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n    },\n\n    first: function() {\n      return this.find(returnTrue);\n    },\n\n    flatMap: function(mapper, context) {\n      return reify(this, flatMapFactory(this, mapper, context));\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, true));\n    },\n\n    fromEntrySeq: function() {\n      return new FromEntriesSequence(this);\n    },\n\n    get: function(searchKey, notSetValue) {\n      return this.find(function(_, key)  {return is(key, searchKey)}, undefined, notSetValue);\n    },\n\n    getIn: function(searchKeyPath, notSetValue) {\n      var nested = this;\n      // Note: in an ES6 environment, we would prefer:\n      // for (var key of searchKeyPath) {\n      var iter = forceIterator(searchKeyPath);\n      var step;\n      while (!(step = iter.next()).done) {\n        var key = step.value;\n        nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n        if (nested === NOT_SET) {\n          return notSetValue;\n        }\n      }\n      return nested;\n    },\n\n    groupBy: function(grouper, context) {\n      return groupByFactory(this, grouper, context);\n    },\n\n    has: function(searchKey) {\n      return this.get(searchKey, NOT_SET) !== NOT_SET;\n    },\n\n    hasIn: function(searchKeyPath) {\n      return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n    },\n\n    isSubset: function(iter) {\n      iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n      return this.every(function(value ) {return iter.includes(value)});\n    },\n\n    isSuperset: function(iter) {\n      iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n      return iter.isSubset(this);\n    },\n\n    keySeq: function() {\n      return this.toSeq().map(keyMapper).toIndexedSeq();\n    },\n\n    last: function() {\n      return this.toSeq().reverse().first();\n    },\n\n    max: function(comparator) {\n      return maxFactory(this, comparator);\n    },\n\n    maxBy: function(mapper, comparator) {\n      return maxFactory(this, comparator, mapper);\n    },\n\n    min: function(comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n    },\n\n    minBy: function(mapper, comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n    },\n\n    rest: function() {\n      return this.slice(1);\n    },\n\n    skip: function(amount) {\n      return this.slice(Math.max(0, amount));\n    },\n\n    skipLast: function(amount) {\n      return reify(this, this.toSeq().reverse().skip(amount).reverse());\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, true));\n    },\n\n    skipUntil: function(predicate, context) {\n      return this.skipWhile(not(predicate), context);\n    },\n\n    sortBy: function(mapper, comparator) {\n      return reify(this, sortFactory(this, comparator, mapper));\n    },\n\n    take: function(amount) {\n      return this.slice(0, Math.max(0, amount));\n    },\n\n    takeLast: function(amount) {\n      return reify(this, this.toSeq().reverse().take(amount).reverse());\n    },\n\n    takeWhile: function(predicate, context) {\n      return reify(this, takeWhileFactory(this, predicate, context));\n    },\n\n    takeUntil: function(predicate, context) {\n      return this.takeWhile(not(predicate), context);\n    },\n\n    valueSeq: function() {\n      return this.toIndexedSeq();\n    },\n\n\n    // ### Hashable Object\n\n    hashCode: function() {\n      return this.__hash || (this.__hash = hashIterable(this));\n    }\n\n\n    // ### Internal\n\n    // abstract __iterate(fn, reverse)\n\n    // abstract __iterator(type, reverse)\n  });\n\n  // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  var IterablePrototype = Iterable.prototype;\n  IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n  IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n  IterablePrototype.__toJS = IterablePrototype.toArray;\n  IterablePrototype.__toStringMapper = quoteString;\n  IterablePrototype.inspect =\n  IterablePrototype.toSource = function() { return this.toString(); };\n  IterablePrototype.chain = IterablePrototype.flatMap;\n  IterablePrototype.contains = IterablePrototype.includes;\n\n  // Temporary warning about using length\n  (function () {\n    try {\n      Object.defineProperty(IterablePrototype, 'length', {\n        get: function () {\n          if (!Iterable.noLengthWarning) {\n            var stack;\n            try {\n              throw new Error();\n            } catch (error) {\n              stack = error.stack;\n            }\n            if (stack.indexOf('_wrapObject') === -1) {\n              console && console.warn && console.warn(\n                'iterable.length has been deprecated, '+\n                'use iterable.size or iterable.count(). '+\n                'This warning will become a silent error in a future version. ' +\n                stack\n              );\n              return this.size;\n            }\n          }\n        }\n      });\n    } catch (e) {}\n  })();\n\n\n\n  mixin(KeyedIterable, {\n\n    // ### More sequential methods\n\n    flip: function() {\n      return reify(this, flipFactory(this));\n    },\n\n    findKey: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry && entry[0];\n    },\n\n    findLastKey: function(predicate, context) {\n      return this.toSeq().reverse().findKey(predicate, context);\n    },\n\n    keyOf: function(searchValue) {\n      return this.findKey(function(value ) {return is(value, searchValue)});\n    },\n\n    lastKeyOf: function(searchValue) {\n      return this.findLastKey(function(value ) {return is(value, searchValue)});\n    },\n\n    mapEntries: function(mapper, context) {var this$0 = this;\n      var iterations = 0;\n      return reify(this,\n        this.toSeq().map(\n          function(v, k)  {return mapper.call(context, [k, v], iterations++, this$0)}\n        ).fromEntrySeq()\n      );\n    },\n\n    mapKeys: function(mapper, context) {var this$0 = this;\n      return reify(this,\n        this.toSeq().flip().map(\n          function(k, v)  {return mapper.call(context, k, v, this$0)}\n        ).flip()\n      );\n    }\n\n  });\n\n  var KeyedIterablePrototype = KeyedIterable.prototype;\n  KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n  KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n  KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n  KeyedIterablePrototype.__toStringMapper = function(v, k)  {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n  mixin(IndexedIterable, {\n\n    // ### Conversion to other types\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, false);\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, false));\n    },\n\n    findIndex: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    indexOf: function(searchValue) {\n      var key = this.toKeyedSeq().keyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    lastIndexOf: function(searchValue) {\n      var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n      return key === undefined ? -1 : key;\n\n      // var index =\n      // return this.toSeq().reverse().indexOf(searchValue);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, false));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, false));\n    },\n\n    splice: function(index, removeNum /*, ...values*/) {\n      var numArgs = arguments.length;\n      removeNum = Math.max(removeNum | 0, 0);\n      if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n        return this;\n      }\n      // If index is negative, it should resolve relative to the size of the\n      // collection. However size may be expensive to compute if not cached, so\n      // only call count() if the number is in fact negative.\n      index = resolveBegin(index, index < 0 ? this.count() : this.size);\n      var spliced = this.slice(0, index);\n      return reify(\n        this,\n        numArgs === 1 ?\n          spliced :\n          spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n      );\n    },\n\n\n    // ### More collection methods\n\n    findLastIndex: function(predicate, context) {\n      var key = this.toKeyedSeq().findLastKey(predicate, context);\n      return key === undefined ? -1 : key;\n    },\n\n    first: function() {\n      return this.get(0);\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, false));\n    },\n\n    get: function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      return (index < 0 || (this.size === Infinity ||\n          (this.size !== undefined && index > this.size))) ?\n        notSetValue :\n        this.find(function(_, key)  {return key === index}, undefined, notSetValue);\n    },\n\n    has: function(index) {\n      index = wrapIndex(this, index);\n      return index >= 0 && (this.size !== undefined ?\n        this.size === Infinity || index < this.size :\n        this.indexOf(index) !== -1\n      );\n    },\n\n    interpose: function(separator) {\n      return reify(this, interposeFactory(this, separator));\n    },\n\n    interleave: function(/*...iterables*/) {\n      var iterables = [this].concat(arrCopy(arguments));\n      var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n      var interleaved = zipped.flatten(true);\n      if (zipped.size) {\n        interleaved.size = zipped.size * iterables.length;\n      }\n      return reify(this, interleaved);\n    },\n\n    last: function() {\n      return this.get(-1);\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, false));\n    },\n\n    zip: function(/*, ...iterables */) {\n      var iterables = [this].concat(arrCopy(arguments));\n      return reify(this, zipWithFactory(this, defaultZipper, iterables));\n    },\n\n    zipWith: function(zipper/*, ...iterables */) {\n      var iterables = arrCopy(arguments);\n      iterables[0] = this;\n      return reify(this, zipWithFactory(this, zipper, iterables));\n    }\n\n  });\n\n  IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n  IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n  mixin(SetIterable, {\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    get: function(value, notSetValue) {\n      return this.has(value) ? value : notSetValue;\n    },\n\n    includes: function(value) {\n      return this.has(value);\n    },\n\n\n    // ### More sequential methods\n\n    keySeq: function() {\n      return this.valueSeq();\n    }\n\n  });\n\n  SetIterable.prototype.has = IterablePrototype.includes;\n\n\n  // Mixin subclasses\n\n  mixin(KeyedSeq, KeyedIterable.prototype);\n  mixin(IndexedSeq, IndexedIterable.prototype);\n  mixin(SetSeq, SetIterable.prototype);\n\n  mixin(KeyedCollection, KeyedIterable.prototype);\n  mixin(IndexedCollection, IndexedIterable.prototype);\n  mixin(SetCollection, SetIterable.prototype);\n\n\n  // #pragma Helper functions\n\n  function keyMapper(v, k) {\n    return k;\n  }\n\n  function entryMapper(v, k) {\n    return [k, v];\n  }\n\n  function not(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    }\n  }\n\n  function neg(predicate) {\n    return function() {\n      return -predicate.apply(this, arguments);\n    }\n  }\n\n  function quoteString(value) {\n    return typeof value === 'string' ? JSON.stringify(value) : value;\n  }\n\n  function defaultZipper() {\n    return arrCopy(arguments);\n  }\n\n  function defaultNegComparator(a, b) {\n    return a < b ? 1 : a > b ? -1 : 0;\n  }\n\n  function hashIterable(iterable) {\n    if (iterable.size === Infinity) {\n      return 0;\n    }\n    var ordered = isOrdered(iterable);\n    var keyed = isKeyed(iterable);\n    var h = ordered ? 1 : 0;\n    var size = iterable.__iterate(\n      keyed ?\n        ordered ?\n          function(v, k)  { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n          function(v, k)  { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n        ordered ?\n          function(v ) { h = 31 * h + hash(v) | 0; } :\n          function(v ) { h = h + hash(v) | 0; }\n    );\n    return murmurHashOfSize(size, h);\n  }\n\n  function murmurHashOfSize(size, h) {\n    h = imul(h, 0xCC9E2D51);\n    h = imul(h << 15 | h >>> -15, 0x1B873593);\n    h = imul(h << 13 | h >>> -13, 5);\n    h = (h + 0xE6546B64 | 0) ^ size;\n    h = imul(h ^ h >>> 16, 0x85EBCA6B);\n    h = imul(h ^ h >>> 13, 0xC2B2AE35);\n    h = smi(h ^ h >>> 16);\n    return h;\n  }\n\n  function hashMerge(a, b) {\n    return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n  }\n\n  var Immutable = {\n\n    Iterable: Iterable,\n\n    Seq: Seq,\n    Collection: Collection,\n    Map: Map,\n    OrderedMap: OrderedMap,\n    List: List,\n    Stack: Stack,\n    Set: Set,\n    OrderedSet: OrderedSet,\n\n    Record: Record,\n    Range: Range,\n    Repeat: Repeat,\n\n    is: is,\n    fromJS: fromJS\n\n  };\n\n  return Immutable;\n\n}));","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {} : function (format) {\n  if (format === undefined) {\n    throw new Error('invariant(...): Second argument must be a string.');\n  }\n};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return String(args[argIndex++]);\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // Skip invariant's own stack frame.\n\n    throw error;\n  }\n}\n\nmodule.exports = invariant;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Stack = Immutable.Stack,\n    OrderedMap = Immutable.OrderedMap,\n    List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n  allowUndo: true,\n  currentContent: null,\n  decorator: null,\n  directionMap: null,\n  forceSelection: false,\n  inCompositionMode: false,\n  inlineStyleOverride: null,\n  lastChangeType: null,\n  nativelyRenderedContent: null,\n  redoStack: Stack(),\n  selection: null,\n  treeMap: null,\n  undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState =\n/*#__PURE__*/\nfunction () {\n  EditorState.createEmpty = function createEmpty(decorator) {\n    return EditorState.createWithContent(ContentState.createFromText(''), decorator);\n  };\n\n  EditorState.createWithContent = function createWithContent(contentState, decorator) {\n    if (contentState.getBlockMap().count() === 0) {\n      return EditorState.createEmpty(decorator);\n    }\n\n    var firstKey = contentState.getBlockMap().first().getKey();\n    return EditorState.create({\n      currentContent: contentState,\n      undoStack: Stack(),\n      redoStack: Stack(),\n      decorator: decorator || null,\n      selection: SelectionState.createEmpty(firstKey)\n    });\n  };\n\n  EditorState.create = function create(config) {\n    var currentContent = config.currentContent,\n        decorator = config.decorator;\n\n    var recordConfig = _objectSpread({}, config, {\n      treeMap: generateNewTreeMap(currentContent, decorator),\n      directionMap: EditorBidiService.getDirectionMap(currentContent)\n    });\n\n    return new EditorState(new EditorStateRecord(recordConfig));\n  };\n\n  EditorState.fromJS = function fromJS(config) {\n    return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n      directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n      inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n      nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n      redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n        return ContentState.fromJS(v);\n      })) : config.redoStack,\n      selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n      treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n        return List(v).map(function (v) {\n          return BlockTree.fromJS(v);\n        });\n      }) : config.treeMap,\n      undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n        return ContentState.fromJS(v);\n      })) : config.undoStack,\n      currentContent: ContentState.fromJS(config.currentContent)\n    })));\n  };\n\n  EditorState.set = function set(editorState, put) {\n    var map = editorState.getImmutable().withMutations(function (state) {\n      var existingDecorator = state.get('decorator');\n      var decorator = existingDecorator;\n\n      if (put.decorator === null) {\n        decorator = null;\n      } else if (put.decorator) {\n        decorator = put.decorator;\n      }\n\n      var newContent = put.currentContent || editorState.getCurrentContent();\n\n      if (decorator !== existingDecorator) {\n        var treeMap = state.get('treeMap');\n        var newTreeMap;\n\n        if (decorator && existingDecorator) {\n          newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n        } else {\n          newTreeMap = generateNewTreeMap(newContent, decorator);\n        }\n\n        state.merge({\n          decorator: decorator,\n          treeMap: newTreeMap,\n          nativelyRenderedContent: null\n        });\n        return;\n      }\n\n      var existingContent = editorState.getCurrentContent();\n\n      if (newContent !== existingContent) {\n        state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n      }\n\n      state.merge(put);\n    });\n    return new EditorState(map);\n  };\n\n  var _proto = EditorState.prototype;\n\n  _proto.toJS = function toJS() {\n    return this.getImmutable().toJS();\n  };\n\n  _proto.getAllowUndo = function getAllowUndo() {\n    return this.getImmutable().get('allowUndo');\n  };\n\n  _proto.getCurrentContent = function getCurrentContent() {\n    return this.getImmutable().get('currentContent');\n  };\n\n  _proto.getUndoStack = function getUndoStack() {\n    return this.getImmutable().get('undoStack');\n  };\n\n  _proto.getRedoStack = function getRedoStack() {\n    return this.getImmutable().get('redoStack');\n  };\n\n  _proto.getSelection = function getSelection() {\n    return this.getImmutable().get('selection');\n  };\n\n  _proto.getDecorator = function getDecorator() {\n    return this.getImmutable().get('decorator');\n  };\n\n  _proto.isInCompositionMode = function isInCompositionMode() {\n    return this.getImmutable().get('inCompositionMode');\n  };\n\n  _proto.mustForceSelection = function mustForceSelection() {\n    return this.getImmutable().get('forceSelection');\n  };\n\n  _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n    return this.getImmutable().get('nativelyRenderedContent');\n  };\n\n  _proto.getLastChangeType = function getLastChangeType() {\n    return this.getImmutable().get('lastChangeType');\n  }\n  /**\n   * While editing, the user may apply inline style commands with a collapsed\n   * cursor, intending to type text that adopts the specified style. In this\n   * case, we track the specified style as an \"override\" that takes precedence\n   * over the inline style of the text adjacent to the cursor.\n   *\n   * If null, there is no override in place.\n   */\n  ;\n\n  _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n    return this.getImmutable().get('inlineStyleOverride');\n  };\n\n  EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n    return EditorState.set(editorState, {\n      inlineStyleOverride: inlineStyleOverride\n    });\n  }\n  /**\n   * Get the appropriate inline style for the editor state. If an\n   * override is in place, use it. Otherwise, the current style is\n   * based on the location of the selection state.\n   */\n  ;\n\n  _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n    var override = this.getInlineStyleOverride();\n\n    if (override != null) {\n      return override;\n    }\n\n    var content = this.getCurrentContent();\n    var selection = this.getSelection();\n\n    if (selection.isCollapsed()) {\n      return getInlineStyleForCollapsedSelection(content, selection);\n    }\n\n    return getInlineStyleForNonCollapsedSelection(content, selection);\n  };\n\n  _proto.getBlockTree = function getBlockTree(blockKey) {\n    return this.getImmutable().getIn(['treeMap', blockKey]);\n  };\n\n  _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n    var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n    return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n  };\n\n  _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n    var content = this.getCurrentContent();\n    var blockMap = content.getBlockMap();\n    var last = blockMap.last();\n    var end = last.getLength();\n    return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n  };\n\n  _proto.getDirectionMap = function getDirectionMap() {\n    return this.getImmutable().get('directionMap');\n  }\n  /**\n   * Incorporate native DOM selection changes into the EditorState. This\n   * method can be used when we simply want to accept whatever the DOM\n   * has given us to represent selection, and we do not need to re-render\n   * the editor.\n   *\n   * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n   */\n  ;\n\n  EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n    return updateSelection(editorState, selection, false);\n  }\n  /**\n   * At times, we need to force the DOM selection to be where we\n   * need it to be. This can occur when the anchor or focus nodes\n   * are non-text nodes, for instance. In this case, we want to trigger\n   * a re-render of the editor, which in turn forces selection into\n   * the correct place in the DOM. The `forceSelection` method\n   * accomplishes this.\n   *\n   * This method should be used in cases where you need to explicitly\n   * move the DOM selection from one place to another without a change\n   * in ContentState.\n   */\n  ;\n\n  EditorState.forceSelection = function forceSelection(editorState, selection) {\n    if (!selection.getHasFocus()) {\n      selection = selection.set('hasFocus', true);\n    }\n\n    return updateSelection(editorState, selection, true);\n  }\n  /**\n   * Move selection to the end of the editor without forcing focus.\n   */\n  ;\n\n  EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n    var content = editorState.getCurrentContent();\n    var lastBlock = content.getLastBlock();\n    var lastKey = lastBlock.getKey();\n    var length = lastBlock.getLength();\n    return EditorState.acceptSelection(editorState, new SelectionState({\n      anchorKey: lastKey,\n      anchorOffset: length,\n      focusKey: lastKey,\n      focusOffset: length,\n      isBackward: false\n    }));\n  }\n  /**\n   * Force focus to the end of the editor. This is useful in scenarios\n   * where we want to programmatically focus the input and it makes sense\n   * to allow the user to continue working seamlessly.\n   */\n  ;\n\n  EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n    var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n    return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n  }\n  /**\n   * Push the current ContentState onto the undo stack if it should be\n   * considered a boundary state, and set the provided ContentState as the\n   * new current content.\n   */\n  ;\n\n  EditorState.push = function push(editorState, contentState, changeType) {\n    var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n    if (editorState.getCurrentContent() === contentState) {\n      return editorState;\n    }\n\n    var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n    if (!editorState.getAllowUndo()) {\n      return EditorState.set(editorState, {\n        currentContent: contentState,\n        directionMap: directionMap,\n        lastChangeType: changeType,\n        selection: contentState.getSelectionAfter(),\n        forceSelection: forceSelection,\n        inlineStyleOverride: null\n      });\n    }\n\n    var selection = editorState.getSelection();\n    var currentContent = editorState.getCurrentContent();\n    var undoStack = editorState.getUndoStack();\n    var newContent = contentState;\n\n    if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n      undoStack = undoStack.push(currentContent);\n      newContent = newContent.set('selectionBefore', selection);\n    } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n      // Preserve the previous selection.\n      newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n    }\n\n    var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n    var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n    if (overrideChangeTypes.indexOf(changeType) === -1) {\n      inlineStyleOverride = null;\n    }\n\n    var editorStateChanges = {\n      currentContent: newContent,\n      directionMap: directionMap,\n      undoStack: undoStack,\n      redoStack: Stack(),\n      lastChangeType: changeType,\n      selection: contentState.getSelectionAfter(),\n      forceSelection: forceSelection,\n      inlineStyleOverride: inlineStyleOverride\n    };\n    return EditorState.set(editorState, editorStateChanges);\n  }\n  /**\n   * Make the top ContentState in the undo stack the new current content and\n   * push the current content onto the redo stack.\n   */\n  ;\n\n  EditorState.undo = function undo(editorState) {\n    if (!editorState.getAllowUndo()) {\n      return editorState;\n    }\n\n    var undoStack = editorState.getUndoStack();\n    var newCurrentContent = undoStack.peek();\n\n    if (!newCurrentContent) {\n      return editorState;\n    }\n\n    var currentContent = editorState.getCurrentContent();\n    var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n    return EditorState.set(editorState, {\n      currentContent: newCurrentContent,\n      directionMap: directionMap,\n      undoStack: undoStack.shift(),\n      redoStack: editorState.getRedoStack().push(currentContent),\n      forceSelection: true,\n      inlineStyleOverride: null,\n      lastChangeType: 'undo',\n      nativelyRenderedContent: null,\n      selection: currentContent.getSelectionBefore()\n    });\n  }\n  /**\n   * Make the top ContentState in the redo stack the new current content and\n   * push the current content onto the undo stack.\n   */\n  ;\n\n  EditorState.redo = function redo(editorState) {\n    if (!editorState.getAllowUndo()) {\n      return editorState;\n    }\n\n    var redoStack = editorState.getRedoStack();\n    var newCurrentContent = redoStack.peek();\n\n    if (!newCurrentContent) {\n      return editorState;\n    }\n\n    var currentContent = editorState.getCurrentContent();\n    var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n    return EditorState.set(editorState, {\n      currentContent: newCurrentContent,\n      directionMap: directionMap,\n      undoStack: editorState.getUndoStack().push(currentContent),\n      redoStack: redoStack.shift(),\n      forceSelection: true,\n      inlineStyleOverride: null,\n      lastChangeType: 'redo',\n      nativelyRenderedContent: null,\n      selection: newCurrentContent.getSelectionAfter()\n    });\n  }\n  /**\n   * Not for public consumption.\n   */\n  ;\n\n  function EditorState(immutable) {\n    _defineProperty(this, \"_immutable\", void 0);\n\n    this._immutable = immutable;\n  }\n  /**\n   * Not for public consumption.\n   */\n\n\n  _proto.getImmutable = function getImmutable() {\n    return this._immutable;\n  };\n\n  return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n  return EditorState.set(editorState, {\n    selection: selection,\n    forceSelection: forceSelection,\n    nativelyRenderedContent: null,\n    inlineStyleOverride: null\n  });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n  return contentState.getBlockMap().map(function (block) {\n    return BlockTree.generate(contentState, block, decorator);\n  }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n  var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n  var prevBlockMap = contentState.getBlockMap();\n  var prevTreeMap = editorState.getImmutable().get('treeMap');\n  return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n    return block !== prevBlockMap.get(key);\n  }).map(function (block) {\n    return BlockTree.generate(contentState, block, decorator);\n  }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n  return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n    return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n  }).map(function (block) {\n    return BlockTree.generate(content, block, decorator);\n  }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n  var lastChangeType = editorState.getLastChangeType();\n  return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n  var startKey = selection.getStartKey();\n  var startOffset = selection.getStartOffset();\n  var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n  // preserve the style of the preceding character.\n\n  if (startOffset > 0) {\n    return startBlock.getInlineStyleAt(startOffset - 1);\n  } // The caret is at position zero in this block. If the block has any\n  // text at all, use the style of the first character.\n\n\n  if (startBlock.getLength()) {\n    return startBlock.getInlineStyleAt(0);\n  } // Otherwise, look upward in the document to find the closest character.\n\n\n  return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n  var startKey = selection.getStartKey();\n  var startOffset = selection.getStartOffset();\n  var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n  if (startOffset < startBlock.getLength()) {\n    return startBlock.getInlineStyleAt(startOffset);\n  } // Check if the selection at the end of a non-empty block. Use the last\n  // style in the block.\n\n\n  if (startOffset > 0) {\n    return startBlock.getInlineStyleAt(startOffset - 1);\n  } // Otherwise, look upward in the document to find the closest character.\n\n\n  return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n  var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n    return k === fromKey;\n  }).skip(1).skipUntil(function (block, _) {\n    return block.getLength();\n  }).first();\n\n  if (lastNonEmpty) {\n    return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n  }\n\n  return OrderedSet();\n}\n\nmodule.exports = EditorState;","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n  replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n    var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n    var character = CharacterMetadata.create({\n      style: inlineStyle || OrderedSet(),\n      entity: entityKey || null\n    });\n    return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n  },\n  insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n    !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n    return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n  },\n  moveText: function moveText(contentState, removalRange, targetRange) {\n    var movedFragment = getContentStateFragment(contentState, removalRange);\n    var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n    return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n  },\n  replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n    var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n    var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n    var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n    return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n  },\n  removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n    var startKey, endKey, startBlock, endBlock;\n\n    if (rangeToRemove.getIsBackward()) {\n      rangeToRemove = rangeToRemove.merge({\n        anchorKey: rangeToRemove.getFocusKey(),\n        anchorOffset: rangeToRemove.getFocusOffset(),\n        focusKey: rangeToRemove.getAnchorKey(),\n        focusOffset: rangeToRemove.getAnchorOffset(),\n        isBackward: false\n      });\n    }\n\n    startKey = rangeToRemove.getAnchorKey();\n    endKey = rangeToRemove.getFocusKey();\n    startBlock = contentState.getBlockForKey(startKey);\n    endBlock = contentState.getBlockForKey(endKey);\n    var startOffset = rangeToRemove.getStartOffset();\n    var endOffset = rangeToRemove.getEndOffset();\n    var startEntityKey = startBlock.getEntityAt(startOffset);\n    var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n    // If so, try to remove the appropriate substring of the entity text.\n\n    if (startKey === endKey) {\n      if (startEntityKey && startEntityKey === endEntityKey) {\n        var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n        return removeRangeFromContentState(contentState, adjustedRemovalRange);\n      }\n    }\n\n    var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n    return removeRangeFromContentState(withoutEntities, rangeToRemove);\n  },\n  splitBlock: function splitBlock(contentState, selectionState) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n    var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n    return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n  },\n  applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n    return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n  },\n  removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n    return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n  },\n  setBlockType: function setBlockType(contentState, selectionState, blockType) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        type: blockType,\n        depth: 0\n      });\n    });\n  },\n  setBlockData: function setBlockData(contentState, selectionState, blockData) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        data: blockData\n      });\n    });\n  },\n  mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        data: block.getData().merge(blockData)\n      });\n    });\n  },\n  applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n    return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n  }\n};\nmodule.exports = DraftModifier;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n  if (x != null) {\n    return x;\n  }\n\n  throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n  var S = String(defined(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n  var O = {};\n  O[NAME] = exec(createHTML);\n  $export($export.P + $export.F * fails(function () {\n    var test = ''[NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  }), 'String', O);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n  // check for exact match with no version\n  if (name === query) {\n    return true;\n  } // check for non-matching names\n\n\n  if (!query.startsWith(name)) {\n    return false;\n  } // full comparison with version\n\n\n  var range = query.slice(name.length);\n\n  if (version) {\n    range = normalizer ? normalizer(range) : range;\n    return VersionRange.contains(range, version);\n  }\n\n  return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n  if (UserAgentData.platformName === 'Windows') {\n    return version.replace(/^\\s*NT/, '');\n  }\n\n  return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n  /**\n   * Check if the User Agent browser matches `query`.\n   *\n   * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n   *\n   * Valid browser names include:\n   *\n   * - ACCESS NetFront\n   * - AOL\n   * - Amazon Silk\n   * - Android\n   * - BlackBerry\n   * - BlackBerry PlayBook\n   * - Chrome\n   * - Chrome for iOS\n   * - Chrome frame\n   * - Facebook PHP SDK\n   * - Facebook for iOS\n   * - Firefox\n   * - IE\n   * - IE Mobile\n   * - Mobile Safari\n   * - Motorola Internet Browser\n   * - Nokia\n   * - Openwave Mobile Browser\n   * - Opera\n   * - Opera Mini\n   * - Opera Mobile\n   * - Safari\n   * - UIWebView\n   * - Unknown\n   * - webOS\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `BrowserDetector` class and\n   * related classes in the same file (see calls to `new UserAgentBrowser` here:\n   * https://fburl.com/50728104).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isBrowser: function isBrowser(query) {\n    return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n  },\n\n  /**\n   * Check if the User Agent browser uses a 32 or 64 bit architecture.\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"32\" or \"64\".\n   * @return {boolean}\n   */\n  isBrowserArchitecture: function isBrowserArchitecture(query) {\n    return compare(UserAgentData.browserArchitecture, null, query);\n  },\n\n  /**\n   * Check if the User Agent device matches `query`.\n   *\n   * `query` should be a string like \"iPhone\" or \"iPad\".\n   *\n   * Valid device names include:\n   *\n   * - Kindle\n   * - Kindle Fire\n   * - Unknown\n   * - iPad\n   * - iPhone\n   * - iPod\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `DeviceDetector` class and\n   * related classes in the same file (see calls to `new UserAgentDevice` here:\n   * https://fburl.com/50728332).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name\"\n   * @return {boolean}\n   */\n  isDevice: function isDevice(query) {\n    return compare(UserAgentData.deviceName, null, query);\n  },\n\n  /**\n   * Check if the User Agent rendering engine matches `query`.\n   *\n   * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n   *\n   * Valid engine names include:\n   *\n   * - Gecko\n   * - Presto\n   * - Trident\n   * - WebKit\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `RenderingEngineDetector`\n   * class related classes in the same file (see calls to `new\n   * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isEngine: function isEngine(query) {\n    return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n  },\n\n  /**\n   * Check if the User Agent platform matches `query`.\n   *\n   * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n   *\n   * Valid platform names include:\n   *\n   * - Android\n   * - BlackBerry OS\n   * - Java ME\n   * - Linux\n   * - Mac OS X\n   * - Mac OS X Calendar\n   * - Mac OS X Internet Account\n   * - Symbian\n   * - SymbianOS\n   * - Windows\n   * - Windows Mobile\n   * - Windows Phone\n   * - iOS\n   * - iOS Facebook Integration Account\n   * - iOS Facebook Social Sharing UI\n   * - webOS\n   * - Chrome OS\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `PlatformDetector` class and\n   * related classes in the same file (see calls to `new UserAgentPlatform`\n   * here: https://fburl.com/50729226).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isPlatform: function isPlatform(query) {\n    return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n  },\n\n  /**\n   * Check if the User Agent platform is a 32 or 64 bit architecture.\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"32\" or \"64\".\n   * @return {boolean}\n   */\n  isPlatformArchitecture: function isPlatformArchitecture(query) {\n    return compare(UserAgentData.platformArchitecture, null, query);\n  }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, 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 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 * @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 `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map,\n    OrderedSet = _require.OrderedSet,\n    Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  style: EMPTY_SET,\n  entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata =\n/*#__PURE__*/\nfunction (_CharacterMetadataRec) {\n  _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n  function CharacterMetadata() {\n    return _CharacterMetadataRec.apply(this, arguments) || this;\n  }\n\n  var _proto = CharacterMetadata.prototype;\n\n  _proto.getStyle = function getStyle() {\n    return this.get('style');\n  };\n\n  _proto.getEntity = function getEntity() {\n    return this.get('entity');\n  };\n\n  _proto.hasStyle = function hasStyle(style) {\n    return this.getStyle().includes(style);\n  };\n\n  CharacterMetadata.applyStyle = function applyStyle(record, style) {\n    var withStyle = record.set('style', record.getStyle().add(style));\n    return CharacterMetadata.create(withStyle);\n  };\n\n  CharacterMetadata.removeStyle = function removeStyle(record, style) {\n    var withoutStyle = record.set('style', record.getStyle().remove(style));\n    return CharacterMetadata.create(withoutStyle);\n  };\n\n  CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n    var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n    return CharacterMetadata.create(withEntity);\n  }\n  /**\n   * Use this function instead of the `CharacterMetadata` constructor.\n   * Since most content generally uses only a very small number of\n   * style/entity permutations, we can reuse these objects as often as\n   * possible.\n   */\n  ;\n\n  CharacterMetadata.create = function create(config) {\n    if (!config) {\n      return EMPTY;\n    }\n\n    var defaultConfig = {\n      style: EMPTY_SET,\n      entity: null\n    }; // Fill in unspecified properties, if necessary.\n\n    var configMap = Map(defaultConfig).merge(config);\n    var existing = pool.get(configMap);\n\n    if (existing) {\n      return existing;\n    }\n\n    var newCharacter = new CharacterMetadata(configMap);\n    pool = pool.set(configMap, newCharacter);\n    return newCharacter;\n  };\n\n  CharacterMetadata.fromJS = function fromJS(_ref) {\n    var style = _ref.style,\n        entity = _ref.entity;\n    return new CharacterMetadata({\n      style: Array.isArray(style) ? OrderedSet(style) : style,\n      entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n    });\n  };\n\n  return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  parent: null,\n  characterList: List(),\n  data: Map(),\n  depth: 0,\n  key: '',\n  text: '',\n  type: 'unstyled',\n  children: List(),\n  prevSibling: null,\n  nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n  return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n  return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n  if (!config) {\n    return config;\n  }\n\n  var characterList = config.characterList,\n      text = config.text;\n\n  if (text && !characterList) {\n    config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n  }\n\n  return config;\n};\n\nvar ContentBlockNode =\n/*#__PURE__*/\nfunction (_ref) {\n  _inheritsLoose(ContentBlockNode, _ref);\n\n  function ContentBlockNode() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n    /* eslint-disable-next-line constructor-super */\n    return _ref.call(this, decorateCharacterList(props)) || this;\n  }\n\n  var _proto = ContentBlockNode.prototype;\n\n  _proto.getKey = function getKey() {\n    return this.get('key');\n  };\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getText = function getText() {\n    return this.get('text');\n  };\n\n  _proto.getCharacterList = function getCharacterList() {\n    return this.get('characterList');\n  };\n\n  _proto.getLength = function getLength() {\n    return this.getText().length;\n  };\n\n  _proto.getDepth = function getDepth() {\n    return this.get('depth');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getStyle() : EMPTY_SET;\n  };\n\n  _proto.getEntityAt = function getEntityAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getEntity() : null;\n  };\n\n  _proto.getChildKeys = function getChildKeys() {\n    return this.get('children');\n  };\n\n  _proto.getParentKey = function getParentKey() {\n    return this.get('parent');\n  };\n\n  _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n    return this.get('prevSibling');\n  };\n\n  _proto.getNextSiblingKey = function getNextSiblingKey() {\n    return this.get('nextSibling');\n  };\n\n  _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n  };\n\n  _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n  };\n\n  return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","export default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n  var key;\n\n  while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n    key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n  }\n\n  seenKeys[key] = true;\n  return key;\n}\n\nmodule.exports = generateRandomKey;","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","'use strict';\nif (require('./_descriptors')) {\n  var LIBRARY = require('./_library');\n  var global = require('./_global');\n  var fails = require('./_fails');\n  var $export = require('./_export');\n  var $typed = require('./_typed');\n  var $buffer = require('./_typed-buffer');\n  var ctx = require('./_ctx');\n  var anInstance = require('./_an-instance');\n  var propertyDesc = require('./_property-desc');\n  var hide = require('./_hide');\n  var redefineAll = require('./_redefine-all');\n  var toInteger = require('./_to-integer');\n  var toLength = require('./_to-length');\n  var toIndex = require('./_to-index');\n  var toAbsoluteIndex = require('./_to-absolute-index');\n  var toPrimitive = require('./_to-primitive');\n  var has = require('./_has');\n  var classof = require('./_classof');\n  var isObject = require('./_is-object');\n  var toObject = require('./_to-object');\n  var isArrayIter = require('./_is-array-iter');\n  var create = require('./_object-create');\n  var getPrototypeOf = require('./_object-gpo');\n  var gOPN = require('./_object-gopn').f;\n  var getIterFn = require('./core.get-iterator-method');\n  var uid = require('./_uid');\n  var wks = require('./_wks');\n  var createArrayMethod = require('./_array-methods');\n  var createArrayIncludes = require('./_array-includes');\n  var speciesConstructor = require('./_species-constructor');\n  var ArrayIterators = require('./es6.array.iterator');\n  var Iterators = require('./_iterators');\n  var $iterDetect = require('./_iter-detect');\n  var setSpecies = require('./_set-species');\n  var arrayFill = require('./_array-fill');\n  var arrayCopyWithin = require('./_array-copy-within');\n  var $DP = require('./_object-dp');\n  var $GOPD = require('./_object-gopd');\n  var dP = $DP.f;\n  var gOPD = $GOPD.f;\n  var RangeError = global.RangeError;\n  var TypeError = global.TypeError;\n  var Uint8Array = global.Uint8Array;\n  var ARRAY_BUFFER = 'ArrayBuffer';\n  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n  var PROTOTYPE = 'prototype';\n  var ArrayProto = Array[PROTOTYPE];\n  var $ArrayBuffer = $buffer.ArrayBuffer;\n  var $DataView = $buffer.DataView;\n  var arrayForEach = createArrayMethod(0);\n  var arrayFilter = createArrayMethod(2);\n  var arraySome = createArrayMethod(3);\n  var arrayEvery = createArrayMethod(4);\n  var arrayFind = createArrayMethod(5);\n  var arrayFindIndex = createArrayMethod(6);\n  var arrayIncludes = createArrayIncludes(true);\n  var arrayIndexOf = createArrayIncludes(false);\n  var arrayValues = ArrayIterators.values;\n  var arrayKeys = ArrayIterators.keys;\n  var arrayEntries = ArrayIterators.entries;\n  var arrayLastIndexOf = ArrayProto.lastIndexOf;\n  var arrayReduce = ArrayProto.reduce;\n  var arrayReduceRight = ArrayProto.reduceRight;\n  var arrayJoin = ArrayProto.join;\n  var arraySort = ArrayProto.sort;\n  var arraySlice = ArrayProto.slice;\n  var arrayToString = ArrayProto.toString;\n  var arrayToLocaleString = ArrayProto.toLocaleString;\n  var ITERATOR = wks('iterator');\n  var TAG = wks('toStringTag');\n  var TYPED_CONSTRUCTOR = uid('typed_constructor');\n  var DEF_CONSTRUCTOR = uid('def_constructor');\n  var ALL_CONSTRUCTORS = $typed.CONSTR;\n  var TYPED_ARRAY = $typed.TYPED;\n  var VIEW = $typed.VIEW;\n  var WRONG_LENGTH = 'Wrong length!';\n\n  var $map = createArrayMethod(1, function (O, length) {\n    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n  });\n\n  var LITTLE_ENDIAN = fails(function () {\n    // eslint-disable-next-line no-undef\n    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n  });\n\n  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n    new Uint8Array(1).set({});\n  });\n\n  var toOffset = function (it, BYTES) {\n    var offset = toInteger(it);\n    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n    return offset;\n  };\n\n  var validate = function (it) {\n    if (isObject(it) && TYPED_ARRAY in it) return it;\n    throw TypeError(it + ' is not a typed array!');\n  };\n\n  var allocate = function (C, length) {\n    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n      throw TypeError('It is not a typed array constructor!');\n    } return new C(length);\n  };\n\n  var speciesFromList = function (O, list) {\n    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n  };\n\n  var fromList = function (C, list) {\n    var index = 0;\n    var length = list.length;\n    var result = allocate(C, length);\n    while (length > index) result[index] = list[index++];\n    return result;\n  };\n\n  var addGetter = function (it, key, internal) {\n    dP(it, key, { get: function () { return this._d[internal]; } });\n  };\n\n  var $from = function from(source /* , mapfn, thisArg */) {\n    var O = toObject(source);\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var iterFn = getIterFn(O);\n    var i, length, values, result, step, iterator;\n    if (iterFn != undefined && !isArrayIter(iterFn)) {\n      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n        values.push(step.value);\n      } O = values;\n    }\n    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n      result[i] = mapping ? mapfn(O[i], i) : O[i];\n    }\n    return result;\n  };\n\n  var $of = function of(/* ...items */) {\n    var index = 0;\n    var length = arguments.length;\n    var result = allocate(this, length);\n    while (length > index) result[index] = arguments[index++];\n    return result;\n  };\n\n  // iOS Safari 6.x fails here\n  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n  var $toLocaleString = function toLocaleString() {\n    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n  };\n\n  var proto = {\n    copyWithin: function copyWithin(target, start /* , end */) {\n      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    every: function every(callbackfn /* , thisArg */) {\n      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n      return arrayFill.apply(validate(this), arguments);\n    },\n    filter: function filter(callbackfn /* , thisArg */) {\n      return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n        arguments.length > 1 ? arguments[1] : undefined));\n    },\n    find: function find(predicate /* , thisArg */) {\n      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    findIndex: function findIndex(predicate /* , thisArg */) {\n      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    forEach: function forEach(callbackfn /* , thisArg */) {\n      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    indexOf: function indexOf(searchElement /* , fromIndex */) {\n      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    includes: function includes(searchElement /* , fromIndex */) {\n      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    join: function join(separator) { // eslint-disable-line no-unused-vars\n      return arrayJoin.apply(validate(this), arguments);\n    },\n    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n      return arrayLastIndexOf.apply(validate(this), arguments);\n    },\n    map: function map(mapfn /* , thisArg */) {\n      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n      return arrayReduce.apply(validate(this), arguments);\n    },\n    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n      return arrayReduceRight.apply(validate(this), arguments);\n    },\n    reverse: function reverse() {\n      var that = this;\n      var length = validate(that).length;\n      var middle = Math.floor(length / 2);\n      var index = 0;\n      var value;\n      while (index < middle) {\n        value = that[index];\n        that[index++] = that[--length];\n        that[length] = value;\n      } return that;\n    },\n    some: function some(callbackfn /* , thisArg */) {\n      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    },\n    sort: function sort(comparefn) {\n      return arraySort.call(validate(this), comparefn);\n    },\n    subarray: function subarray(begin, end) {\n      var O = validate(this);\n      var length = O.length;\n      var $begin = toAbsoluteIndex(begin, length);\n      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n        O.buffer,\n        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n      );\n    }\n  };\n\n  var $slice = function slice(start, end) {\n    return speciesFromList(this, arraySlice.call(validate(this), start, end));\n  };\n\n  var $set = function set(arrayLike /* , offset */) {\n    validate(this);\n    var offset = toOffset(arguments[1], 1);\n    var length = this.length;\n    var src = toObject(arrayLike);\n    var len = toLength(src.length);\n    var index = 0;\n    if (len + offset > length) throw RangeError(WRONG_LENGTH);\n    while (index < len) this[offset + index] = src[index++];\n  };\n\n  var $iterators = {\n    entries: function entries() {\n      return arrayEntries.call(validate(this));\n    },\n    keys: function keys() {\n      return arrayKeys.call(validate(this));\n    },\n    values: function values() {\n      return arrayValues.call(validate(this));\n    }\n  };\n\n  var isTAIndex = function (target, key) {\n    return isObject(target)\n      && target[TYPED_ARRAY]\n      && typeof key != 'symbol'\n      && key in target\n      && String(+key) == String(key);\n  };\n  var $getDesc = function getOwnPropertyDescriptor(target, key) {\n    return isTAIndex(target, key = toPrimitive(key, true))\n      ? propertyDesc(2, target[key])\n      : gOPD(target, key);\n  };\n  var $setDesc = function defineProperty(target, key, desc) {\n    if (isTAIndex(target, key = toPrimitive(key, true))\n      && isObject(desc)\n      && has(desc, 'value')\n      && !has(desc, 'get')\n      && !has(desc, 'set')\n      // TODO: add validation descriptor w/o calling accessors\n      && !desc.configurable\n      && (!has(desc, 'writable') || desc.writable)\n      && (!has(desc, 'enumerable') || desc.enumerable)\n    ) {\n      target[key] = desc.value;\n      return target;\n    } return dP(target, key, desc);\n  };\n\n  if (!ALL_CONSTRUCTORS) {\n    $GOPD.f = $getDesc;\n    $DP.f = $setDesc;\n  }\n\n  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n    getOwnPropertyDescriptor: $getDesc,\n    defineProperty: $setDesc\n  });\n\n  if (fails(function () { arrayToString.call({}); })) {\n    arrayToString = arrayToLocaleString = function toString() {\n      return arrayJoin.call(this);\n    };\n  }\n\n  var $TypedArrayPrototype$ = redefineAll({}, proto);\n  redefineAll($TypedArrayPrototype$, $iterators);\n  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n  redefineAll($TypedArrayPrototype$, {\n    slice: $slice,\n    set: $set,\n    constructor: function () { /* noop */ },\n    toString: arrayToString,\n    toLocaleString: $toLocaleString\n  });\n  addGetter($TypedArrayPrototype$, 'buffer', 'b');\n  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n  addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n  addGetter($TypedArrayPrototype$, 'length', 'e');\n  dP($TypedArrayPrototype$, TAG, {\n    get: function () { return this[TYPED_ARRAY]; }\n  });\n\n  // eslint-disable-next-line max-statements\n  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n    CLAMPED = !!CLAMPED;\n    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + KEY;\n    var SETTER = 'set' + KEY;\n    var TypedArray = global[NAME];\n    var Base = TypedArray || {};\n    var TAC = TypedArray && getPrototypeOf(TypedArray);\n    var FORCED = !TypedArray || !$typed.ABV;\n    var O = {};\n    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n    var getter = function (that, index) {\n      var data = that._d;\n      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n    };\n    var setter = function (that, index, value) {\n      var data = that._d;\n      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n    };\n    var addElement = function (that, index) {\n      dP(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n    if (FORCED) {\n      TypedArray = wrapper(function (that, data, $offset, $length) {\n        anInstance(that, TypedArray, NAME, '_d');\n        var index = 0;\n        var offset = 0;\n        var buffer, byteLength, length, klass;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new $ArrayBuffer(byteLength);\n        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n          buffer = data;\n          offset = toOffset($offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - offset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (TYPED_ARRAY in data) {\n          return fromList(TypedArray, data);\n        } else {\n          return $from.call(TypedArray, data);\n        }\n        hide(that, '_d', {\n          b: buffer,\n          o: offset,\n          l: byteLength,\n          e: length,\n          v: new $DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n      hide(TypedArrayPrototype, 'constructor', TypedArray);\n    } else if (!fails(function () {\n      TypedArray(1);\n    }) || !fails(function () {\n      new TypedArray(-1); // eslint-disable-line no-new\n    }) || !$iterDetect(function (iter) {\n      new TypedArray(); // eslint-disable-line no-new\n      new TypedArray(null); // eslint-disable-line no-new\n      new TypedArray(1.5); // eslint-disable-line no-new\n      new TypedArray(iter); // eslint-disable-line no-new\n    }, true)) {\n      TypedArray = wrapper(function (that, data, $offset, $length) {\n        anInstance(that, TypedArray, NAME);\n        var klass;\n        // `ws` module bug, temporarily remove validation length for Uint8Array\n        // https://github.com/websockets/ws/pull/645\n        if (!isObject(data)) return new Base(toIndex(data));\n        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n          return $length !== undefined\n            ? new Base(data, toOffset($offset, BYTES), $length)\n            : $offset !== undefined\n              ? new Base(data, toOffset($offset, BYTES))\n              : new Base(data);\n        }\n        if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n        return $from.call(TypedArray, data);\n      });\n      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n      });\n      TypedArray[PROTOTYPE] = TypedArrayPrototype;\n      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n    }\n    var $nativeIterator = TypedArrayPrototype[ITERATOR];\n    var CORRECT_ITER_NAME = !!$nativeIterator\n      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n    var $iterator = $iterators.values;\n    hide(TypedArray, TYPED_CONSTRUCTOR, true);\n    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n    hide(TypedArrayPrototype, VIEW, true);\n    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n      dP(TypedArrayPrototype, TAG, {\n        get: function () { return NAME; }\n      });\n    }\n\n    O[NAME] = TypedArray;\n\n    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n    $export($export.S, NAME, {\n      BYTES_PER_ELEMENT: BYTES\n    });\n\n    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n      from: $from,\n      of: $of\n    });\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n    $export($export.P, NAME, proto);\n\n    setSpecies(NAME);\n\n    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n    $export($export.P + $export.F * fails(function () {\n      new TypedArray(1).slice();\n    }), NAME, { slice: $slice });\n\n    $export($export.P + $export.F * (fails(function () {\n      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n    }) || !fails(function () {\n      TypedArrayPrototype.toLocaleString.call([1, 2]);\n    })), NAME, { toLocaleString: $toLocaleString });\n\n    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n  };\n} else module.exports = function () { /* empty */ };\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n  encode: function encode(blockKey, decoratorKey, leafKey) {\n    return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n  },\n  decode: function decode(offsetKey) {\n    // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n    var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n        leafKey = _offsetKey$split$reve[0],\n        decoratorKey = _offsetKey$split$reve[1],\n        blockKeyParts = _offsetKey$split$reve.slice(2);\n\n    return {\n      // Recomposes the parts of blockKey after reversing them\n      blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n      decoratorKey: parseInt(decoratorKey, 10),\n      leafKey: parseInt(leafKey, 10)\n    };\n  }\n};\nmodule.exports = DraftOffsetKey;","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n  if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n    return !!window.__DRAFT_GKX[name];\n  }\n\n  return false;\n};","'use strict';\n\nvar assign = require('object-assign'),\n\tPropTypes = require('prop-types'),\n\tcreateClass = require('create-react-class'),\n\tmoment = require('moment'),\n\tReact = require('react'),\n\tCalendarContainer = require('./src/CalendarContainer'),\n\tonClickOutside = require('react-onclickoutside').default\n\t;\n\nvar viewModes = Object.freeze({\n\tYEARS: 'years',\n\tMONTHS: 'months',\n\tDAYS: 'days',\n\tTIME: 'time',\n});\n\nvar TYPES = PropTypes;\nvar Datetime = createClass({\n\tdisplayName: 'DateTime',\n\tpropTypes: {\n\t\t// value: TYPES.object | TYPES.string,\n\t\t// defaultValue: TYPES.object | TYPES.string,\n\t\t// viewDate: TYPES.object | TYPES.string,\n\t\tonFocus: TYPES.func,\n\t\tonBlur: TYPES.func,\n\t\tonChange: TYPES.func,\n\t\tonViewModeChange: TYPES.func,\n\t\tonNavigateBack: TYPES.func,\n\t\tonNavigateForward: TYPES.func,\n\t\tlocale: TYPES.string,\n\t\tutc: TYPES.bool,\n\t\tdisplayTimeZone: TYPES.string,\n\t\tinput: TYPES.bool,\n\t\t// dateFormat: TYPES.string | TYPES.bool,\n\t\t// timeFormat: TYPES.string | TYPES.bool,\n\t\tinputProps: TYPES.object,\n\t\ttimeConstraints: TYPES.object,\n\t\tviewMode: TYPES.oneOf([viewModes.YEARS, viewModes.MONTHS, viewModes.DAYS, viewModes.TIME]),\n\t\tisValidDate: TYPES.func,\n\t\topen: TYPES.bool,\n\t\tstrictParsing: TYPES.bool,\n\t\tcloseOnSelect: TYPES.bool,\n\t\tcloseOnTab: TYPES.bool\n\t},\n\n\tgetInitialState: function() {\n\t\tthis.checkTZ( this.props );\n\t\t\n\t\tvar state = this.getStateFromProps( this.props );\n\n\t\tif ( state.open === undefined )\n\t\t\tstate.open = !this.props.input;\n\n\t\tstate.currentView = this.props.dateFormat ?\n\t\t\t(this.props.viewMode || state.updateOn || viewModes.DAYS) : viewModes.TIME;\n\n\t\treturn state;\n\t},\n\n\tparseDate: function (date, formats) {\n\t\tvar parsedDate;\n\n\t\tif (date && typeof date === 'string')\n\t\t\tparsedDate = this.localMoment(date, formats.datetime);\n\t\telse if (date)\n\t\t\tparsedDate = this.localMoment(date);\n\n\t\tif (parsedDate && !parsedDate.isValid())\n\t\t\tparsedDate = null;\n\n\t\treturn parsedDate;\n\t},\n\n\tgetStateFromProps: function( props ) {\n\t\tvar formats = this.getFormats( props ),\n\t\t\tdate = props.value || props.defaultValue,\n\t\t\tselectedDate, viewDate, updateOn, inputValue\n\t\t\t;\n\n\t\tselectedDate = this.parseDate(date, formats);\n\n\t\tviewDate = this.parseDate(props.viewDate, formats);\n\n\t\tviewDate = selectedDate ?\n\t\t\tselectedDate.clone().startOf('month') :\n\t\t\tviewDate ? viewDate.clone().startOf('month') : this.localMoment().startOf('month');\n\n\t\tupdateOn = this.getUpdateOn(formats);\n\n\t\tif ( selectedDate )\n\t\t\tinputValue = selectedDate.format(formats.datetime);\n\t\telse if ( date.isValid && !date.isValid() )\n\t\t\tinputValue = '';\n\t\telse\n\t\t\tinputValue = date || '';\n\n\t\treturn {\n\t\t\tupdateOn: updateOn,\n\t\t\tinputFormat: formats.datetime,\n\t\t\tviewDate: viewDate,\n\t\t\tselectedDate: selectedDate,\n\t\t\tinputValue: inputValue,\n\t\t\topen: props.open\n\t\t};\n\t},\n\n\tgetUpdateOn: function( formats ) {\n\t\tif ( formats.date.match(/[lLD]/) ) {\n\t\t\treturn viewModes.DAYS;\n\t\t} else if ( formats.date.indexOf('M') !== -1 ) {\n\t\t\treturn viewModes.MONTHS;\n\t\t} else if ( formats.date.indexOf('Y') !== -1 ) {\n\t\t\treturn viewModes.YEARS;\n\t\t}\n\n\t\treturn viewModes.DAYS;\n\t},\n\n\tgetFormats: function( props ) {\n\t\tvar formats = {\n\t\t\t\tdate: props.dateFormat || '',\n\t\t\t\ttime: props.timeFormat || ''\n\t\t\t},\n\t\t\tlocale = this.localMoment( props.date, null, props ).localeData()\n\t\t\t;\n\n\t\tif ( formats.date === true ) {\n\t\t\tformats.date = locale.longDateFormat('L');\n\t\t}\n\t\telse if ( this.getUpdateOn(formats) !== viewModes.DAYS ) {\n\t\t\tformats.time = '';\n\t\t}\n\n\t\tif ( formats.time === true ) {\n\t\t\tformats.time = locale.longDateFormat('LT');\n\t\t}\n\n\t\tformats.datetime = formats.date && formats.time ?\n\t\t\tformats.date + ' ' + formats.time :\n\t\t\tformats.date || formats.time\n\t\t;\n\n\t\treturn formats;\n\t},\n\n\tcomponentWillReceiveProps: function( nextProps ) {\n\t\tvar formats = this.getFormats( nextProps ),\n\t\t\tupdatedState = {}\n\t\t;\n\n\t\tif ( nextProps.value !== this.props.value ||\n\t\t\tformats.datetime !== this.getFormats( this.props ).datetime ) {\n\t\t\tupdatedState = this.getStateFromProps( nextProps );\n\t\t}\n\n\t\tif ( updatedState.open === undefined ) {\n\t\t\tif ( typeof nextProps.open !== 'undefined' ) {\n\t\t\t\tupdatedState.open = nextProps.open;\n\t\t\t} else if ( this.props.closeOnSelect && this.state.currentView !== viewModes.TIME ) {\n\t\t\t\tupdatedState.open = false;\n\t\t\t} else {\n\t\t\t\tupdatedState.open = this.state.open;\n\t\t\t}\n\t\t}\n\n\t\tif ( nextProps.viewMode !== this.props.viewMode ) {\n\t\t\tupdatedState.currentView = nextProps.viewMode;\n\t\t}\n\n\t\tif ( nextProps.locale !== this.props.locale ) {\n\t\t\tif ( this.state.viewDate ) {\n\t\t\t\tvar updatedViewDate = this.state.viewDate.clone().locale( nextProps.locale );\n\t\t\t\tupdatedState.viewDate = updatedViewDate;\n\t\t\t}\n\t\t\tif ( this.state.selectedDate ) {\n\t\t\t\tvar updatedSelectedDate = this.state.selectedDate.clone().locale( nextProps.locale );\n\t\t\t\tupdatedState.selectedDate = updatedSelectedDate;\n\t\t\t\tupdatedState.inputValue = updatedSelectedDate.format( formats.datetime );\n\t\t\t}\n\t\t}\n\n\t\tif ( nextProps.utc !== this.props.utc || nextProps.displayTimeZone !== this.props.displayTimeZone ) {\n\t\t\tif ( nextProps.utc ) {\n\t\t\t\tif ( this.state.viewDate )\n\t\t\t\t\tupdatedState.viewDate = this.state.viewDate.clone().utc();\n\t\t\t\tif ( this.state.selectedDate ) {\n\t\t\t\t\tupdatedState.selectedDate = this.state.selectedDate.clone().utc();\n\t\t\t\t\tupdatedState.inputValue = updatedState.selectedDate.format( formats.datetime );\n\t\t\t\t}\n\t\t\t} else if ( nextProps.displayTimeZone ) {\n\t\t\t\tif ( this.state.viewDate )\n\t\t\t\t\tupdatedState.viewDate = this.state.viewDate.clone().tz(nextProps.displayTimeZone);\n\t\t\t\tif ( this.state.selectedDate ) {\n\t\t\t\t\tupdatedState.selectedDate = this.state.selectedDate.clone().tz(nextProps.displayTimeZone);\n\t\t\t\t\tupdatedState.inputValue = updatedState.selectedDate.tz(nextProps.displayTimeZone).format( formats.datetime );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( this.state.viewDate )\n\t\t\t\t\tupdatedState.viewDate = this.state.viewDate.clone().local();\n\t\t\t\tif ( this.state.selectedDate ) {\n\t\t\t\t\tupdatedState.selectedDate = this.state.selectedDate.clone().local();\n\t\t\t\t\tupdatedState.inputValue = updatedState.selectedDate.format(formats.datetime);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( nextProps.viewDate !== this.props.viewDate ) {\n\t\t\tupdatedState.viewDate = moment(nextProps.viewDate);\n\t\t}\n\n\t\tthis.checkTZ( nextProps );\n\n\t\tthis.setState( updatedState );\n\t},\n\n\tonInputChange: function( e ) {\n\t\tvar value = e.target === null ? e : e.target.value,\n\t\t\tlocalMoment = this.localMoment( value, this.state.inputFormat ),\n\t\t\tupdate = { inputValue: value }\n\t\t\t;\n\n\t\tif ( localMoment.isValid() && !this.props.value ) {\n\t\t\tupdate.selectedDate = localMoment;\n\t\t\tupdate.viewDate = localMoment.clone().startOf('month');\n\t\t} else {\n\t\t\tupdate.selectedDate = null;\n\t\t}\n\n\t\treturn this.setState( update, function() {\n\t\t\treturn this.props.onChange( localMoment.isValid() ? localMoment : this.state.inputValue );\n\t\t});\n\t},\n\n\tonInputKey: function( e ) {\n\t\tif ( e.which === 9 && this.props.closeOnTab ) {\n\t\t\tthis.closeCalendar();\n\t\t}\n\t},\n\n\tshowView: function( view ) {\n\t\tvar me = this;\n\t\treturn function() {\n\t\t\tme.state.currentView !== view && me.props.onViewModeChange( view );\n\t\t\tme.setState({ currentView: view });\n\t\t};\n\t},\n\n\tsetDate: function( type ) {\n\t\tvar me = this,\n\t\t\tnextViews = {\n\t\t\t\tmonth: viewModes.DAYS,\n\t\t\t\tyear: viewModes.MONTHS,\n\t\t\t}\n\t\t;\n\t\treturn function( e ) {\n\t\t\tme.setState({\n\t\t\t\tviewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value'), 10) ).startOf( type ),\n\t\t\t\tcurrentView: nextViews[ type ]\n\t\t\t});\n\t\t\tme.props.onViewModeChange( nextViews[ type ] );\n\t\t};\n\t},\n\n\tsubtractTime: function( amount, type, toSelected ) {\n\t\tvar me = this;\n\t\treturn function() {\n\t\t\tme.props.onNavigateBack( amount, type );\n\t\t\tme.updateTime( 'subtract', amount, type, toSelected );\n\t\t};\n\t},\n\n\taddTime: function( amount, type, toSelected ) {\n\t\tvar me = this;\n\t\treturn function() {\n\t\t\tme.props.onNavigateForward( amount, type );\n\t\t\tme.updateTime( 'add', amount, type, toSelected );\n\t\t};\n\t},\n\n\tupdateTime: function( op, amount, type, toSelected ) {\n\t\tvar update = {},\n\t\t\tdate = toSelected ? 'selectedDate' : 'viewDate';\n\n\t\tupdate[ date ] = this.state[ date ].clone()[ op ]( amount, type );\n\n\t\tthis.setState( update );\n\t},\n\n\tallowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'],\n\tsetTime: function( type, value ) {\n\t\tvar index = this.allowedSetTime.indexOf( type ) + 1,\n\t\t\tstate = this.state,\n\t\t\tdate = (state.selectedDate || state.viewDate).clone(),\n\t\t\tnextType\n\t\t\t;\n\n\t\t// It is needed to set all the time properties\n\t\t// to not to reset the time\n\t\tdate[ type ]( value );\n\t\tfor (; index < this.allowedSetTime.length; index++) {\n\t\t\tnextType = this.allowedSetTime[index];\n\t\t\tdate[ nextType ]( date[nextType]() );\n\t\t}\n\n\t\tif ( !this.props.value ) {\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tinputValue: date.format( state.inputFormat )\n\t\t\t});\n\t\t}\n\t\tthis.props.onChange( date );\n\t},\n\n\tupdateSelectedDate: function( e, close ) {\n\t\tvar target = e.currentTarget,\n\t\t\tmodifier = 0,\n\t\t\tviewDate = this.state.viewDate,\n\t\t\tcurrentDate = this.state.selectedDate || viewDate,\n\t\t\tdate\n\t\t\t;\n\n\t\tif (target.className.indexOf('rdtDay') !== -1) {\n\t\t\tif (target.className.indexOf('rdtNew') !== -1)\n\t\t\t\tmodifier = 1;\n\t\t\telse if (target.className.indexOf('rdtOld') !== -1)\n\t\t\t\tmodifier = -1;\n\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( viewDate.month() + modifier )\n\t\t\t\t.date( parseInt( target.getAttribute('data-value'), 10 ) );\n\t\t} else if (target.className.indexOf('rdtMonth') !== -1) {\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( parseInt( target.getAttribute('data-value'), 10 ) )\n\t\t\t\t.date( currentDate.date() );\n\t\t} else if (target.className.indexOf('rdtYear') !== -1) {\n\t\t\tdate = viewDate.clone()\n\t\t\t\t.month( currentDate.month() )\n\t\t\t\t.date( currentDate.date() )\n\t\t\t\t.year( parseInt( target.getAttribute('data-value'), 10 ) );\n\t\t}\n\n\t\tdate.hours( currentDate.hours() )\n\t\t\t.minutes( currentDate.minutes() )\n\t\t\t.seconds( currentDate.seconds() )\n\t\t\t.milliseconds( currentDate.milliseconds() );\n\n\t\tif ( !this.props.value ) {\n\t\t\tvar open = !( this.props.closeOnSelect && close );\n\t\t\tif ( !open ) {\n\t\t\t\tthis.props.onBlur( date );\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\tselectedDate: date,\n\t\t\t\tviewDate: date.clone().startOf('month'),\n\t\t\t\tinputValue: date.format( this.state.inputFormat ),\n\t\t\t\topen: open\n\t\t\t});\n\t\t} else {\n\t\t\tif ( this.props.closeOnSelect && close ) {\n\t\t\t\tthis.closeCalendar();\n\t\t\t}\n\t\t}\n\n\t\tthis.props.onChange( date );\n\t},\n\n\topenCalendar: function( e ) {\n\t\tif ( !this.state.open ) {\n\t\t\tthis.setState({ open: true }, function() {\n\t\t\t\tthis.props.onFocus( e );\n\t\t\t});\n\t\t}\n\t},\n\n\tcloseCalendar: function() {\n\t\tthis.setState({ open: false }, function () {\n\t\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t\t});\n\t},\n\n\thandleClickOutside: function() {\n\t\tif ( this.props.input && this.state.open && this.props.open === undefined && !this.props.disableCloseOnClickOutside ) {\n\t\t\tthis.setState({ open: false }, function() {\n\t\t\t\tthis.props.onBlur( this.state.selectedDate || this.state.inputValue );\n\t\t\t});\n\t\t}\n\t},\n\n\tlocalMoment: function( date, format, props ) {\n\t\tprops = props || this.props;\n\t\tvar m = null;\n\n\t\tif (props.utc) {\n\t\t\tm = moment.utc(date, format, props.strictParsing);\n\t\t} else if (props.displayTimeZone) {\n\t\t\tm = moment.tz(date, format, props.displayTimeZone);\n\t\t} else {\n\t\t\tm = moment(date, format, props.strictParsing);\n\t\t}\n\n\t\tif ( props.locale )\n\t\t\tm.locale( props.locale );\n\t\treturn m;\n\t},\n\n\tcheckTZ: function( props ) {\n\t\tvar con = console;\n\n\t\tif ( props.displayTimeZone && !this.tzWarning && !moment.tz ) {\n\t\t\tthis.tzWarning = true;\n\t\t\tcon && con.error('react-datetime: displayTimeZone prop with value \"' + props.displayTimeZone +  '\" is used but moment.js timezone is not loaded.');\n\t\t}\n\t},\n\n\tcomponentProps: {\n\t\tfromProps: ['value', 'isValidDate', 'renderDay', 'renderMonth', 'renderYear', 'timeConstraints'],\n\t\tfromState: ['viewDate', 'selectedDate', 'updateOn'],\n\t\tfromThis: ['setDate', 'setTime', 'showView', 'addTime', 'subtractTime', 'updateSelectedDate', 'localMoment', 'handleClickOutside']\n\t},\n\n\tgetComponentProps: function() {\n\t\tvar me = this,\n\t\t\tformats = this.getFormats( this.props ),\n\t\t\tprops = {dateFormat: formats.date, timeFormat: formats.time}\n\t\t\t;\n\n\t\tthis.componentProps.fromProps.forEach( function( name ) {\n\t\t\tprops[ name ] = me.props[ name ];\n\t\t});\n\t\tthis.componentProps.fromState.forEach( function( name ) {\n\t\t\tprops[ name ] = me.state[ name ];\n\t\t});\n\t\tthis.componentProps.fromThis.forEach( function( name ) {\n\t\t\tprops[ name ] = me[ name ];\n\t\t});\n\n\t\treturn props;\n\t},\n\n\toverrideEvent: function( handler, action ) {\n\t\tif ( !this.overridenEvents ) {\n\t\t\tthis.overridenEvents = {};\n\t\t}\n\n\t\tif ( !this.overridenEvents[handler] ) {\n\t\t\tvar me = this;\n\t\t\tthis.overridenEvents[handler] = function( e ) {\n\t\t\t\tvar result;\n\t\t\t\tif ( me.props.inputProps && me.props.inputProps[handler] ) {\n\t\t\t\t\tresult = me.props.inputProps[handler]( e );\n\t\t\t\t}\n\t\t\t\tif ( result !== false ) {\n\t\t\t\t\taction( e );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\treturn this.overridenEvents[handler];\n\t},\n\n\trender: function() {\n\t\t// TODO: Make a function or clean up this code,\n\t\t// logic right now is really hard to follow\n\t\tvar className = 'rdt' + (this.props.className ?\n\t\t\t\t\t\t\t\t\t( Array.isArray( this.props.className ) ?\n\t\t\t\t\t\t\t\t\t' ' + this.props.className.join( ' ' ) : ' ' + this.props.className) : ''),\n\t\t\tchildren = [];\n\n\t\tif ( this.props.input ) {\n\t\t\tvar finalInputProps = assign(\n\t\t\t\t{ type: 'text', className: 'form-control', value: this.state.inputValue },\n\t\t\t\tthis.props.inputProps,\n\t\t\t\t{\n\t\t\t\t\tonClick: this.overrideEvent( 'onClick', this.openCalendar ),\n\t\t\t\t\tonFocus: this.overrideEvent( 'onFocus', this.openCalendar ),\n\t\t\t\t\tonChange: this.overrideEvent( 'onChange', this.onInputChange ),\n\t\t\t\t\tonKeyDown: this.overrideEvent( 'onKeyDown', this.onInputKey ),\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( this.props.renderInput ) {\n\t\t\t\tchildren = [ React.createElement('div', { key: 'i' }, this.props.renderInput( finalInputProps, this.openCalendar, this.closeCalendar )) ];\n\t\t\t} else {\n\t\t\t\tchildren = [ React.createElement('input', assign({ key: 'i' }, finalInputProps ))];\n\t\t\t}\n\t\t} else {\n\t\t\tclassName += ' rdtStatic';\n\t\t}\n\n\t\tif ( this.props.open || (this.props.open === undefined && this.state.open ) )\n\t\t\tclassName += ' rdtOpen';\n\n\t\treturn React.createElement( ClickableWrapper, {className: className, onClickOut: this.handleClickOutside}, children.concat(\n\t\t\tReact.createElement( 'div',\n\t\t\t\t{ key: 'dt', className: 'rdtPicker' },\n\t\t\t\tReact.createElement( CalendarContainer, { view: this.state.currentView, viewProps: this.getComponentProps() })\n\t\t\t)\n\t\t));\n\t}\n});\n\nvar ClickableWrapper = onClickOutside( createClass({\n\trender: function() {\n\t\treturn React.createElement( 'div', { className: this.props.className }, this.props.children );\n\t},\n\thandleClickOutside: function( e ) {\n\t\tthis.props.onClickOut( e );\n\t}\n}));\n\nDatetime.defaultProps = {\n\tclassName: '',\n\tdefaultValue: '',\n\tinputProps: {},\n\tinput: true,\n\tonFocus: function() {},\n\tonBlur: function() {},\n\tonChange: function() {},\n\tonViewModeChange: function() {},\n\tonNavigateBack: function() {},\n\tonNavigateForward: function() {},\n\ttimeFormat: true,\n\ttimeConstraints: {},\n\tdateFormat: true,\n\tstrictParsing: true,\n\tcloseOnSelect: false,\n\tcloseOnTab: true,\n\tutc: false\n};\n\n// Make moment accessible through the Datetime class\nDatetime.moment = moment;\n\nmodule.exports = Datetime;\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  key: '',\n  type: 'unstyled',\n  text: '',\n  characterList: List(),\n  depth: 0,\n  data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n  if (!config) {\n    return config;\n  }\n\n  var characterList = config.characterList,\n      text = config.text;\n\n  if (text && !characterList) {\n    config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n  }\n\n  return config;\n};\n\nvar ContentBlock =\n/*#__PURE__*/\nfunction (_ContentBlockRecord) {\n  _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n  function ContentBlock(config) {\n    return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n  }\n\n  var _proto = ContentBlock.prototype;\n\n  _proto.getKey = function getKey() {\n    return this.get('key');\n  };\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getText = function getText() {\n    return this.get('text');\n  };\n\n  _proto.getCharacterList = function getCharacterList() {\n    return this.get('characterList');\n  };\n\n  _proto.getLength = function getLength() {\n    return this.getText().length;\n  };\n\n  _proto.getDepth = function getDepth() {\n    return this.get('depth');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getStyle() : EMPTY_SET;\n  };\n\n  _proto.getEntityAt = function getEntityAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getEntity() : null;\n  }\n  /**\n   * Execute a callback for every contiguous range of styles within the block.\n   */\n  ;\n\n  _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n  }\n  /**\n   * Execute a callback for every contiguous range of entities within the block.\n   */\n  ;\n\n  _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n  };\n\n  return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n  return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n  return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n *                      In the object case, the values are conditions that\n *                      determine if the className keys should be included.\n * @param [string ...]  Variable list of classNames in the string case.\n * @return string       Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n  if (typeof classNames == 'object') {\n    return Object.keys(classNames).filter(function (className) {\n      return classNames[className];\n    }).map(replace).join(' ');\n  }\n\n  return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n  return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit   A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean}          Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n  return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n  !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n  if (index + 1 === str.length) {\n    return false;\n  }\n\n  var first = str.charCodeAt(index);\n  var second = str.charCodeAt(index + 1);\n  return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str  Non-empty string\n * @return {boolean}    True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n  return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str  Non-empty string\n * @param {number} pos  Position in the string to look for one code unit\n * @return {number}      Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n  return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str  Valid Unicode string\n * @return {number}     The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n  // Call the native functions if there's no surrogate char\n  if (!hasSurrogateUnit(str)) {\n    return str.length;\n  }\n\n  var len = 0;\n\n  for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n    len++;\n  }\n\n  return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str      Valid Unicode string\n * @param {number} start    Location in Unicode sequence to begin extracting\n * @param {?number} length  The number of Unicode characters to extract\n *                          (default: to the end of the string)\n * @return {string}         Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n  start = start || 0;\n  length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n  if (!hasSurrogateUnit(str)) {\n    return str.substr(start, length);\n  } // Obvious cases\n\n\n  var size = str.length;\n\n  if (size <= 0 || start > size || length <= 0) {\n    return '';\n  } // Find the actual starting position\n\n\n  var posA = 0;\n\n  if (start > 0) {\n    for (; start > 0 && posA < size; start--) {\n      posA += getUTF16Length(str, posA);\n    }\n\n    if (posA >= size) {\n      return '';\n    }\n  } else if (start < 0) {\n    for (posA = size; start < 0 && 0 < posA; start++) {\n      posA -= getUTF16Length(str, posA - 1);\n    }\n\n    if (posA < 0) {\n      posA = 0;\n    }\n  } // Find the actual ending position\n\n\n  var posB = size;\n\n  if (length < size) {\n    for (posB = posA; length > 0 && posB < size; length--) {\n      posB += getUTF16Length(str, posB);\n    }\n  }\n\n  return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str    Valid Unicode string\n * @param {number} start  Location in Unicode sequence to begin extracting\n * @param {?number} end   Location in Unicode sequence to end extracting\n *                        (default: end of the string)\n * @return {string}       Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n  start = start || 0;\n  end = end === undefined ? Infinity : end || 0;\n\n  if (start < 0) {\n    start = 0;\n  }\n\n  if (end < 0) {\n    end = 0;\n  }\n\n  var length = Math.abs(end - start);\n  start = start < end ? start : end;\n  return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str        Valid Unicode string\n * @return {array<number>}    A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n  var codePoints = [];\n\n  for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n    codePoints.push(str.codePointAt(pos));\n  }\n\n  return codePoints;\n}\n\nvar UnicodeUtils = {\n  getCodePoints: getCodePoints,\n  getUTF16Length: getUTF16Length,\n  hasSurrogateUnit: hasSurrogateUnit,\n  isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n  isSurrogatePair: isSurrogatePair,\n  strlen: strlen,\n  substring: substring,\n  substr: substr\n};\nmodule.exports = UnicodeUtils;","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DEFAULT_NOTIFICATION = exports.POSITIONS = exports.BOTTOM_RIGHT_POSITION = exports.BOTTOM_LEFT_POSITION = exports.BOTTOM_CENTER = exports.BOTTOM = exports.TOP_RIGHT_POSITION = exports.TOP_LEFT_POSITION = exports.TOP_CENTER = exports.TOP = exports.STATUS = exports.ERROR_STATUS = exports.WARNING_STATUS = exports.SUCCESS_STATUS = exports.INFO_STATUS = exports.DEFAULT_STATUS = void 0;\nvar DEFAULT_STATUS = 'default';\nexports.DEFAULT_STATUS = DEFAULT_STATUS;\nvar INFO_STATUS = 'info';\nexports.INFO_STATUS = INFO_STATUS;\nvar SUCCESS_STATUS = 'success';\nexports.SUCCESS_STATUS = SUCCESS_STATUS;\nvar WARNING_STATUS = 'warning';\nexports.WARNING_STATUS = WARNING_STATUS;\nvar ERROR_STATUS = 'error';\nexports.ERROR_STATUS = ERROR_STATUS;\nvar STATUS = {\n  \"default\": DEFAULT_STATUS,\n  info: INFO_STATUS,\n  success: SUCCESS_STATUS,\n  warning: WARNING_STATUS,\n  error: ERROR_STATUS\n};\nexports.STATUS = STATUS;\nvar TOP = 't';\nexports.TOP = TOP;\nvar TOP_CENTER = 'tc';\nexports.TOP_CENTER = TOP_CENTER;\nvar TOP_LEFT_POSITION = 'tl';\nexports.TOP_LEFT_POSITION = TOP_LEFT_POSITION;\nvar TOP_RIGHT_POSITION = 'tr';\nexports.TOP_RIGHT_POSITION = TOP_RIGHT_POSITION;\nvar BOTTOM = 'b';\nexports.BOTTOM = BOTTOM;\nvar BOTTOM_CENTER = 'bc';\nexports.BOTTOM_CENTER = BOTTOM_CENTER;\nvar BOTTOM_LEFT_POSITION = 'bl';\nexports.BOTTOM_LEFT_POSITION = BOTTOM_LEFT_POSITION;\nvar BOTTOM_RIGHT_POSITION = 'br';\nexports.BOTTOM_RIGHT_POSITION = BOTTOM_RIGHT_POSITION;\nvar POSITIONS = {\n  top: TOP,\n  topCenter: TOP_CENTER,\n  topLeft: TOP_LEFT_POSITION,\n  topRight: TOP_RIGHT_POSITION,\n  bottom: BOTTOM,\n  bottomCenter: BOTTOM_CENTER,\n  bottomLeft: BOTTOM_LEFT_POSITION,\n  bottomRight: BOTTOM_RIGHT_POSITION\n}; // default value for notifications\n\nexports.POSITIONS = POSITIONS;\nvar DEFAULT_NOTIFICATION = {\n  status: DEFAULT_STATUS,\n  position: TOP_RIGHT_POSITION,\n  dismissible: true,\n  dismissAfter: 5000,\n  allowHTML: false,\n  closeButton: false\n};\nexports.DEFAULT_NOTIFICATION = DEFAULT_NOTIFICATION;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n  createFromArray: function createFromArray(blocks) {\n    return OrderedMap(blocks.map(function (block) {\n      return [block.getKey(), block];\n    }));\n  }\n};\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n  if (!haystack.size) {\n    return;\n  }\n\n  var cursor = 0;\n  haystack.reduce(function (value, nextValue, nextIndex) {\n    if (!areEqualFn(value, nextValue)) {\n      if (filterFn(value)) {\n        foundFn(cursor, nextIndex);\n      }\n\n      cursor = nextIndex;\n    }\n\n    return nextValue;\n  });\n  filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  if (!node.ownerDocument.defaultView) {\n    return node instanceof HTMLElement;\n  }\n\n  if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n    return true;\n  }\n\n  return false;\n}\n\nmodule.exports = isHTMLElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n  var selection = editorState.getSelection();\n  var content = editorState.getCurrentContent();\n  var target = selection;\n  var anchorKey = selection.getAnchorKey();\n  var focusKey = selection.getFocusKey();\n  var anchorBlock = content.getBlockForKey(anchorKey);\n\n  if (experimentalTreeDataSupport) {\n    if (direction === 'forward') {\n      if (anchorKey !== focusKey) {\n        // For now we ignore forward delete across blocks,\n        // if there is demand for this we will implement it.\n        return content;\n      }\n    }\n  }\n\n  if (selection.isCollapsed()) {\n    if (direction === 'forward') {\n      if (editorState.isSelectionAtEndOfContent()) {\n        return content;\n      }\n\n      if (experimentalTreeDataSupport) {\n        var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n        if (isAtEndOfBlock) {\n          var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n          if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n            // For now we ignore forward delete at the end of a block,\n            // if there is demand for this we will implement it.\n            return content;\n          }\n        }\n      }\n    } else if (editorState.isSelectionAtStartOfContent()) {\n      return content;\n    }\n\n    target = strategy(editorState);\n\n    if (target === selection) {\n      return content;\n    }\n  }\n\n  return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n  if (Typed = global[TypedArrayConstructors[i++]]) {\n    hide(Typed.prototype, TYPED, true);\n    hide(Typed.prototype, VIEW, true);\n  } else CONSTR = false;\n}\n\nmodule.exports = {\n  ABV: ABV,\n  CONSTR: CONSTR,\n  TYPED: TYPED,\n  VIEW: VIEW\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n  // invalid partial entities when the fragment is reused. We do, however,\n  // preserve entities that are entirely within the selection range.\n\n  var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n  var blockMap = contentWithoutEdgeEntities.getBlockMap();\n  var blockKeys = blockMap.keySeq();\n  var startIndex = blockKeys.indexOf(startKey);\n  var endIndex = blockKeys.indexOf(endKey) + 1;\n  return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n    var text = block.getText();\n    var chars = block.getCharacterList();\n\n    if (startKey === endKey) {\n      return block.merge({\n        text: text.slice(startOffset, endOffset),\n        characterList: chars.slice(startOffset, endOffset)\n      });\n    }\n\n    if (blockKey === startKey) {\n      return block.merge({\n        text: text.slice(startOffset),\n        characterList: chars.slice(startOffset)\n      });\n    }\n\n    if (blockKey === endKey) {\n      return block.merge({\n        text: text.slice(0, endOffset),\n        characterList: chars.slice(0, endOffset)\n      });\n    }\n\n    return block;\n  }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n  console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.getLastCreatedEntityKey' instead.\n   * ---\n   * Get the random key string from whatever entity was last created.\n   * We need this to support the new API, as part of transitioning to put Entity\n   * storage in contentState.\n   */\n  getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n    logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n    return DraftEntity.__getLastCreatedEntityKey();\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.createEntity' instead.\n   * ---\n   * Create a DraftEntityInstance and store it for later retrieval.\n   *\n   * A random key string will be generated and returned. This key may\n   * be used to track the entity's usage in a ContentBlock, and for\n   * retrieving data about the entity at render time.\n   */\n  create: function create(type, mutability, data) {\n    logWarning('DraftEntity.create', 'contentState.createEntity');\n    return DraftEntity.__create(type, mutability, data);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.addEntity' instead.\n   * ---\n   * Add an existing DraftEntityInstance to the DraftEntity map. This is\n   * useful when restoring instances from the server.\n   */\n  add: function add(instance) {\n    logWarning('DraftEntity.add', 'contentState.addEntity');\n    return DraftEntity.__add(instance);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.getEntity' instead.\n   * ---\n   * Retrieve the entity corresponding to the supplied key string.\n   */\n  get: function get(key) {\n    logWarning('DraftEntity.get', 'contentState.getEntity');\n    return DraftEntity.__get(key);\n  },\n\n  /**\n   * Get all the entities in the content state.\n   */\n  __getAll: function __getAll() {\n    return instances;\n  },\n\n  /**\n   * Load the entity map with the given set of entities.\n   */\n  __loadWithEntities: function __loadWithEntities(entities) {\n    instances = entities;\n    instanceKey = uuid();\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.mergeEntityData' instead.\n   * ---\n   * Entity instances are immutable. If you need to update the data for an\n   * instance, this method will merge your data updates and return a new\n   * instance.\n   */\n  mergeData: function mergeData(key, toMerge) {\n    logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n    return DraftEntity.__mergeData(key, toMerge);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.replaceEntityData' instead.\n   * ---\n   * Completely replace the data for a given instance.\n   */\n  replaceData: function replaceData(key, newData) {\n    logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n    return DraftEntity.__replaceData(key, newData);\n  },\n  // ***********************************WARNING******************************\n  // --- the above public API will be deprecated in the next version of Draft!\n  // The methods below this line are private - don't call them directly.\n\n  /**\n   * Get the random key string from whatever entity was last created.\n   * We need this to support the new API, as part of transitioning to put Entity\n   * storage in contentState.\n   */\n  __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n    return instanceKey;\n  },\n\n  /**\n   * Create a DraftEntityInstance and store it for later retrieval.\n   *\n   * A random key string will be generated and returned. This key may\n   * be used to track the entity's usage in a ContentBlock, and for\n   * retrieving data about the entity at render time.\n   */\n  __create: function __create(type, mutability, data) {\n    return DraftEntity.__add(new DraftEntityInstance({\n      type: type,\n      mutability: mutability,\n      data: data || {}\n    }));\n  },\n\n  /**\n   * Add an existing DraftEntityInstance to the DraftEntity map. This is\n   * useful when restoring instances from the server.\n   */\n  __add: function __add(instance) {\n    instanceKey = uuid();\n    instances = instances.set(instanceKey, instance);\n    return instanceKey;\n  },\n\n  /**\n   * Retrieve the entity corresponding to the supplied key string.\n   */\n  __get: function __get(key) {\n    var instance = instances.get(key);\n    !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n    return instance;\n  },\n\n  /**\n   * Entity instances are immutable. If you need to update the data for an\n   * instance, this method will merge your data updates and return a new\n   * instance.\n   */\n  __mergeData: function __mergeData(key, toMerge) {\n    var instance = DraftEntity.__get(key);\n\n    var newData = _objectSpread({}, instance.getData(), toMerge);\n\n    var newInstance = instance.set('data', newData);\n    instances = instances.set(key, newInstance);\n    return newInstance;\n  },\n\n  /**\n   * Completely replace the data for a given instance.\n   */\n  __replaceData: function __replaceData(key, newData) {\n    var instance = DraftEntity.__get(key);\n\n    var newInstance = instance.set('data', newData);\n    instances = instances.set(key, newInstance);\n    return newInstance;\n  }\n};\nmodule.exports = DraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n  anchorKey: '',\n  anchorOffset: 0,\n  focusKey: '',\n  focusOffset: 0,\n  isBackward: false,\n  hasFocus: false\n};\n/* $FlowFixMe This comment suppresses an error found when automatically adding\n * a type annotation with the codemod Komodo/Annotate_exports. To see the error\n * delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState =\n/*#__PURE__*/\nfunction (_SelectionStateRecord) {\n  _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n  function SelectionState() {\n    return _SelectionStateRecord.apply(this, arguments) || this;\n  }\n\n  var _proto = SelectionState.prototype;\n\n  _proto.serialize = function serialize() {\n    return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n  };\n\n  _proto.getAnchorKey = function getAnchorKey() {\n    return this.get('anchorKey');\n  };\n\n  _proto.getAnchorOffset = function getAnchorOffset() {\n    return this.get('anchorOffset');\n  };\n\n  _proto.getFocusKey = function getFocusKey() {\n    return this.get('focusKey');\n  };\n\n  _proto.getFocusOffset = function getFocusOffset() {\n    return this.get('focusOffset');\n  };\n\n  _proto.getIsBackward = function getIsBackward() {\n    return this.get('isBackward');\n  };\n\n  _proto.getHasFocus = function getHasFocus() {\n    return this.get('hasFocus');\n  }\n  /**\n   * Return whether the specified range overlaps with an edge of the\n   * SelectionState.\n   */\n  ;\n\n  _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n    var anchorKey = this.getAnchorKey();\n    var focusKey = this.getFocusKey();\n\n    if (anchorKey === focusKey && anchorKey === blockKey) {\n      var selectionStart = this.getStartOffset();\n      var selectionEnd = this.getEndOffset();\n      return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n      start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n      ;\n    }\n\n    if (blockKey !== anchorKey && blockKey !== focusKey) {\n      return false;\n    }\n\n    var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n    return start <= offsetToCheck && end >= offsetToCheck;\n  };\n\n  _proto.isCollapsed = function isCollapsed() {\n    return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n  };\n\n  _proto.getStartKey = function getStartKey() {\n    return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n  };\n\n  _proto.getStartOffset = function getStartOffset() {\n    return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n  };\n\n  _proto.getEndKey = function getEndKey() {\n    return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n  };\n\n  _proto.getEndOffset = function getEndOffset() {\n    return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n  };\n\n  SelectionState.createEmpty = function createEmpty(key) {\n    return new SelectionState({\n      anchorKey: key,\n      anchorOffset: 0,\n      focusKey: key,\n      focusOffset: 0,\n      isBackward: false,\n      hasFocus: false\n    });\n  };\n\n  return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n *       global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n  return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n  !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n  !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n  globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n  setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n  if (!globalDir) {\n    this.initGlobalDir();\n  }\n\n  !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n  return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n  // Values\n  NEUTRAL: NEUTRAL,\n  LTR: LTR,\n  RTL: RTL,\n  // Helpers\n  isStrong: isStrong,\n  getHTMLDir: getHTMLDir,\n  getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n  // Global Direction\n  setGlobalDir: setGlobalDir,\n  initGlobalDir: initGlobalDir,\n  getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n  var searchNode = node;\n\n  while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n    var key = getSelectionOffsetKeyForNode(searchNode);\n\n    if (key != null) {\n      return key;\n    }\n\n    searchNode = searchNode.parentNode;\n  }\n\n  return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n  if (!node || !node.ownerDocument) {\n    return document;\n  }\n\n  return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n  BACKSPACE: 8,\n  TAB: 9,\n  RETURN: 13,\n  ALT: 18,\n  ESC: 27,\n  SPACE: 32,\n  PAGE_UP: 33,\n  PAGE_DOWN: 34,\n  END: 35,\n  HOME: 36,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46,\n  COMMA: 188,\n  PERIOD: 190,\n  A: 65,\n  Z: 90,\n  ZERO: 48,\n  NUMPAD_0: 96,\n  NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n  var overflow = Style.get(element, name);\n  return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n  /**\n   * Gets the style property for the supplied node. This will return either the\n   * computed style, if available, or the declared style.\n   *\n   * @param {DOMNode} node\n   * @param {string} name Style property name.\n   * @return {?string} Style property value.\n   */\n  get: getStyleProperty,\n\n  /**\n   * Determines the nearest ancestor of a node that is scrollable.\n   *\n   * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n   *\n   * @param {?DOMNode} node Node from which to start searching.\n   * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n   */\n  getScrollParent: function getScrollParent(node) {\n    if (!node) {\n      return null;\n    }\n\n    var ownerDocument = node.ownerDocument;\n\n    while (node && node !== ownerDocument.body) {\n      if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n        return node;\n      }\n\n      node = node.parentNode;\n    }\n\n    return ownerDocument.defaultView || ownerDocument.parentWindow;\n  }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n  var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n  if (scrollable.Window && scrollable instanceof scrollable.Window) {\n    scrollable = documentScrollElement;\n  }\n\n  var scrollPosition = getUnboundedScrollPosition(scrollable);\n  var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n  var xMax = scrollable.scrollWidth - viewport.clientWidth;\n  var yMax = scrollable.scrollHeight - viewport.clientHeight;\n  scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n  scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n  return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n  return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = res[2] || defaultDelimiter\n    var pattern = capture || group\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"STATUS\", {\n  enumerable: true,\n  get: function get() {\n    return _constants.STATUS;\n  }\n});\nObject.defineProperty(exports, \"POSITIONS\", {\n  enumerable: true,\n  get: function get() {\n    return _constants.POSITIONS;\n  }\n});\nObject.defineProperty(exports, \"DEFAULT_NOTIFICATION\", {\n  enumerable: true,\n  get: function get() {\n    return _constants.DEFAULT_NOTIFICATION;\n  }\n});\nObject.defineProperty(exports, \"reducer\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"actions\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.actions;\n  }\n});\nObject.defineProperty(exports, \"types\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.types;\n  }\n});\nObject.defineProperty(exports, \"addNotification\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.addNotification;\n  }\n});\nObject.defineProperty(exports, \"notify\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.notify;\n  }\n});\nObject.defineProperty(exports, \"updateNotification\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.updateNotification;\n  }\n});\nObject.defineProperty(exports, \"removeNotification\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.removeNotification;\n  }\n});\nObject.defineProperty(exports, \"removeNotifications\", {\n  enumerable: true,\n  get: function get() {\n    return _notifications.removeNotifications;\n  }\n});\nexports[\"default\"] = void 0;\n\nvar _NotificationsSystem = _interopRequireDefault(require(\"./components/NotificationsSystem\"));\n\nvar _constants = require(\"./constants\");\n\nvar _notifications = _interopRequireWildcard(require(\"./store/notifications\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// NotificationsSystem React component\nvar _default = _NotificationsSystem[\"default\"];\nexports[\"default\"] = _default;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n  Transition: _Transition.default,\n  TransitionGroup: _TransitionGroup.default,\n  ReplaceTransition: _ReplaceTransition.default,\n  CSSTransition: _CSSTransition.default\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n  Editor: DraftEditor,\n  EditorBlock: DraftEditorBlock,\n  EditorState: EditorState,\n  CompositeDecorator: CompositeDraftDecorator,\n  Entity: DraftEntity,\n  EntityInstance: DraftEntityInstance,\n  BlockMapBuilder: BlockMapBuilder,\n  CharacterMetadata: CharacterMetadata,\n  ContentBlock: ContentBlock,\n  ContentState: ContentState,\n  RawDraftContentState: RawDraftContentState,\n  SelectionState: SelectionState,\n  AtomicBlockUtils: AtomicBlockUtils,\n  KeyBindingUtil: KeyBindingUtil,\n  Modifier: DraftModifier,\n  RichUtils: RichTextEditorUtil,\n  DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n  DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n  convertFromHTML: convertFromHTML,\n  convertFromRaw: convertFromRawToDraftState,\n  convertToRaw: convertFromDraftStateToRaw,\n  genKey: generateRandomKey,\n  getDefaultKeyBinding: getDefaultKeyBinding,\n  getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n  var str = String(defined(this));\n  var res = '';\n  var n = toInteger(count);\n  if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n  return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n  // eslint-disable-next-line no-self-compare\n  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n  // Old FF bug\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var aLen = arguments.length;\n  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n  var end = aLen > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n  var buffer = new Array(nBytes);\n  var eLen = nBytes * 8 - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var i = 0;\n  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n  var e, m, c;\n  value = abs(value);\n  // eslint-disable-next-line no-self-compare\n  if (value != value || value === Infinity) {\n    // eslint-disable-next-line no-self-compare\n    m = value != value ? 1 : 0;\n    e = eMax;\n  } else {\n    e = floor(log(value) / LN2);\n    if (value * (c = pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * pow(2, eBias - 1) * pow(2, mLen);\n      e = 0;\n    }\n  }\n  for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n  e = e << mLen | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n  buffer[--i] |= s * 128;\n  return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n  var eLen = nBytes * 8 - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var nBits = eLen - 7;\n  var i = nBytes - 1;\n  var s = buffer[i--];\n  var e = s & 127;\n  var m;\n  s >>= 7;\n  for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n  m = e & (1 << -nBits) - 1;\n  e >>= -nBits;\n  nBits += mLen;\n  for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : s ? -Infinity : Infinity;\n  } else {\n    m = m + pow(2, mLen);\n    e = e - eBias;\n  } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n  return [it & 0xff];\n}\nfunction packI16(it) {\n  return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n  return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n  return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n  dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n  var numIndex = +index;\n  var intIndex = toIndex(numIndex);\n  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n  var store = view[$BUFFER]._b;\n  var start = intIndex + view[$OFFSET];\n  var pack = store.slice(start, start + bytes);\n  return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n  var numIndex = +index;\n  var intIndex = toIndex(numIndex);\n  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n  var store = view[$BUFFER]._b;\n  var start = intIndex + view[$OFFSET];\n  var pack = conversion(+value);\n  for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n    var byteLength = toIndex(length);\n    this._b = arrayFill.call(new Array(byteLength), 0);\n    this[$LENGTH] = byteLength;\n  };\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, $DataView, DATA_VIEW);\n    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n    var bufferLength = buffer[$LENGTH];\n    var offset = toInteger(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    this[$BUFFER] = buffer;\n    this[$OFFSET] = offset;\n    this[$LENGTH] = byteLength;\n  };\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n    addGetter($DataView, BUFFER, '_b');\n    addGetter($DataView, BYTE_LENGTH, '_l');\n    addGetter($DataView, BYTE_OFFSET, '_o');\n  }\n\n  redefineAll($DataView[PROTOTYPE], {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments[1]);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments[1]);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackI32(get(this, 4, byteOffset, arguments[1]));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packI8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packI8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packI16, value, arguments[2]);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packI16, value, arguments[2]);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packI32, value, arguments[2]);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packI32, value, arguments[2]);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packF32, value, arguments[2]);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packF64, value, arguments[2]);\n    }\n  });\n} else {\n  if (!fails(function () {\n    $ArrayBuffer(1);\n  }) || !fails(function () {\n    new $ArrayBuffer(-1); // eslint-disable-line no-new\n  }) || fails(function () {\n    new $ArrayBuffer(); // eslint-disable-line no-new\n    new $ArrayBuffer(1.5); // eslint-disable-line no-new\n    new $ArrayBuffer(NaN); // eslint-disable-line no-new\n    return $ArrayBuffer.name != ARRAY_BUFFER;\n  })) {\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, $ArrayBuffer);\n      return new BaseBuffer(toIndex(length));\n    };\n    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n    for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n    }\n    if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n  }\n  // iOS Safari 7.x bug\n  var view = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = $DataView[PROTOTYPE].setInt8;\n  view.setInt8(0, 2147483648);\n  view.setInt8(1, 2147483649);\n  if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    }\n  }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.convertStatus = convertStatus;\nexports.Timer = Timer;\nexports.treatNotification = treatNotification;\nexports.preloadImage = preloadImage;\nexports.mapObjectValues = mapObjectValues;\n\nvar _constants = require(\"../constants\");\n\nfunction convertStatus(status) {\n  var reHttpStatusCode = /^\\d{3}$/; // convert HTTP status code\n\n  if (reHttpStatusCode.test(status)) {\n    switch (true) {\n      case /^1/.test(status):\n        return _constants.STATUS.info;\n\n      case /^2/.test(status):\n        return _constants.STATUS.success;\n\n      case /^(4|5)/.test(status):\n        return _constants.STATUS.error;\n    }\n  }\n\n  return status;\n}\n/**\n * Create a Timer\n * @param {Number} delay\n * @param {Function} callback\n * @constructor\n */\n\n\nfunction Timer(delay, callback) {\n  var timerId;\n  var start;\n  var remaining = delay;\n\n  this.pause = function () {\n    clearTimeout(timerId);\n    remaining -= new Date() - start;\n  };\n\n  this.resume = function () {\n    start = new Date();\n    clearTimeout(timerId);\n    timerId = setTimeout(callback, remaining);\n  };\n\n  this.getTimeRemaining = function () {\n    return remaining;\n  };\n}\n/**\n * Treat data of a notification\n * @param {Object} notification\n * @returns {Object} a notification\n */\n\n\nfunction treatNotification(notification) {\n  if (notification.dismissAfter) {\n    notification.dismissAfter = parseInt(notification.dismissAfter);\n  }\n\n  notification.status = convertStatus(notification.status);\n\n  if (!notification.buttons) {\n    notification.buttons = [];\n  }\n\n  return notification;\n}\n/**\n * Preload an image\n * @param {String} url url of image to load\n * @param {Function} cb Function called when image is loaded or not\n * @returns {void}\n */\n\n\nfunction preloadImage(url, cb) {\n  var image = new Image();\n  image.src = url;\n  image.onload = cb;\n  image.onerror = cb;\n  return image;\n}\n/**\n * Return values of an Object in an Array\n * @param {Object} obj\n * @returns {Array}\n */\n\n\nfunction mapObjectValues(obj) {\n  var array = [];\n  Object.keys(obj).forEach(function (key) {\n    return array.push(obj[key]);\n  });\n  return array;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n  /**\n   * The `<TransitionGroup>` component manages a set of transition components\n   * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n   * components, `<TransitionGroup>` is a state machine for managing the mounting\n   * and unmounting of components over time.\n   *\n   * Consider the example below. As items are removed or added to the TodoList the\n   * `in` prop is toggled automatically by the `<TransitionGroup>`.\n   *\n   * Note that `<TransitionGroup>`  does not define any animation behavior!\n   * Exactly _how_ a list item animates is up to the individual transition\n   * component. This means you can mix and match animations across different list\n   * items.\n   */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: {\n        isMounting: !this.appeared\n      }\n    };\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n    this.mounted = true;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  };\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return children;\n    }\n\n    return _react.default.createElement(Component, props, children);\n  };\n\n  return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes.default.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: _propTypes.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat,\n    ImmutableMap = Immutable.Map,\n    OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n  entityMap: null,\n  blockMap: null,\n  selectionBefore: null,\n  selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe Supressing a `signature-verification-failure` error here.\n * TODO: T65949050 Clean up the branch for this GK\n */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState =\n/*#__PURE__*/\nfunction (_ContentStateRecord) {\n  _inheritsLoose(ContentState, _ContentStateRecord);\n\n  function ContentState() {\n    return _ContentStateRecord.apply(this, arguments) || this;\n  }\n\n  var _proto = ContentState.prototype;\n\n  _proto.getEntityMap = function getEntityMap() {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity;\n  };\n\n  _proto.getBlockMap = function getBlockMap() {\n    return this.get('blockMap');\n  };\n\n  _proto.getSelectionBefore = function getSelectionBefore() {\n    return this.get('selectionBefore');\n  };\n\n  _proto.getSelectionAfter = function getSelectionAfter() {\n    return this.get('selectionAfter');\n  };\n\n  _proto.getBlockForKey = function getBlockForKey(key) {\n    var block = this.getBlockMap().get(key);\n    return block;\n  };\n\n  _proto.getKeyBefore = function getKeyBefore(key) {\n    return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n      return v === key;\n    }).skip(1).first();\n  };\n\n  _proto.getKeyAfter = function getKeyAfter(key) {\n    return this.getBlockMap().keySeq().skipUntil(function (v) {\n      return v === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlockAfter = function getBlockAfter(key) {\n    return this.getBlockMap().skipUntil(function (_, k) {\n      return k === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlockBefore = function getBlockBefore(key) {\n    return this.getBlockMap().reverse().skipUntil(function (_, k) {\n      return k === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlocksAsArray = function getBlocksAsArray() {\n    return this.getBlockMap().toArray();\n  };\n\n  _proto.getFirstBlock = function getFirstBlock() {\n    return this.getBlockMap().first();\n  };\n\n  _proto.getLastBlock = function getLastBlock() {\n    return this.getBlockMap().last();\n  };\n\n  _proto.getPlainText = function getPlainText(delimiter) {\n    return this.getBlockMap().map(function (block) {\n      return block ? block.getText() : '';\n    }).join(delimiter || '\\n');\n  };\n\n  _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity.__getLastCreatedEntityKey();\n  };\n\n  _proto.hasText = function hasText() {\n    var blockMap = this.getBlockMap();\n    return blockMap.size > 1 || // make sure that there are no zero width space chars\n    escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n  };\n\n  _proto.createEntity = function createEntity(type, mutability, data) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__create(type, mutability, data);\n\n    return this;\n  };\n\n  _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__mergeData(key, toMerge);\n\n    return this;\n  };\n\n  _proto.replaceEntityData = function replaceEntityData(key, newData) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__replaceData(key, newData);\n\n    return this;\n  };\n\n  _proto.addEntity = function addEntity(instance) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__add(instance);\n\n    return this;\n  };\n\n  _proto.getEntity = function getEntity(key) {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity.__get(key);\n  };\n\n  _proto.getAllEntities = function getAllEntities() {\n    return DraftEntity.__getAll();\n  };\n\n  _proto.loadWithEntities = function loadWithEntities(entities) {\n    return DraftEntity.__loadWithEntities(entities);\n  };\n\n  ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n  blocks, entityMap) {\n    // TODO: remove this when we completely deprecate the old entity API\n    var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n    var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n    var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n    return new ContentState({\n      blockMap: blockMap,\n      entityMap: entityMap || DraftEntity,\n      selectionBefore: selectionState,\n      selectionAfter: selectionState\n    });\n  };\n\n  ContentState.createFromText = function createFromText(text) {\n    var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n    var strings = text.split(delimiter);\n    var blocks = strings.map(function (block) {\n      block = sanitizeDraftText(block);\n      return new ContentBlockNodeRecord({\n        key: generateRandomKey(),\n        text: block,\n        type: 'unstyled',\n        characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n      });\n    });\n    return ContentState.createFromBlockArray(blocks);\n  };\n\n  ContentState.fromJS = function fromJS(state) {\n    return new ContentState(_objectSpread({}, state, {\n      blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n      selectionBefore: new SelectionState(state.selectionBefore),\n      selectionAfter: new SelectionState(state.selectionAfter)\n    }));\n  };\n\n  ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n    var characterList = block.characterList;\n    return new ContentBlockNodeRecord(_objectSpread({}, block, {\n      data: ImmutableMap(block.data),\n      characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n        return CharacterMetadata.fromJS(c);\n      })) : undefined\n    }));\n  };\n\n  return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n *       Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n  L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n  R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n  AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str  A text block; e.g. paragraph, table cell, tag\n * @return     A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n  var match = REGEX_STRONG.exec(str);\n  return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str  A text block; e.g. paragraph, table cell, tag\n * @return     The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n  var strongChar = firstStrongChar(str);\n\n  if (strongChar == null) {\n    return UnicodeBidiDirection.NEUTRAL;\n  }\n\n  return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str       A text block; e.g. paragraph, table cell, tag\n * @param fallback  Fallback direction, used if no strong direction detected\n *                  for the block (default = NEUTRAL)\n * @return          The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n  fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n  if (!str.length) {\n    return fallback;\n  }\n\n  var blockDir = firstStrongCharDir(str);\n  return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n  if (!strongFallback) {\n    strongFallback = UnicodeBidiDirection.getGlobalDir();\n  }\n\n  !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n  return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n  return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n  return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n  firstStrongChar: firstStrongChar,\n  firstStrongCharDir: firstStrongCharDir,\n  resolveBlockDir: resolveBlockDir,\n  getDirection: getDirection,\n  isDirectionLTR: isDirectionLTR,\n  isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n  className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n  className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n  className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n  'header-one': {\n    element: 'h1'\n  },\n  'header-two': {\n    element: 'h2'\n  },\n  'header-three': {\n    element: 'h3'\n  },\n  'header-four': {\n    element: 'h4'\n  },\n  'header-five': {\n    element: 'h5'\n  },\n  'header-six': {\n    element: 'h6'\n  },\n  section: {\n    element: 'section'\n  },\n  article: {\n    element: 'article'\n  },\n  'unordered-list-item': {\n    element: 'li',\n    wrapper: UL_WRAP\n  },\n  'ordered-list-item': {\n    element: 'li',\n    wrapper: OL_WRAP\n  },\n  blockquote: {\n    element: 'blockquote'\n  },\n  atomic: {\n    element: 'figure'\n  },\n  'code-block': {\n    element: 'pre',\n    wrapper: PRE_WRAP\n  },\n  unstyled: {\n    element: 'div',\n    aliasedElements: ['p']\n  }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n    notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n  var entityKey;\n\n  if (targetSelection.isCollapsed()) {\n    var key = targetSelection.getAnchorKey();\n    var offset = targetSelection.getAnchorOffset();\n\n    if (offset > 0) {\n      entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n      if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n        return null;\n      }\n\n      return filterKey(contentState.getEntityMap(), entityKey);\n    }\n\n    return null;\n  }\n\n  var startKey = targetSelection.getStartKey();\n  var startOffset = targetSelection.getStartOffset();\n  var startBlock = contentState.getBlockForKey(startKey);\n  entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n  return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n  if (notEmptyKey(entityKey)) {\n    var entity = entityMap.__get(entityKey);\n\n    return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n  }\n\n  return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n  return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n *    get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n *    set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n  /**\n   * @param {DOMElement} element\n   * @return {number}\n   */\n  getTop: function getTop(element) {\n    var doc = element.ownerDocument;\n    return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n    // or one will be zero and the other will be the scroll position\n    // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n    doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @param {number} newTop\n   */\n  setTop: function setTop(element, newTop) {\n    var doc = element.ownerDocument;\n\n    if (_isViewportScrollElement(element, doc)) {\n      doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n    } else {\n      element.scrollTop = newTop;\n    }\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @return {number}\n   */\n  getLeft: function getLeft(element) {\n    var doc = element.ownerDocument;\n    return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @param {number} newLeft\n   */\n  setLeft: function setLeft(element, newLeft) {\n    var doc = element.ownerDocument;\n\n    if (_isViewportScrollElement(element, doc)) {\n      doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n    } else {\n      element.scrollLeft = newLeft;\n    }\n  }\n};\nmodule.exports = Scroll;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n  var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n  process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n  var content = editorState.getCurrentContent();\n  var key = selection.getStartKey();\n  var offset = selection.getStartOffset();\n  var focusKey = key;\n  var focusOffset = 0;\n\n  if (maxDistance > offset) {\n    var keyBefore = content.getKeyBefore(key);\n\n    if (keyBefore == null) {\n      focusKey = key;\n    } else {\n      focusKey = keyBefore;\n      var blockBefore = content.getBlockForKey(keyBefore);\n      focusOffset = blockBefore.getText().length;\n    }\n  } else {\n    focusOffset = offset - maxDistance;\n  }\n\n  return selection.merge({\n    focusKey: focusKey,\n    focusOffset: focusOffset,\n    isBackward: true\n  });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  var argIndex = 0;\n  var message = 'Warning: ' + format.replace(/%s/g, function () {\n    return args[argIndex++];\n  });\n\n  if (typeof console !== 'undefined') {\n    console.error(message);\n  }\n\n  try {\n    // --- Welcome to debugging React ---\n    // This error was thrown as a convenience so that you can use this stack\n    // to find the callsite that caused this warning to fire.\n    throw new Error(message);\n  } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n  if (format === undefined) {\n    throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n  }\n\n  if (!condition) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n      args[_key2 - 2] = arguments[_key2];\n    }\n\n    printWarning.apply(void 0, [format].concat(args));\n  }\n} : emptyFunction;\nmodule.exports = warning;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n  /**\n   * Check whether the ctrlKey modifier is *not* being used in conjunction with\n   * the altKey modifier. If they are combined, the result is an `altGraph`\n   * key modifier, which should not be handled by this set of key bindings.\n   */\n  isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n    return !!e.ctrlKey && !e.altKey;\n  },\n  isOptionKeyCommand: function isOptionKeyCommand(e) {\n    return isOSX && e.altKey;\n  },\n  usesMacOSHeuristics: function usesMacOSHeuristics() {\n    return isOSX;\n  },\n  hasCommandModifier: function hasCommandModifier(e) {\n    return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n  },\n  isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n      if (result != null) {\n        error = result;\n      }\n    });\n\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n  return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n  // Test for strict equality first.\n  if (a === b) return true;\n\n  // Otherwise, if either of them == null they are not equal.\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return (\n      Array.isArray(b) &&\n      a.length === b.length &&\n      a.every(function(item, index) {\n        return valueEqual(item, b[index]);\n      })\n    );\n  }\n\n  if (typeof a === 'object' || typeof b === 'object') {\n    var aValue = valueOf(a);\n    var bValue = valueOf(b);\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    return Object.keys(Object.assign({}, a, b)).every(function(key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'UNSAFE_componentWillReceiveProps',\n\t\tvalue: function UNSAFE_componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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 * @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 `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","function _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 _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\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\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\n\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n    _ref$userAgent = _ref.userAgent,\n    userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e) {\n    return false;\n  }\n}();\nvar PREFIX_TO_STYLE = {\n  'fas': 'solid',\n  'far': 'regular',\n  'fal': 'light',\n  'fad': 'duotone',\n  'fab': 'brands',\n  'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n  'solid': 'fas',\n  'regular': 'far',\n  'light': 'fal',\n  'duotone': 'fad',\n  'brands': 'fab'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Duotone|Brands|Free|Pro)/;\nvar FONT_WEIGHT_TO_PREFIX = {\n  '900': 'fas',\n  '400': 'far',\n  'normal': 'far',\n  '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n  GROUP: 'group',\n  SWAP_OPACITY: 'swap-opacity',\n  PRIMARY: 'primary',\n  SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n  return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n  return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\n\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  // For example <script data-search-pseudo-elements src=\"...\"></script>\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(function (_ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        attr = _ref2[0],\n        key = _ref2[1];\n\n    var val = coerce(getAttrConfig(attr));\n\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\n\nvar _default = {\n  familyPrefix: DEFAULT_FAMILY_PREFIX,\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  autoA11y: true,\n  searchPseudoElements: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(function (fn) {\n    return fn();\n  });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n  // run promise callbacks\n  for (var i = 0; i < asyncQueue.length; i++) {\n    asyncQueue[i][0](asyncQueue[i][1]);\n  } // reset async asyncQueue\n\n\n  asyncQueue = [];\n  asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n  asyncQueue.push([callback, arg]);\n\n  if (!asyncTimer) {\n    asyncTimer = true;\n    asyncSetTimer(asyncFlush, 0);\n  }\n}\n\nfunction invokeResolver(resolver, promise) {\n  function resolvePromise(value) {\n    resolve(promise, value);\n  }\n\n  function rejectPromise(reason) {\n    reject(promise, reason);\n  }\n\n  try {\n    resolver(resolvePromise, rejectPromise);\n  } catch (e) {\n    rejectPromise(e);\n  }\n}\n\nfunction invokeCallback(subscriber) {\n  var owner = subscriber.owner;\n  var settled = owner._state;\n  var value = owner._data;\n  var callback = subscriber[settled];\n  var promise = subscriber.then;\n\n  if (typeof callback === 'function') {\n    settled = FULFILLED;\n\n    try {\n      value = callback(value);\n    } catch (e) {\n      reject(promise, e);\n    }\n  }\n\n  if (!handleThenable(promise, value)) {\n    if (settled === FULFILLED) {\n      resolve(promise, value);\n    }\n\n    if (settled === REJECTED) {\n      reject(promise, value);\n    }\n  }\n}\n\nfunction handleThenable(promise, value) {\n  var resolved;\n\n  try {\n    if (promise === value) {\n      throw new TypeError('A promises callback cannot return that same promise.');\n    }\n\n    if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n      // then should be retrieved only once\n      var then = value.then;\n\n      if (typeof then === 'function') {\n        then.call(value, function (val) {\n          if (!resolved) {\n            resolved = true;\n\n            if (value === val) {\n              fulfill(promise, val);\n            } else {\n              resolve(promise, val);\n            }\n          }\n        }, function (reason) {\n          if (!resolved) {\n            resolved = true;\n            reject(promise, reason);\n          }\n        });\n        return true;\n      }\n    }\n  } catch (e) {\n    if (!resolved) {\n      reject(promise, e);\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nfunction resolve(promise, value) {\n  if (promise === value || !handleThenable(promise, value)) {\n    fulfill(promise, value);\n  }\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state === PENDING) {\n    promise._state = SETTLED;\n    promise._data = value;\n    asyncCall(publishFulfillment, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state === PENDING) {\n    promise._state = SETTLED;\n    promise._data = reason;\n    asyncCall(publishRejection, promise);\n  }\n}\n\nfunction publish(promise) {\n  promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n  promise._state = FULFILLED;\n  publish(promise);\n}\n\nfunction publishRejection(promise) {\n  promise._state = REJECTED;\n  publish(promise);\n\n  if (!promise._handled && isNode) {\n    global.process.emit('unhandledRejection', promise._data, promise);\n  }\n}\n\nfunction notifyRejectionHandled(promise) {\n  global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n  if (typeof resolver !== 'function') {\n    throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n  }\n\n  if (this instanceof P === false) {\n    throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n  }\n\n  this._then = [];\n  invokeResolver(resolver, this);\n}\n\nP.prototype = {\n  constructor: P,\n  _state: PENDING,\n  _then: null,\n  _data: undefined,\n  _handled: false,\n  then: function then(onFulfillment, onRejection) {\n    var subscriber = {\n      owner: this,\n      then: new this.constructor(NOOP),\n      fulfilled: onFulfillment,\n      rejected: onRejection\n    };\n\n    if ((onRejection || onFulfillment) && !this._handled) {\n      this._handled = true;\n\n      if (this._state === REJECTED && isNode) {\n        asyncCall(notifyRejectionHandled, this);\n      }\n    }\n\n    if (this._state === FULFILLED || this._state === REJECTED) {\n      // already resolved, call callback async\n      asyncCall(invokeCallback, subscriber);\n    } else {\n      // subscribe\n      this._then.push(subscriber);\n    }\n\n    return subscriber.then;\n  },\n  catch: function _catch(onRejection) {\n    return this.then(null, onRejection);\n  }\n};\n\nP.all = function (promises) {\n  if (!Array.isArray(promises)) {\n    throw new TypeError('You must pass an array to Promise.all().');\n  }\n\n  return new P(function (resolve, reject) {\n    var results = [];\n    var remaining = 0;\n\n    function resolver(index) {\n      remaining++;\n      return function (value) {\n        results[index] = value;\n\n        if (! --remaining) {\n          resolve(results);\n        }\n      };\n    }\n\n    for (var i = 0, promise; i < promises.length; i++) {\n      promise = promises[i];\n\n      if (promise && typeof promise.then === 'function') {\n        promise.then(resolver(i), reject);\n      } else {\n        results[i] = promise;\n      }\n    }\n\n    if (!remaining) {\n      resolve(results);\n    }\n  });\n};\n\nP.race = function (promises) {\n  if (!Array.isArray(promises)) {\n    throw new TypeError('You must pass an array to Promise.race().');\n  }\n\n  return new P(function (resolve, reject) {\n    for (var i = 0, promise; i < promises.length; i++) {\n      promise = promises[i];\n\n      if (promise && typeof promise.then === 'function') {\n        promise.then(resolve, reject);\n      } else {\n        resolve(promise);\n      }\n    }\n  });\n};\n\nP.resolve = function (value) {\n  if (value && _typeof(value) === 'object' && value.constructor === P) {\n    return value;\n  }\n\n  return new P(function (resolve) {\n    resolve(value);\n  });\n};\n\nP.reject = function (reason) {\n  return new P(function (resolve, reject) {\n    reject(reason);\n  });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\n\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n\n  var style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  var headChildren = DOCUMENT.head.childNodes;\n  var beforeChild = null;\n\n  for (var i = headChildren.length - 1; i > -1; i--) {\n    var child = headChildren[i];\n    var tagName = (child.tagName || '').toUpperCase();\n\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n  var size = 12;\n  var id = '';\n\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n\n  return id;\n}\nfunction toArray(obj) {\n  var array = [];\n\n  for (var i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n\n  return array;\n}\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n      return i;\n    });\n  }\n}\nfunction getIconName(familyPrefix, cls) {\n  var parts = cls.split('-');\n  var prefix = parts[0];\n  var iconName = parts.slice(1).join('-');\n\n  if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce(function (acc, styleName) {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n  }, '');\n}\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n  var transform = _ref.transform,\n      containerWidth = _ref.containerWidth,\n      iconWidth = _ref.iconWidth;\n  var outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  var inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  var path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer: outer,\n    inner: inner,\n    path: path\n  };\n}\nfunction transformForCss(_ref2) {\n  var transform = _ref2.transform,\n      _ref2$width = _ref2.width,\n      width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n      _ref2$height = _ref2.height,\n      height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n      _ref2$startCentered = _ref2.startCentered,\n      startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n  var val = '';\n\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n  }\n\n  val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\n\nfunction fillBlack(abstract) {\n  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n\n  return abstract;\n}\n\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\n\nfunction makeIconMasking (_ref) {\n  var children = _ref.children,\n      attributes = _ref.attributes,\n      main = _ref.main,\n      mask = _ref.mask,\n      explicitMaskId = _ref.maskId,\n      transform = _ref.transform;\n  var mainWidth = main.width,\n      mainPath = main.icon;\n  var maskWidth = mask.width,\n      maskPath = mask.icon;\n  var trans = transformForSvg({\n    transform: transform,\n    containerWidth: maskWidth,\n    iconWidth: mainWidth\n  });\n  var maskRect = {\n    tag: 'rect',\n    attributes: _objectSpread({}, ALL_SPACE, {\n      fill: 'white'\n    })\n  };\n  var maskInnerGroupChildrenMixin = mainPath.children ? {\n    children: mainPath.children.map(fillBlack)\n  } : {};\n  var maskInnerGroup = {\n    tag: 'g',\n    attributes: _objectSpread({}, trans.inner),\n    children: [fillBlack(_objectSpread({\n      tag: mainPath.tag,\n      attributes: _objectSpread({}, mainPath.attributes, trans.path)\n    }, maskInnerGroupChildrenMixin))]\n  };\n  var maskOuterGroup = {\n    tag: 'g',\n    attributes: _objectSpread({}, trans.outer),\n    children: [maskInnerGroup]\n  };\n  var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n  var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n  var maskTag = {\n    tag: 'mask',\n    attributes: _objectSpread({}, ALL_SPACE, {\n      id: maskId,\n      maskUnits: 'userSpaceOnUse',\n      maskContentUnits: 'userSpaceOnUse'\n    }),\n    children: [maskRect, maskOuterGroup]\n  };\n  var defs = {\n    tag: 'defs',\n    children: [{\n      tag: 'clipPath',\n      attributes: {\n        id: clipId\n      },\n      children: deGroup(maskPath)\n    }, maskTag]\n  };\n  children.push(defs, {\n    tag: 'rect',\n    attributes: _objectSpread({\n      fill: 'currentColor',\n      'clip-path': \"url(#\".concat(clipId, \")\"),\n      mask: \"url(#\".concat(maskId, \")\")\n    }, ALL_SPACE)\n  });\n  return {\n    children: children,\n    attributes: attributes\n  };\n}\n\nfunction makeIconStandard (_ref) {\n  var children = _ref.children,\n      attributes = _ref.attributes,\n      main = _ref.main,\n      transform = _ref.transform,\n      styles = _ref.styles;\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  if (transformIsMeaningful(transform)) {\n    var trans = transformForSvg({\n      transform: transform,\n      containerWidth: main.width,\n      iconWidth: main.width\n    });\n    children.push({\n      tag: 'g',\n      attributes: _objectSpread({}, trans.outer),\n      children: [{\n        tag: 'g',\n        attributes: _objectSpread({}, trans.inner),\n        children: [{\n          tag: main.icon.tag,\n          children: main.icon.children,\n          attributes: _objectSpread({}, main.icon.attributes, trans.path)\n        }]\n      }]\n    });\n  } else {\n    children.push(main.icon);\n  }\n\n  return {\n    children: children,\n    attributes: attributes\n  };\n}\n\nfunction asIcon (_ref) {\n  var children = _ref.children,\n      main = _ref.main,\n      mask = _ref.mask,\n      attributes = _ref.attributes,\n      styles = _ref.styles,\n      transform = _ref.transform;\n\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    var width = main.width,\n        height = main.height;\n    var offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread({}, styles, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n\n  return [{\n    tag: 'svg',\n    attributes: attributes,\n    children: children\n  }];\n}\n\nfunction asSymbol (_ref) {\n  var prefix = _ref.prefix,\n      iconName = _ref.iconName,\n      children = _ref.children,\n      attributes = _ref.attributes,\n      symbol = _ref.symbol;\n  var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread({}, attributes, {\n        id: id\n      }),\n      children: children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  var _params$icons = params.icons,\n      main = _params$icons.main,\n      mask = _params$icons.mask,\n      prefix = params.prefix,\n      iconName = params.iconName,\n      transform = params.transform,\n      symbol = params.symbol,\n      title = params.title,\n      maskId = params.maskId,\n      titleId = params.titleId,\n      extra = params.extra,\n      _params$watchable = params.watchable,\n      watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n  var _ref = mask.found ? mask : main,\n      width = _ref.width,\n      height = _ref.height;\n\n  var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n  var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n    return extra.classes.indexOf(c) === -1;\n  }).concat(extra.classes).join(' ');\n  var content = {\n    children: [],\n    attributes: _objectSpread({}, extra.attributes, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'xmlns': 'http://www.w3.org/2000/svg',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n\n  if (title) content.children.push({\n    tag: 'title',\n    attributes: {\n      id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n    },\n    children: [title]\n  });\n\n  var args = _objectSpread({}, content, {\n    prefix: prefix,\n    iconName: iconName,\n    main: main,\n    mask: mask,\n    maskId: maskId,\n    transform: transform,\n    symbol: symbol,\n    styles: extra.styles\n  });\n\n  var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n      children = _ref2.children,\n      attributes = _ref2.attributes;\n\n  args.children = children;\n  args.attributes = attributes;\n\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\nfunction makeLayersTextAbstract(params) {\n  var content = params.content,\n      width = params.width,\n      height = params.height,\n      transform = params.transform,\n      title = params.title,\n      extra = params.extra,\n      _params$watchable2 = params.watchable,\n      watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n  var attributes = _objectSpread({}, extra.attributes, title ? {\n    'title': title\n  } : {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n\n  var styles = _objectSpread({}, extra.styles);\n\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform: transform,\n      startCentered: true,\n      width: width,\n      height: height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n\n  var styleString = joinStyles(styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\nfunction makeLayersCounterAbstract(params) {\n  var content = params.content,\n      title = params.title,\n      extra = params.extra;\n\n  var attributes = _objectSpread({}, extra.attributes, title ? {\n    'title': title\n  } : {}, {\n    'class': extra.classes.join(' ')\n  });\n\n  var styleString = joinStyles(extra.styles);\n\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n\n  var val = [];\n  val.push({\n    tag: 'span',\n    attributes: attributes,\n    children: [content]\n  });\n\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n\n  return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nvar preamble = \"FA \\\"5.13.1\\\"\";\n\nvar begin = function begin(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return function () {\n    return end(name);\n  };\n};\n\nvar end = function end(name) {\n  p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n  begin: begin,\n  end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n      length = keys.length,\n      iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n      i,\n      key,\n      result;\n\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n\n  return result;\n};\n\nfunction toHex(unicode) {\n  var result = '';\n\n  for (var i = 0; i < unicode.length; i++) {\n    var hex = unicode.charCodeAt(i).toString(16);\n    result += ('000' + hex).slice(-4);\n  }\n\n  return result;\n}\n\nfunction defineIcons(prefix, icons) {\n  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _params$skipHooks = params.skipHooks,\n      skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n  var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n    var icon = icons[iconName];\n    var expanded = !!icon.icon;\n\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n\n    return acc;\n  }, {});\n\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalized);\n  } else {\n    namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n  }\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll easy the upgrade process for our users by automatically defining\n   * this as well.\n   */\n\n\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nvar styles = namespace.styles,\n    shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n  var lookup = function lookup(reducer) {\n    return reduce(styles, function (o, style, prefix) {\n      o[prefix] = reduce(style, reducer, {});\n      return o;\n    }, {});\n  };\n\n  _byUnicode = lookup(function (acc, icon, iconName) {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n\n    return acc;\n  });\n  _byLigature = lookup(function (acc, icon, iconName) {\n    var ligatures = icon[2];\n    acc[iconName] = iconName;\n    ligatures.forEach(function (ligature) {\n      acc[ligature] = iconName;\n    });\n    return acc;\n  });\n  var hasRegular = 'far' in styles;\n  _byOldName = reduce(shims, function (acc, shim) {\n    var oldName = shim[0];\n    var prefix = shim[1];\n    var iconName = shim[2];\n\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n\n    acc[oldName] = {\n      prefix: prefix,\n      iconName: iconName\n    };\n    return acc;\n  }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\nfunction getCanonicalIcon(values) {\n  return values.reduce(function (acc, cls) {\n    var iconName = getIconName(config.familyPrefix, cls);\n\n    if (styles$1[cls]) {\n      acc.prefix = cls;\n    } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n      acc.prefix = cls;\n    } else if (iconName) {\n      var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n      acc.iconName = shim.iconName || iconName;\n      acc.prefix = shim.prefix || acc.prefix;\n    } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n      acc.rest.push(cls);\n    }\n\n    return acc;\n  }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix: prefix,\n      iconName: iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\nfunction toHtml(abstractNodes) {\n  var tag = abstractNodes.tag,\n      _abstractNodes$attrib = abstractNodes.attributes,\n      attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n      _abstractNodes$childr = abstractNodes.children,\n      children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n\n  var mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\n\nvar mutators = {\n  replace: function replace(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1];\n    var newOuterHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n\n    if (node.parentNode && node.outerHTML) {\n      node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" -->\") : '');\n    } else if (node.parentNode) {\n      var newNode = document.createElement('span');\n      node.parentNode.replaceChild(newNode, node);\n      newNode.outerHTML = newOuterHTML;\n    }\n  },\n  nest: function nest(mutation) {\n    var node = mutation[0];\n    var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n\n    var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n    delete abstract[0].attributes.style;\n    delete abstract[0].attributes.id;\n    var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n      if (cls === config.replacementClass || cls.match(forSvg)) {\n        acc.toSvg.push(cls);\n      } else {\n        acc.toNode.push(cls);\n      }\n\n      return acc;\n    }, {\n      toNode: [],\n      toSvg: []\n    });\n    abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n    var newInnerHTML = abstract.map(function (a) {\n      return toHtml(a);\n    }).join('\\n');\n    node.setAttribute('class', splitClasses.toNode.join(' '));\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\n\nfunction performOperationSync(op) {\n  op();\n}\n\nfunction perform(mutations, callback) {\n  var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    var frame = performOperationSync;\n\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n\n    frame(function () {\n      var mutator = getMutator();\n      var mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\nvar disabled = false;\nfunction disableObservation() {\n  disabled = true;\n}\nfunction enableObservation() {\n  disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n\n  if (!config.observeMutations) {\n    return;\n  }\n\n  var treeCallback = options.treeCallback,\n      nodeCallback = options.nodeCallback,\n      pseudoElementsCallback = options.pseudoElementsCallback,\n      _options$observeMutat = options.observeMutationsRoot,\n      observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n  mo = new MUTATION_OBSERVER(function (objects) {\n    if (disabled) return;\n    toArray(objects).forEach(function (mutationRecord) {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n\n        treeCallback(mutationRecord.target);\n      }\n\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\n\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class') {\n          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n              prefix = _getCanonicalIcon.prefix,\n              iconName = _getCanonicalIcon.iconName;\n\n          if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n          if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n        } else {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser (node) {\n  var style = node.getAttribute('style');\n  var val = [];\n\n  if (style) {\n    val = style.split(';').reduce(function (acc, style) {\n      var styles = style.split(':');\n      var prop = styles[0];\n      var value = styles.slice(1);\n\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n\n      return acc;\n    }, {});\n  }\n\n  return val;\n}\n\nfunction classParser (node) {\n  var existingPrefix = node.getAttribute('data-prefix');\n  var existingIconName = node.getAttribute('data-icon');\n  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  var val = getCanonicalIcon(classArray(node));\n\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n\n  if (val.prefix && innerText.length > 1) {\n    val.iconName = byLigature(val.prefix, node.innerText);\n  } else if (val.prefix && innerText.length === 1) {\n    val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n  }\n\n  return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n  var transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n\n  if (!transformString) {\n    return transform;\n  } else {\n    return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n      var parts = n.toLowerCase().split('-');\n      var first = parts[0];\n      var rest = parts.slice(1).join('-');\n\n      if (first && rest === 'h') {\n        acc.flipX = true;\n        return acc;\n      }\n\n      if (first && rest === 'v') {\n        acc.flipY = true;\n        return acc;\n      }\n\n      rest = parseFloat(rest);\n\n      if (isNaN(rest)) {\n        return acc;\n      }\n\n      switch (first) {\n        case 'grow':\n          acc.size = acc.size + rest;\n          break;\n\n        case 'shrink':\n          acc.size = acc.size - rest;\n          break;\n\n        case 'left':\n          acc.x = acc.x - rest;\n          break;\n\n        case 'right':\n          acc.x = acc.x + rest;\n          break;\n\n        case 'up':\n          acc.y = acc.y - rest;\n          break;\n\n        case 'down':\n          acc.y = acc.y + rest;\n          break;\n\n        case 'rotate':\n          acc.rotate = acc.rotate + rest;\n          break;\n      }\n\n      return acc;\n    }, transform);\n  }\n};\nfunction transformParser (node) {\n  return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n  var symbol = node.getAttribute('data-fa-symbol');\n  return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n\n    return acc;\n  }, {});\n  var title = node.getAttribute('title');\n  var titleId = node.getAttribute('data-fa-title-id');\n\n  if (config.autoA11y) {\n    if (title) {\n      extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n    } else {\n      extraAttributes['aria-hidden'] = 'true';\n      extraAttributes['focusable'] = 'false';\n    }\n  }\n\n  return extraAttributes;\n}\n\nfunction maskParser (node) {\n  var mask = node.getAttribute('data-fa-mask');\n\n  if (!mask) {\n    return emptyCanonicalIcon();\n  } else {\n    return getCanonicalIcon(mask.split(' ').map(function (i) {\n      return i.trim();\n    }));\n  }\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    title: null,\n    titleId: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: null,\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\nfunction parseMeta(node) {\n  var _classParser = classParser(node),\n      iconName = _classParser.iconName,\n      prefix = _classParser.prefix,\n      extraClasses = _classParser.rest;\n\n  var extraStyles = styleParser(node);\n  var transform = transformParser(node);\n  var symbol = symbolParser(node);\n  var extraAttributes = attributesParser(node);\n  var mask = maskParser(node);\n  return {\n    iconName: iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix: prefix,\n    transform: transform,\n    symbol: symbol,\n    mask: mask,\n    maskId: node.getAttribute('data-fa-mask-id'),\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  };\n}\n\nfunction MissingIcon(error) {\n  this.name = 'MissingIcon';\n  this.message = error || 'Icon unavailable';\n  this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n  fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n  attributeType: 'XML',\n  repeatCount: 'indefinite',\n  dur: '2s'\n};\nvar RING = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n  })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n  attributeName: 'opacity'\n});\n\nvar DOT = {\n  tag: 'circle',\n  attributes: _objectSpread({}, FILL, {\n    cx: '256',\n    cy: '364',\n    r: '28'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, ANIMATION_BASE, {\n      attributeName: 'r',\n      values: '28;14;28;28;14;28;'\n    })\n  }, {\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '1;0;1;1;0;1;'\n    })\n  }]\n};\nvar QUESTION = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    opacity: '1',\n    d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '1;0;0;0;0;1;'\n    })\n  }]\n};\nvar EXCLAMATION = {\n  tag: 'path',\n  attributes: _objectSpread({}, FILL, {\n    opacity: '0',\n    d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n  }),\n  children: [{\n    tag: 'animate',\n    attributes: _objectSpread({}, OPACITY_ANIMATE, {\n      values: '0;0;1;1;0;0;'\n    })\n  }]\n};\nvar missing = {\n  tag: 'g',\n  children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n  var width = icon[0];\n  var height = icon[1];\n\n  var _icon$slice = icon.slice(4),\n      _icon$slice2 = _slicedToArray(_icon$slice, 1),\n      vectorData = _icon$slice2[0];\n\n  var element = null;\n\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n\n  return {\n    found: true,\n    width: width,\n    height: height,\n    icon: element\n  };\n}\nfunction findIcon(iconName, prefix) {\n  return new picked(function (resolve, reject) {\n    var val = {\n      found: false,\n      width: 512,\n      height: 512,\n      icon: missing\n    };\n\n    if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n      var icon = styles$2[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n\n    var headers = {};\n\n    if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n      headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n    }\n\n    if (iconName && prefix && !config.showMissingIcons) {\n      reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n    } else {\n      resolve(val);\n    }\n  });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n  var iconName = nodeMeta.iconName,\n      title = nodeMeta.title,\n      titleId = nodeMeta.titleId,\n      prefix = nodeMeta.prefix,\n      transform = nodeMeta.transform,\n      symbol = nodeMeta.symbol,\n      mask = nodeMeta.mask,\n      maskId = nodeMeta.maskId,\n      extra = nodeMeta.extra;\n  return new picked(function (resolve, reject) {\n    picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          main = _ref2[0],\n          mask = _ref2[1];\n\n      resolve([node, makeInlineSvgAbstract({\n        icons: {\n          main: main,\n          mask: mask\n        },\n        prefix: prefix,\n        iconName: iconName,\n        transform: transform,\n        symbol: symbol,\n        mask: mask,\n        maskId: maskId,\n        title: title,\n        titleId: titleId,\n        extra: extra,\n        watchable: true\n      })]);\n    });\n  });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n  var title = nodeMeta.title,\n      transform = nodeMeta.transform,\n      extra = nodeMeta.extra;\n  var width = null;\n  var height = null;\n\n  if (IS_IE) {\n    var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n    var boundingClientRect = node.getBoundingClientRect();\n    width = boundingClientRect.width / computedFontSize;\n    height = boundingClientRect.height / computedFontSize;\n  }\n\n  if (config.autoA11y && !title) {\n    extra.attributes['aria-hidden'] = 'true';\n  }\n\n  return picked.resolve([node, makeLayersTextAbstract({\n    content: node.innerHTML,\n    width: width,\n    height: height,\n    transform: transform,\n    title: title,\n    extra: extra,\n    watchable: true\n  })]);\n}\n\nfunction generateMutation(node) {\n  var nodeMeta = parseMeta(node);\n\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return generateLayersText(node, nodeMeta);\n  } else {\n    return generateSvgReplacementMutation(node, nodeMeta);\n  }\n}\n\nfunction onTree(root) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return;\n  var htmlClassList = DOCUMENT.documentElement.classList;\n\n  var hclAdd = function hclAdd(suffix) {\n    return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var hclRemove = function hclRemove(suffix) {\n    return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  };\n\n  var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n  var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n    return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n  })).join(', ');\n\n  if (prefixesDomQuery.length === 0) {\n    return;\n  }\n\n  var candidates = [];\n\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e) {// noop\n  }\n\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return;\n  }\n\n  var mark = perf.begin('onTree');\n  var mutations = candidates.reduce(function (acc, node) {\n    try {\n      var mutation = generateMutation(node);\n\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e) {\n      if (!PRODUCTION) {\n        if (e instanceof MissingIcon) {\n          console.error(e);\n        }\n      }\n    }\n\n    return acc;\n  }, []);\n  return new picked(function (resolve, reject) {\n    picked.all(mutations).then(function (resolvedMutations) {\n      perform(resolvedMutations, function () {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(function () {\n      mark();\n      reject();\n    });\n  });\n}\nfunction onNode(node) {\n  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(function (mutation) {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\n\nfunction replaceForPosition(node, position) {\n  var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new picked(function (resolve, reject) {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n\n    var children = toArray(node.children);\n    var alreadyProcessedPseudoElement = children.filter(function (c) {\n      return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n    })[0];\n    var styles = WINDOW.getComputedStyle(node, position);\n    var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n    var fontWeight = styles.getPropertyValue('font-weight');\n    var content = styles.getPropertyValue('content');\n\n    if (alreadyProcessedPseudoElement && !fontFamily) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamily && content !== 'none' && content !== '') {\n      var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n      var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n      var iconName = byUnicode(prefix, hexValue);\n      var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n\n      if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n\n        var meta = blankMeta();\n        var extra = meta.extra;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(function (main) {\n          var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n            icons: {\n              main: main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix: prefix,\n            iconName: iconIdentifier,\n            extra: extra,\n            watchable: true\n          }));\n          var element = DOCUMENT.createElement('svg');\n\n          if (position === ':before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n\n          element.outerHTML = abstract.map(function (a) {\n            return toHtml(a);\n          }).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\n\nfunction replace(node) {\n  return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n  if (!IS_DOM) return;\n  return new picked(function (resolve, reject) {\n    var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    var end = perf.begin('searchPseudoElements');\n    disableObservation();\n    picked.all(operations).then(function () {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(function () {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n  overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n  display: inline-block;\\n  font-size: inherit;\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n  width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n  width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n  width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n  width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n  width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n  width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n  width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n  width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n  width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n  width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n  width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n  width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n  width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n  width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n  width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n  width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n  width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n  width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n  width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: 0.3em;\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: 0.3em;\\n  width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n  height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n  width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  -webkit-transform: translate(-50%, -50%);\\n          transform: translate(-50%, -50%);\\n  -webkit-transform-origin: center center;\\n          transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: #ff253a;\\n  border-radius: 1em;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  color: #fff;\\n  height: 1.5em;\\n  line-height: 1;\\n  max-width: 5em;\\n  min-width: 1.5em;\\n  overflow: hidden;\\n  padding: 0.25em;\\n  right: 0;\\n  text-overflow: ellipsis;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: 0;\\n  right: 0;\\n  top: auto;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: bottom right;\\n          transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: 0;\\n  left: 0;\\n  right: auto;\\n  top: auto;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: bottom left;\\n          transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  right: 0;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top right;\\n          transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: 0;\\n  right: auto;\\n  top: 0;\\n  -webkit-transform: scale(0.25);\\n          transform: scale(0.25);\\n  -webkit-transform-origin: top left;\\n          transform-origin: top left;\\n}\\n\\n.fa-lg {\\n  font-size: 1.3333333333em;\\n  line-height: 0.75em;\\n  vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: 2.5em;\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: -2em;\\n  position: absolute;\\n  text-align: center;\\n  width: 2em;\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border: solid 0.08em #eee;\\n  border-radius: 0.1em;\\n  padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n  margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n  margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n  -webkit-animation: fa-spin 2s infinite linear;\\n          animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n  -webkit-animation: fa-spin 1s infinite steps(8);\\n          animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n            transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n            transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n  -webkit-transform: rotate(90deg);\\n          transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n  -webkit-transform: rotate(180deg);\\n          transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n  -webkit-transform: rotate(270deg);\\n          transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n  -webkit-transform: scale(-1, 1);\\n          transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(1, -1);\\n          transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(-1, -1);\\n          transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n  -webkit-filter: none;\\n          filter: none;\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: #fff;\\n}\\n\\n.sr-only {\\n  border: 0;\\n  clip: rect(0, 0, 0, 0);\\n  height: 1px;\\n  margin: -1px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n  clip: auto;\\n  height: auto;\\n  margin: 0;\\n  overflow: visible;\\n  position: static;\\n  width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: 1;\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: 0.4;\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: 0.4;\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: 1;\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\\n\\n.fad.fa-inverse {\\n  color: #fff;\\n}\";\n\nfunction css () {\n  var dfp = DEFAULT_FAMILY_PREFIX;\n  var drc = DEFAULT_REPLACEMENT_CLASS;\n  var fp = config.familyPrefix;\n  var rc = config.replacementClass;\n  var s = baseStyles;\n\n  if (fp !== dfp || rc !== drc) {\n    var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n    var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n    var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n\n  return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n  function Library() {\n    _classCallCheck(this, Library);\n\n    this.definitions = {};\n  }\n\n  _createClass(Library, [{\n    key: \"add\",\n    value: function add() {\n      var _this = this;\n\n      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n        definitions[_key] = arguments[_key];\n      }\n\n      var additions = definitions.reduce(this._pullDefinitions, {});\n      Object.keys(additions).forEach(function (key) {\n        _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n        defineIcons(key, additions[key]);\n        build();\n      });\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.definitions = {};\n    }\n  }, {\n    key: \"_pullDefinitions\",\n    value: function _pullDefinitions(additions, definition) {\n      var normalized = definition.prefix && definition.iconName && definition.icon ? {\n        0: definition\n      } : definition;\n      Object.keys(normalized).map(function (key) {\n        var _normalized$key = normalized[key],\n            prefix = _normalized$key.prefix,\n            iconName = _normalized$key.iconName,\n            icon = _normalized$key.icon;\n        if (!additions[prefix]) additions[prefix] = {};\n        additions[prefix][iconName] = icon;\n      });\n      return additions;\n    }\n  }]);\n\n  return Library;\n}();\n\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n\n    _cssInserted = true;\n  }\n}\n\nfunction apiObject(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function get() {\n      return val.abstract.map(function (a) {\n        return toHtml(a);\n      });\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function get() {\n      if (!IS_DOM) return;\n      var container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n  var _iconLookup$prefix = iconLookup.prefix,\n      prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n      iconName = iconLookup.iconName;\n  if (!iconName) return;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    var mask = params.mask;\n\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n\n    return next(iconDefinition, _objectSpread({}, params, {\n      mask: mask\n    }));\n  };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n  i2svg: function i2svg() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    if (IS_DOM) {\n      ensureCss();\n      var _params$node = params.node,\n          node = _params$node === void 0 ? DOCUMENT : _params$node,\n          _params$callback = params.callback,\n          callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n\n      return onTree(node, callback);\n    } else {\n      return picked.reject('Operation requires a DOM of some kind.');\n    }\n  },\n  css: css,\n  insertCss: function insertCss$$1() {\n    if (!_cssInserted) {\n      insertCss(css());\n\n      _cssInserted = true;\n    }\n  },\n  watch: function watch() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n        observeMutationsRoot = params.observeMutationsRoot;\n\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n\n    config.observeMutations = true;\n    domready(function () {\n      autoReplace({\n        autoReplaceSvgRoot: autoReplaceSvgRoot\n      });\n      observe({\n        treeCallback: onTree,\n        nodeCallback: onNode,\n        pseudoElementsCallback: searchPseudoElements,\n        observeMutationsRoot: observeMutationsRoot\n      });\n    });\n  }\n};\nvar parse = {\n  transform: function transform(transformString) {\n    return parseTransformString(transformString);\n  }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform = params.transform,\n      transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n      _params$symbol = params.symbol,\n      symbol = _params$symbol === void 0 ? false : _params$symbol,\n      _params$mask = params.mask,\n      mask = _params$mask === void 0 ? null : _params$mask,\n      _params$maskId = params.maskId,\n      maskId = _params$maskId === void 0 ? null : _params$maskId,\n      _params$title = params.title,\n      title = _params$title === void 0 ? null : _params$title,\n      _params$titleId = params.titleId,\n      titleId = _params$titleId === void 0 ? null : _params$titleId,\n      _params$classes = params.classes,\n      classes = _params$classes === void 0 ? [] : _params$classes,\n      _params$attributes = params.attributes,\n      attributes = _params$attributes === void 0 ? {} : _params$attributes,\n      _params$styles = params.styles,\n      styles = _params$styles === void 0 ? {} : _params$styles;\n  if (!iconDefinition) return;\n  var prefix = iconDefinition.prefix,\n      iconName = iconDefinition.iconName,\n      icon = iconDefinition.icon;\n  return apiObject(_objectSpread({\n    type: 'icon'\n  }, iconDefinition), function () {\n    ensureCss();\n\n    if (config.autoA11y) {\n      if (title) {\n        attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        attributes['aria-hidden'] = 'true';\n        attributes['focusable'] = 'false';\n      }\n    }\n\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix: prefix,\n      iconName: iconName,\n      transform: _objectSpread({}, meaninglessTransform, transform),\n      symbol: symbol,\n      title: title,\n      maskId: maskId,\n      titleId: titleId,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: classes\n      }\n    });\n  });\n});\nvar text = function text(content) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$transform2 = params.transform,\n      transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n      _params$title2 = params.title,\n      title = _params$title2 === void 0 ? null : _params$title2,\n      _params$classes2 = params.classes,\n      classes = _params$classes2 === void 0 ? [] : _params$classes2,\n      _params$attributes2 = params.attributes,\n      attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n      _params$styles2 = params.styles,\n      styles = _params$styles2 === void 0 ? {} : _params$styles2;\n  return apiObject({\n    type: 'text',\n    content: content\n  }, function () {\n    ensureCss();\n    return makeLayersTextAbstract({\n      content: content,\n      transform: _objectSpread({}, meaninglessTransform, transform),\n      title: title,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n      }\n    });\n  });\n};\nvar counter = function counter(content) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$title3 = params.title,\n      title = _params$title3 === void 0 ? null : _params$title3,\n      _params$classes3 = params.classes,\n      classes = _params$classes3 === void 0 ? [] : _params$classes3,\n      _params$attributes3 = params.attributes,\n      attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n      _params$styles3 = params.styles,\n      styles = _params$styles3 === void 0 ? {} : _params$styles3;\n  return apiObject({\n    type: 'counter',\n    content: content\n  }, function () {\n    ensureCss();\n    return makeLayersCounterAbstract({\n      content: content.toString(),\n      title: title,\n      extra: {\n        attributes: attributes,\n        styles: styles,\n        classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n      }\n    });\n  });\n};\nvar layer = function layer(assembler) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _params$classes4 = params.classes,\n      classes = _params$classes4 === void 0 ? [] : _params$classes4;\n  return apiObject({\n    type: 'layer'\n  }, function () {\n    ensureCss();\n    var children = [];\n    assembler(function (args) {\n      Array.isArray(args) ? args.map(function (a) {\n        children = children.concat(a.abstract);\n      }) : children = children.concat(args.abstract);\n    });\n    return [{\n      tag: 'span',\n      attributes: {\n        class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n      },\n      children: children\n    }];\n  });\n};\nvar api = {\n  noAuto: noAuto,\n  config: config,\n  dom: dom,\n  library: library,\n  parse: parse,\n  findIconDefinition: findIconDefinition,\n  icon: icon,\n  text: text,\n  counter: counter,\n  layer: layer,\n  toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n      autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n  if (!(len in factories)) {\n    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func\n    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n  } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = arraySlice.call(arguments, 1);\n  var bound = function (/* args... */) {\n    var args = partArgs.concat(arraySlice.call(arguments));\n    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n  };\n  if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n  return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n  var string = $trim(String(str), 3);\n  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n  var string = $trim(String(str), 3);\n  var result = $parseFloat(string);\n  return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n  if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n  return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n  aFunction(callbackfn);\n  var O = toObject(that);\n  var self = IObject(O);\n  var length = toLength(O.length);\n  var index = isRight ? length - 1 : 0;\n  var i = isRight ? -1 : 1;\n  if (aLen < 2) for (;;) {\n    if (index in self) {\n      memo = self[index];\n      index += i;\n      break;\n    }\n    index += i;\n    if (isRight ? index < 0 : length <= index) {\n      throw TypeError('Reduce of empty array with no initial value');\n    }\n  }\n  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n    memo = callbackfn(memo, self[index], index, O);\n  }\n  return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = toLength(O.length);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else delete O[to];\n    to += inc;\n    from += inc;\n  } return O;\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n  configurable: true,\n  get: require('./_flags')\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n  this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.a.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;      // collection type\n      that._i = id++;      // collection id\n      that._l = undefined; // leak store for uncaught frozen objects\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);\n    else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toInteger(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length!');\n  return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n  var S = String(defined(that));\n  var stringLength = S.length;\n  var fillStr = fillString === undefined ? ' ' : String(fillString);\n  var intMaxLength = toLength(maxLength);\n  if (intMaxLength <= stringLength || fillStr == '') return S;\n  var fillLen = intMaxLength - stringLength;\n  var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n  if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n  return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || isEnum.call(O, key)) {\n        result.push(isEntries ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _addClass.default)(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _removeClass.default)(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.onEnter = function (node, appearing) {\n      var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          className = _this$getClassNames.className;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, className);\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(node, appearing);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node, appearing);\n      }\n    };\n\n    _this.onEntered = function (node, appearing) {\n      var appearClassName = _this.getClassNames('appear').doneClassName;\n\n      var enterClassName = _this.getClassNames('enter').doneClassName;\n\n      var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n      _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(node, appearing);\n      }\n    };\n\n    _this.onExit = function (node) {\n      var _this$getClassNames3 = _this.getClassNames('exit'),\n          className = _this$getClassNames3.className;\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      addClass(node, className);\n\n      if (_this.props.onExit) {\n        _this.props.onExit(node);\n      }\n    };\n\n    _this.onExiting = function (node) {\n      var _this$getClassNames4 = _this.getClassNames('exit'),\n          activeClassName = _this$getClassNames4.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(node);\n      }\n    };\n\n    _this.onExited = function (node) {\n      var _this$getClassNames5 = _this.getClassNames('exit'),\n          doneClassName = _this$getClassNames5.doneClassName;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onExited) {\n        _this.props.onExited(node);\n      }\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n      var className = isStringClassNames ? prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n      var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n      return {\n        className: className,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$getClassNames6 = this.getClassNames(type),\n        className = _this$getClassNames6.className,\n        activeClassName = _this$getClassNames6.activeClassName,\n        doneClassName = _this$getClassNames6.doneClassName;\n\n    className && removeClass(node, className);\n    activeClassName && removeClass(node, activeClassName);\n    doneClassName && removeClass(node, doneClassName);\n  };\n\n  _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n    // This is for to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n    if (className) {\n      /* eslint-disable no-unused-expressions */\n      node && node.scrollTop;\n      /* eslint-enable no-unused-expressions */\n\n      addClass(node, className);\n    }\n  };\n\n  _proto.render = function render() {\n    var props = _extends({}, this.props);\n\n    delete props.classNames;\n    return _react.default.createElement(_Transition.default, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n  /**\n   * The animation classNames applied to the component as it enters, exits or\n   * has finished the transition. A single name can be provided and it will be\n   * suffixed for each stage: e.g.\n   *\n   * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n   * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n   * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n   *\n   * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n   * This allows you to define different behavior for when appearing is done and\n   * when regular entering is done, using selectors like\n   * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n   * epic entrance animation when element first appears in the DOM using\n   * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   * simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: _PropTypes.classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = _PropTypes.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number,\n  appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  active: _propTypes.default.string\n}), _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  enterDone: _propTypes.default.string,\n  enterActive: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  exitDone: _propTypes.default.string,\n  exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.removeNotification = removeNotification;\nexports.removeNotifications = removeNotifications;\nexports[\"default\"] = exports.types = exports.actions = exports.updateNotification = exports.notify = exports.addNotification = void 0;\n\nvar _helpers = require(\"../helpers\");\n\nvar _constants = require(\"../constants\");\n\nvar _this = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar INITIAL_STATE = []; // Action types\n\nvar ADD_NOTIFICATION = 'ADD_NOTIFICATION';\nvar UPDATE_NOTIFICATION = 'UPDATE_NOTIFICATION';\nvar REMOVE_NOTIFICATION = 'REMOVE_NOTIFICATION';\nvar REMOVE_NOTIFICATIONS = 'REMOVE_NOTIFICATIONS';\n/**\n * Add a notification (thunk action creator)\n *\n * We use a thunk here to create an ADD_NOTIFICATION action\n * and only return the notification object.\n * @param {Object} notification\n * @returns {Object} notification\n */\n\nvar addNotification = function addNotification(notification) {\n  return function (dispatch) {\n    if (!notification.id) {\n      notification.id = new Date().getTime();\n    }\n\n    notification = (0, _helpers.treatNotification)(notification); // if there is an image, we preload it\n    // and add notification when image is loaded\n\n    if (notification.image) {\n      (0, _helpers.preloadImage)(notification.image, dispatch.bind(_this, _addNotification(notification)));\n    } else {\n      dispatch(_addNotification(notification));\n    }\n\n    return notification;\n  };\n};\n/**\n * Add a notification (action creator)\n *\n * @param {Object} notification\n * @returns {{type: string, payload: {Object}}}\n * @private\n */\n\n\nexports.addNotification = addNotification;\n\nfunction _addNotification(notification) {\n  return {\n    type: ADD_NOTIFICATION,\n    payload: notification\n  };\n}\n/**\n * Update or create a notification\n * @param {Object} notification\n * @returns {{type: string, payload: {Object}}}\n */\n\n\nvar notify = function notify(notification) {\n  return function (dispatch, getState) {\n    var notifications = getState().notifications;\n    var doesNotifExist = notifications.find(function (notif) {\n      return notif.id === notification.id;\n    });\n\n    if (doesNotifExist) {\n      return dispatch(updateNotification(notification));\n    }\n\n    return dispatch(addNotification(notification));\n  };\n};\n/**\n * Update a notification (thunk action creator)\n *\n * We use a thunk here to create an UPDATE_NOTIFICATION action\n * and only return the notification object.\n * @param {Object} notification\n * @returns {Object} notification\n */\n\n\nexports.notify = notify;\n\nvar updateNotification = function updateNotification(notification) {\n  return function (dispatch, getState) {\n    if (!notification.id) {\n      throw new Error('A notification must have an `id` property to be updated');\n    }\n\n    var notifications = getState().notifications;\n    var index = notifications.findIndex(function (oldNotification) {\n      return oldNotification.id === notification.id;\n    });\n    var currNotification = notifications[index];\n    notification = (0, _helpers.treatNotification)(notification); // if image is different, then we preload it\n    // and update notification when image is loaded\n\n    if (notification.image && (!currNotification.image || currNotification.image && notification.image !== currNotification.image)) {\n      (0, _helpers.preloadImage)(notification.image, dispatch.bind(_this, _updateNotification(notification)));\n    } else {\n      dispatch(_updateNotification(notification));\n    }\n\n    return notification;\n  };\n};\n/**\n * Update a notification (action creator)\n *\n * @param {Object} notification\n * @returns {{type: string, payload: {Object}}}\n * @private\n */\n\n\nexports.updateNotification = updateNotification;\n\nfunction _updateNotification(notification) {\n  return {\n    type: UPDATE_NOTIFICATION,\n    payload: notification\n  };\n}\n/**\n * Remove a notification (action creator)\n *\n * @param {Object} notification\n * @returns {{type: string, payload: {Object}}}\n */\n\n\nfunction removeNotification(notification) {\n  return {\n    type: REMOVE_NOTIFICATION,\n    payload: notification\n  };\n}\n/**\n * Remove all notifications (action creator)\n *\n * @returns {{type: string}}\n */\n\n\nfunction removeNotifications() {\n  return {\n    type: REMOVE_NOTIFICATIONS\n  };\n} // Action creators\n\n\nvar actions = {\n  addNotification: addNotification,\n  updateNotification: updateNotification,\n  removeNotification: removeNotification,\n  removeNotifications: removeNotifications\n}; // Actions types\n\nexports.actions = actions;\nvar types = {\n  ADD_NOTIFICATION: ADD_NOTIFICATION,\n  UPDATE_NOTIFICATION: UPDATE_NOTIFICATION,\n  REMOVE_NOTIFICATION: REMOVE_NOTIFICATION,\n  REMOVE_NOTIFICATIONS: REMOVE_NOTIFICATIONS\n}; // Reducers\n\nexports.types = types;\n\nvar _default = function _default() {\n  var defaultNotification = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.DEFAULT_NOTIFICATION;\n  return function () {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE;\n\n    var _ref = arguments.length > 1 ? arguments[1] : undefined,\n        type = _ref.type,\n        payload = _ref.payload;\n\n    switch (type) {\n      case ADD_NOTIFICATION:\n        {\n          var notification = Object.assign({}, defaultNotification, payload);\n          return [].concat(_toConsumableArray(state), [notification]);\n        }\n\n      case UPDATE_NOTIFICATION:\n        return state.map(function (notification) {\n          if (notification.id === payload.id) {\n            return Object.assign({}, defaultNotification, payload);\n          }\n\n          return notification;\n        });\n\n      case REMOVE_NOTIFICATION:\n        return state.filter(function (notification) {\n          return notification.id !== payload;\n        });\n\n      case REMOVE_NOTIFICATIONS:\n        return [];\n\n      default:\n        return state;\n    }\n  };\n};\n\nexports[\"default\"] = _default;","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n  if (!isProduction) {\n    if (condition) {\n      return;\n    }\n\n    var text = \"Warning: \" + message;\n\n    if (typeof console !== 'undefined') {\n      console.warn(text);\n    }\n\n    try {\n      throw Error(text);\n    } catch (x) {}\n  }\n}\n\nexport default warning;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '١',\n            '2': '٢',\n            '3': '٣',\n            '4': '٤',\n            '5': '٥',\n            '6': '٦',\n            '7': '٧',\n            '8': '٨',\n            '9': '٩',\n            '0': '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '1',\n            '2': '2',\n            '3': '3',\n            '4': '4',\n            '5': '5',\n            '6': '6',\n            '7': '7',\n            '8': '8',\n            '9': '9',\n            '0': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '١',\n            '2': '٢',\n            '3': '٣',\n            '4': '٤',\n            '5': '٥',\n            '6': '٦',\n            '7': '٧',\n            '8': '٨',\n            '9': '٩',\n            '0': '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n            '_'\n        ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'birneçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n            '_'\n        ),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '১',\n            '2': '২',\n            '3': '৩',\n            '4': '৪',\n            '5': '৫',\n            '6': '৬',\n            '7': '৭',\n            '8': '৮',\n            '9': '৯',\n            '0': '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '༡',\n            '2': '༢',\n            '3': '༣',\n            '4': '༤',\n            '5': '༥',\n            '6': '༦',\n            '7': '༧',\n            '8': '༨',\n            '9': '༩',\n            '0': '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n            '_'\n        ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                '_'\n            ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n            '_'\n        ),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n            '_'\n        ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                    ? 'тан'\n                    : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n            '_'\n        ),\n        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n            '_'\n        ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha invalida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n            '_'\n        ),\n        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n            '_'\n        ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n            '_'\n        ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '۱',\n            '2': '۲',\n            '3': '۳',\n            '4': '۴',\n            '5': '۵',\n            '6': '۶',\n            '7': '۷',\n            '8': '۸',\n            '9': '۹',\n            '0': '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n            ' '\n        ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n            '_'\n        ),\n        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n            '_'\n        ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n            '_'\n        );\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                '_'\n            ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                '_'\n            ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '૧',\n            '2': '૨',\n            '3': '૩',\n            '4': '૪',\n            '5': '૫',\n            '6': '૬',\n            '7': '૭',\n            '8': '૮',\n            '9': '૯',\n            '0': '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n            '_'\n        ),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '१',\n            '2': '२',\n            '3': '३',\n            '4': '४',\n            '5': '५',\n            '6': '६',\n            '7': '७',\n            '8': '८',\n            '9': '९',\n            '0': '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var hi = moment.defineLocale('hi', {\n        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n            '_'\n        ),\n        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n        ' '\n    );\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n            '_'\n        ),\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n            '_'\n        ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                '_'\n            ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n                    $0,\n                    $1,\n                    $2\n                ) {\n                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                });\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '១',\n            '2': '២',\n            '3': '៣',\n            '4': '៤',\n            '5': '៥',\n            '6': '៦',\n            '7': '៧',\n            '8': '៨',\n            '9': '៩',\n            '0': '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '೧',\n            '2': '೨',\n            '3': '೩',\n            '4': '೪',\n            '5': '೫',\n            '6': '೬',\n            '7': '೭',\n            '8': '೮',\n            '9': '೯',\n            '0': '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '١',\n            '2': '٢',\n            '3': '٣',\n            '4': '٤',\n            '5': '٥',\n            '6': '٦',\n            '7': '٧',\n            '8': '٨',\n            '9': '٩',\n            '0': '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n            ? forms(key)[1]\n            : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                '_'\n            ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n            '_'\n        ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n            '_'\n        ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '१',\n            '2': '२',\n            '3': '३',\n            '4': '४',\n            '5': '५',\n            '6': '६',\n            '7': '७',\n            '8': '८',\n            '9': '९',\n            '0': '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '၁',\n            '2': '၂',\n            '3': '၃',\n            '4': '၄',\n            '5': '၅',\n            '6': '၆',\n            '7': '၇',\n            '8': '၈',\n            '9': '၉',\n            '0': '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dager',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '१',\n            '2': '२',\n            '3': '३',\n            '4': '४',\n            '5': '५',\n            '6': '६',\n            '7': '७',\n            '8': '८',\n            '9': '९',\n            '0': '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                '_'\n            ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '੧',\n            '2': '੨',\n            '3': '੩',\n            '4': '੪',\n            '5': '੫',\n            '6': '੬',\n            '7': '੭',\n            '8': '੮',\n            '9': '੯',\n            '0': '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n            '_'\n        ),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n            '_'\n        );\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (format === '') {\n                // Hack: if format empty we know this is used to generate\n                // RegExp by moment. Give then back both valid forms of months\n                // in RegExp ready format.\n                return (\n                    '(' +\n                    monthsSubjective[momentToFormat.month()] +\n                    '|' +\n                    monthsNominative[momentToFormat.month()] +\n                    ')'\n                );\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                '_'\n            ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n        },\n        weekdays: {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                '_'\n            ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n            '_'\n        ),\n        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n            '_'\n        ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n            '_'\n        ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n            '_'\n        ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'дан',\n            dd: translator.translate,\n            M: 'месец',\n            MM: translator.translate,\n            y: 'годину',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                        ? ':a'\n                        : b === 2\n                        ? ':a'\n                        : b === 3\n                        ? ':e'\n                        : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            '1': '௧',\n            '2': '௨',\n            '3': '௩',\n            '4': '௪',\n            '5': '௫',\n            '6': '௬',\n            '7': '௭',\n            '8': '௮',\n            '9': '௯',\n            '0': '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n            '_'\n        ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n            '_'\n        ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Пагоҳ соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [trk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'waQ'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'nem'\n                : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'wen'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'ben'\n                : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n            ? format[key][0]\n            : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js language configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js language configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                    '_'\n                ),\n                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                    '_'\n                ),\n                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                    '_'\n                ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n            ? 'genitive'\n            : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n            '_'\n        ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n            '_'\n        ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","'use strict';\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction ownEnumerableKeys(obj) {\n\tvar keys = Object.getOwnPropertyNames(obj);\n\n\tif (Object.getOwnPropertySymbols) {\n\t\tkeys = keys.concat(Object.getOwnPropertySymbols(obj));\n\t}\n\n\treturn keys.filter(function (key) {\n\t\treturn propIsEnumerable.call(obj, key);\n\t});\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = ownEnumerableKeys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n  var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n  var lastRootBlock;\n  return OrderedMap(blockMap.withMutations(function (blockMapState) {\n    blockMapState.forEach(function (block, index) {\n      var oldKey = block.getKey();\n      var nextKey = block.getNextSiblingKey();\n      var prevKey = block.getPrevSiblingKey();\n      var childrenKeys = block.getChildKeys();\n      var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n      var key = generateRandomKey(); // we will add it here to re-use it later\n\n      newKeysRef[oldKey] = key;\n\n      if (nextKey) {\n        var nextBlock = blockMapState.get(nextKey);\n\n        if (nextBlock) {\n          blockMapState.setIn([nextKey, 'prevSibling'], key);\n        } else {\n          // this can happen when generating random keys for fragments\n          blockMapState.setIn([oldKey, 'nextSibling'], null);\n        }\n      }\n\n      if (prevKey) {\n        var prevBlock = blockMapState.get(prevKey);\n\n        if (prevBlock) {\n          blockMapState.setIn([prevKey, 'nextSibling'], key);\n        } else {\n          // this can happen when generating random keys for fragments\n          blockMapState.setIn([oldKey, 'prevSibling'], null);\n        }\n      }\n\n      if (parentKey && blockMapState.get(parentKey)) {\n        var parentBlock = blockMapState.get(parentKey);\n        var parentChildrenList = parentBlock.getChildKeys();\n        blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n      } else {\n        // blocks will then be treated as root block nodes\n        blockMapState.setIn([oldKey, 'parent'], null);\n\n        if (lastRootBlock) {\n          blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n          blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n        }\n\n        lastRootBlock = blockMapState.get(oldKey);\n      }\n\n      childrenKeys.forEach(function (childKey) {\n        var childBlock = blockMapState.get(childKey);\n\n        if (childBlock) {\n          blockMapState.setIn([childKey, 'parent'], key);\n        } else {\n          blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n            return child !== childKey;\n          }));\n        }\n      });\n    });\n  }).toArray().map(function (block) {\n    return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n  }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n  return OrderedMap(blockMap.toArray().map(function (block) {\n    var key = generateRandomKey();\n    return [key, block.set('key', key)];\n  }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n  var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n  if (!isTreeBasedBlockMap) {\n    return randomizeContentBlockKeys(blockMap);\n  }\n\n  return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n  var blockMap = contentState.getBlockMap();\n  var entityMap = contentState.getEntityMap();\n  var updatedBlocks = {};\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var startBlock = blockMap.get(startKey);\n  var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n  if (updatedStart !== startBlock) {\n    updatedBlocks[startKey] = updatedStart;\n  }\n\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var endBlock = blockMap.get(endKey);\n\n  if (startKey === endKey) {\n    endBlock = updatedStart;\n  }\n\n  var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n  if (updatedEnd !== endBlock) {\n    updatedBlocks[endKey] = updatedEnd;\n  }\n\n  if (!Object.keys(updatedBlocks).length) {\n    return contentState.set('selectionAfter', selectionState);\n  }\n\n  return contentState.merge({\n    blockMap: blockMap.merge(updatedBlocks),\n    selectionAfter: selectionState\n  });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n  var removalRange; // Iterates through a list looking for ranges of matching items\n  // based on the 'isEqual' callback.\n  // Then instead of returning the result, call the 'found' callback\n  // with each range.\n  // Then filters those ranges based on the 'filter' callback\n  //\n  // Here we use it to find ranges of characters with the same entity key.\n\n  findRangesImmutable(characters, // the list to iterate through\n  function (a, b) {\n    return a.getEntity() === b.getEntity();\n  }, // 'isEqual' callback\n  function (element) {\n    return element.getEntity() === entityKey;\n  }, // 'filter' callback\n  function (start, end) {\n    // 'found' callback\n    if (start <= offset && end >= offset) {\n      // this entity overlaps the offset index\n      removalRange = {\n        start: start,\n        end: end\n      };\n    }\n  });\n  !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n  return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n  var chars = block.getCharacterList();\n  var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n  var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n  var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n  var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n  if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n    var entity = entityMap.__get(entityAfterCursor);\n\n    if (entity.getMutability() !== 'MUTABLE') {\n      var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n          start = _getRemovalRange.start,\n          end = _getRemovalRange.end;\n\n      var current;\n\n      while (start < end) {\n        current = chars.get(start);\n        chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n        start++;\n      }\n\n      return block.set('characterList', chars);\n    }\n  }\n\n  return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n  var targetList = targetListArg;\n\n  if (offset === targetList.count()) {\n    toInsert.forEach(function (c) {\n      targetList = targetList.push(c);\n    });\n  } else if (offset === 0) {\n    toInsert.reverse().forEach(function (c) {\n      targetList = targetList.unshift(c);\n    });\n  } else {\n    var head = targetList.slice(0, offset);\n    var tail = targetList.slice(offset);\n    targetList = head.concat(toInsert, tail).toList();\n  }\n\n  return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n  var startKey = selectionState.getStartKey();\n  var endKey = selectionState.getEndKey();\n  var blockMap = contentState.getBlockMap();\n  var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = modifyBlockForContentState;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n  var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n  if (!isExperimentalTreeBlock) {\n    return null;\n  }\n\n  var nextSiblingKey = block.getNextSiblingKey();\n\n  if (nextSiblingKey) {\n    return nextSiblingKey;\n  }\n\n  var parent = block.getParentKey();\n\n  if (!parent) {\n    return null;\n  }\n\n  var nextNonDescendantBlock = blockMap.get(parent);\n\n  while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n    var parentKey = nextNonDescendantBlock.getParentKey();\n    nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n  }\n\n  if (!nextNonDescendantBlock) {\n    return null;\n  }\n\n  return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array}     The object's values.\n */\nfunction getOwnObjectValues(obj) {\n  return Object.keys(obj).map(function (key) {\n    return obj[key];\n  });\n}\n\nmodule.exports = getOwnObjectValues;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n  type: 'TOKEN',\n  mutability: 'IMMUTABLE',\n  data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance =\n/*#__PURE__*/\nfunction (_DraftEntityInstanceR) {\n  _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n  function DraftEntityInstance() {\n    return _DraftEntityInstanceR.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEntityInstance.prototype;\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getMutability = function getMutability() {\n    return this.get('mutability');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n  return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n  BOLD: {\n    fontWeight: 'bold'\n  },\n  CODE: {\n    fontFamily: 'monospace',\n    wordWrap: 'break-word'\n  },\n  ITALIC: {\n    fontStyle: 'italic'\n  },\n  STRIKETHROUGH: {\n    textDecoration: 'line-through'\n  },\n  UNDERLINE: {\n    textDecoration: 'underline'\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n  if (isElement(node)) {\n    var castedNode = node;\n    var offsetKey = castedNode.getAttribute('data-offset-key');\n\n    if (offsetKey) {\n      return offsetKey;\n    }\n\n    for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n      var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n      if (childOffsetKey) {\n        return childOffsetKey;\n      }\n    }\n  }\n\n  return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n  if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n    return window;\n  }\n\n  return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n  if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n    if (editor._blockSelectEvents) {\n      var _editorState = editor.props.editorState;\n\n      var selectionState = _editorState.getSelection();\n\n      DraftJsDebugLogging.logBlockedSelectionEvent({\n        // For now I don't think we need any other info\n        anonymizedDom: 'N/A',\n        extraParams: JSON.stringify({\n          stacktrace: new Error().stack\n        }),\n        selectionState: JSON.stringify(selectionState.toJS())\n      });\n    }\n\n    return;\n  }\n\n  var editorState = editor.props.editorState;\n  var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n  var updatedSelectionState = documentSelection.selectionState;\n\n  if (updatedSelectionState !== editorState.getSelection()) {\n    if (documentSelection.needsRecovery) {\n      editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n    } else {\n      editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n    }\n\n    editor.update(editorState);\n  }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n  logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n    return null;\n  },\n  logSelectionStateFailure: function logSelectionStateFailure() {\n    return null;\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n  var editorNode = editor.editorContainer;\n  !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n  !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n  var htmlElement = editorNode.firstChild;\n  return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n  var selection = root.ownerDocument.defaultView.getSelection();\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset,\n      rangeCount = selection.rangeCount;\n\n  if ( // No active selection.\n  rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n  // opening the document.\n  anchorNode == null || focusNode == null) {\n    return {\n      selectionState: editorState.getSelection().set('hasFocus', false),\n      needsRecovery: false\n    };\n  }\n\n  return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n  var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n  // Find the nearest offset-aware elements and use the\n  // offset values supplied by the selection range.\n\n  if (anchorIsTextNode && focusIsTextNode) {\n    return {\n      selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n      needsRecovery: false\n    };\n  }\n\n  var anchorPoint = null;\n  var focusPoint = null;\n  var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n  // keys and offset values for consumption at the component level. This\n  // is common in Firefox, where select-all and triple click behavior leads\n  // to entire elements being selected.\n  //\n  // Note that we use the `needsRecovery` parameter in the callback here. This\n  // is because when certain elements are selected, the behavior for subsequent\n  // cursor movement (e.g. via arrow keys) is uncertain and may not match\n  // expectations at the component level. For example, if an entire <div> is\n  // selected and the user presses the right arrow, Firefox keeps the selection\n  // on the <div>. If we allow subsequent keypresses to insert characters\n  // natively, they will be inserted into a browser-created text node to the\n  // right of that <div>. This is obviously undesirable.\n  //\n  // With the `needsRecovery` flag, we inform the caller that it is responsible\n  // for manually setting the selection state on the rendered document to\n  // ensure proper selection state maintenance.\n\n  if (anchorIsTextNode) {\n    anchorPoint = {\n      key: nullthrows(findAncestorOffsetKey(anchorNode)),\n      offset: anchorOffset\n    };\n    focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n  } else if (focusIsTextNode) {\n    focusPoint = {\n      key: nullthrows(findAncestorOffsetKey(focusNode)),\n      offset: focusOffset\n    };\n    anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n  } else {\n    anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n    focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n    // This way, on arrow key selection changes, the browser can move the\n    // cursor from a non-zero offset on one block, through empty blocks,\n    // to a matching non-zero offset on other text blocks.\n\n    if (anchorNode === focusNode && anchorOffset === focusOffset) {\n      needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n    }\n  }\n\n  return {\n    selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n    needsRecovery: needsRecovery\n  };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n  while (node.firstChild && ( // data-blocks has no offset\n  isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n    node = node.firstChild;\n  }\n\n  return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n  while (node.lastChild && ( // data-blocks has no offset\n  isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n    node = node.lastChild;\n  }\n\n  return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n  var node = startNode;\n  var offsetKey = findAncestorOffsetKey(node);\n  !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n  // wrapper.\n\n  if (editorRoot === node) {\n    node = node.firstChild;\n    !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n    var castedNode = node; // assignment only added for flow :/\n    // otherwise it throws in line 200 saying that node can be null or undefined\n\n    node = castedNode;\n    !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n    if (childOffset > 0) {\n      childOffset = node.childNodes.length;\n    }\n  } // If the child offset is zero and we have an offset key, we're done.\n  // If there's no offset key because the entire editor is selected,\n  // find the leftmost (\"first\") leaf in the tree and use that as the offset\n  // key.\n\n\n  if (childOffset === 0) {\n    var key = null;\n\n    if (offsetKey != null) {\n      key = offsetKey;\n    } else {\n      var firstLeaf = getFirstLeaf(node);\n      key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n    }\n\n    return {\n      key: key,\n      offset: 0\n    };\n  }\n\n  var nodeBeforeCursor = node.childNodes[childOffset - 1];\n  var leafKey = null;\n  var textLength = null;\n\n  if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n    // Our target node may be a leaf or a text node, in which case we're\n    // already where we want to be and can just use the child's length as\n    // our offset.\n    leafKey = nullthrows(offsetKey);\n    textLength = getTextContentLength(nodeBeforeCursor);\n  } else {\n    // Otherwise, we'll look at the child to the left of the cursor and find\n    // the last leaf node in its subtree.\n    var lastLeaf = getLastLeaf(nodeBeforeCursor);\n    leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n    textLength = getTextContentLength(lastLeaf);\n  }\n\n  return {\n    key: leafKey,\n    offset: textLength\n  };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n  var textContent = node.textContent;\n  return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n  var selection = nullthrows(editorState.getSelection());\n\n  if (!anchorKey || !focusKey) {\n    // If we cannot make sense of the updated selection state, stick to the current one.\n    if (process.env.NODE_ENV !== \"production\") {\n      /* eslint-disable-next-line */\n      console.warn('Invalid selection state.', arguments, editorState.toJS());\n    }\n\n    return selection;\n  }\n\n  var anchorPath = DraftOffsetKey.decode(anchorKey);\n  var anchorBlockKey = anchorPath.blockKey;\n  var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n  var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n  var focusPath = DraftOffsetKey.decode(focusKey);\n  var focusBlockKey = focusPath.blockKey;\n  var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n  var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n  if (!anchorLeaf || !focusLeaf) {\n    // If we cannot make sense of the updated selection state, stick to the current one.\n    if (process.env.NODE_ENV !== \"production\") {\n      /* eslint-disable-next-line */\n      console.warn('Invalid selection state.', arguments, editorState.toJS());\n    }\n\n    return selection;\n  }\n\n  var anchorLeafStart = anchorLeaf.get('start');\n  var focusLeafStart = focusLeaf.get('start');\n  var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n  var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n  var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n  if (areEqual) {\n    return selection;\n  }\n\n  var isBackward = false;\n\n  if (anchorBlockKey === focusBlockKey) {\n    var anchorLeafEnd = anchorLeaf.get('end');\n    var focusLeafEnd = focusLeaf.get('end');\n\n    if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n      isBackward = focusOffset < anchorOffset;\n    } else {\n      isBackward = focusLeafStart < anchorLeafStart;\n    }\n  } else {\n    var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n      return v === anchorBlockKey || v === focusBlockKey;\n    }).first();\n    isBackward = startKey === focusBlockKey;\n  }\n\n  return selection.merge({\n    anchorKey: anchorBlockKey,\n    anchorOffset: anchorBlockOffset,\n    focusKey: focusBlockKey,\n    focusOffset: focusBlockOffset,\n    isBackward: isBackward\n  });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n  return key != null && key != '';\n}\n\nmodule.exports = {\n  notEmptyKey: notEmptyKey\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\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\nvar DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n  function DraftEditorLeaf() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n    return _this;\n  }\n\n  var _proto = DraftEditorLeaf.prototype;\n\n  _proto._setSelection = function _setSelection() {\n    var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n    if (selection == null || !selection.getHasFocus()) {\n      return;\n    }\n\n    var _this$props = this.props,\n        block = _this$props.block,\n        start = _this$props.start,\n        text = _this$props.text;\n    var blockKey = block.getKey();\n    var end = start + text.length;\n\n    if (!selection.hasEdgeWithin(blockKey, start, end)) {\n      return;\n    } // Determine the appropriate target node for selection. If the child\n    // is not a text node, it is a <br /> spacer. In this case, use the\n    // <span> itself as the selection target.\n\n\n    var node = this.leaf;\n    !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n    var child = node.firstChild;\n    !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n    var targetNode;\n\n    if (child.nodeType === Node.TEXT_NODE) {\n      targetNode = child;\n    } else if (isHTMLBRElement(child)) {\n      targetNode = node;\n    } else {\n      targetNode = child.firstChild;\n      !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n    }\n\n    setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n  };\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var leafNode = this.leaf;\n    !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n    var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n    return shouldUpdate;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._setSelection();\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._setSelection();\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var block = this.props.block;\n    var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n    // an extra line feed character. Browsers collapse trailing newline\n    // characters, which leaves the cursor in the wrong place after a\n    // shift+enter. The extra character repairs this.\n\n    if (text.endsWith('\\n') && this.props.isLast) {\n      text += '\\n';\n    }\n\n    var _this$props2 = this.props,\n        customStyleMap = _this$props2.customStyleMap,\n        customStyleFn = _this$props2.customStyleFn,\n        offsetKey = _this$props2.offsetKey,\n        styleSet = _this$props2.styleSet;\n    var styleObj = styleSet.reduce(function (map, styleName) {\n      var mergedStyles = {};\n      var style = customStyleMap[styleName];\n\n      if (style !== undefined && map.textDecoration !== style.textDecoration) {\n        // .trim() is necessary for IE9/10/11 and Edge\n        mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n      }\n\n      return _assign(map, style, mergedStyles);\n    }, {});\n\n    if (customStyleFn) {\n      var newStyles = customStyleFn(styleSet, block);\n      styleObj = _assign(styleObj, newStyles);\n    }\n\n    return React.createElement(\"span\", {\n      \"data-offset-key\": offsetKey,\n      ref: function ref(_ref) {\n        return _this2.leaf = _ref;\n      },\n      style: styleObj\n    }, React.createElement(DraftEditorTextNode, null, text));\n  };\n\n  return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n  initODS: function initODS() {},\n  handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nmodule.exports = getActiveElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n  var rect = getElementRect(element);\n  return {\n    x: rect.left,\n    y: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n  var width;\n\n  if (document.documentElement) {\n    width = document.documentElement.clientWidth;\n  }\n\n  if (!width && document.body) {\n    width = document.body.clientWidth;\n  }\n\n  return width || 0;\n}\n\nfunction getViewportHeight() {\n  var height;\n\n  if (document.documentElement) {\n    height = document.documentElement.clientHeight;\n  }\n\n  if (!height && document.body) {\n    height = document.body.clientHeight;\n  }\n\n  return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n  return {\n    width: window.innerWidth || getViewportWidth(),\n    height: window.innerHeight || getViewportHeight()\n  };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n  return {\n    width: getViewportWidth(),\n    height: getViewportHeight()\n  };\n};\n\nmodule.exports = getViewportDimensions;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\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\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n  return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorBlock, _React$Component);\n\n  function DraftEditorBlock() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n    return _this;\n  }\n\n  var _proto = DraftEditorBlock.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n  }\n  /**\n   * When a block is mounted and overlaps the selection state, we need to make\n   * sure that the cursor is visible to match native behavior. This may not\n   * be the case if the user has pressed `RETURN` or pasted some content, since\n   * programmatically creating these new blocks and setting the DOM selection\n   * will miss out on the browser natively scrolling to that position.\n   *\n   * To replicate native behavior, if the block overlaps the selection state\n   * on mount, force the scroll position. Check the scroll state of the scroll\n   * parent, and adjust it to align the entire block to the bottom of the\n   * scroll parent.\n   */\n  ;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (this.props.preventScroll) {\n      return;\n    }\n\n    var selection = this.props.selection;\n    var endKey = selection.getEndKey();\n\n    if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n      return;\n    }\n\n    var blockNode = this._node;\n\n    if (blockNode == null) {\n      return;\n    }\n\n    var scrollParent = Style.getScrollParent(blockNode);\n    var scrollPosition = getScrollPosition(scrollParent);\n    var scrollDelta;\n\n    if (scrollParent === window) {\n      var nodePosition = getElementPosition(blockNode);\n      var nodeBottom = nodePosition.y + nodePosition.height;\n      var viewportHeight = getViewportDimensions().height;\n      scrollDelta = nodeBottom - viewportHeight;\n\n      if (scrollDelta > 0) {\n        window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n      }\n    } else {\n      !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n      var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n      var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n      var scrollBottom = pOffset + scrollPosition.y;\n      scrollDelta = blockBottom - scrollBottom;\n\n      if (scrollDelta > 0) {\n        Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n      }\n    }\n  };\n\n  _proto._renderChildren = function _renderChildren() {\n    var _this2 = this;\n\n    var block = this.props.block;\n    var blockKey = block.getKey();\n    var text = block.getText();\n    var lastLeafSet = this.props.tree.size - 1;\n    var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n    return this.props.tree.map(function (leafSet, ii) {\n      var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n      if (leavesForLeafSet.size === 0) {\n        return null;\n      }\n\n      var lastLeaf = leavesForLeafSet.size - 1;\n      var leaves = leavesForLeafSet.map(function (leaf, jj) {\n        var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n        var start = leaf.get('start');\n        var end = leaf.get('end');\n        return React.createElement(DraftEditorLeaf, {\n          key: offsetKey,\n          offsetKey: offsetKey,\n          block: block,\n          start: start,\n          selection: hasSelection ? _this2.props.selection : null,\n          forceSelection: _this2.props.forceSelection,\n          text: text.slice(start, end),\n          styleSet: block.getInlineStyleAt(start),\n          customStyleMap: _this2.props.customStyleMap,\n          customStyleFn: _this2.props.customStyleFn,\n          isLast: ii === lastLeafSet && jj === lastLeaf\n        });\n      }).toArray();\n      var decoratorKey = leafSet.get('decoratorKey');\n\n      if (decoratorKey == null) {\n        return leaves;\n      }\n\n      if (!_this2.props.decorator) {\n        return leaves;\n      }\n\n      var decorator = nullthrows(_this2.props.decorator);\n      var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n      if (!DecoratorComponent) {\n        return leaves;\n      }\n\n      var decoratorProps = decorator.getPropsForKey(decoratorKey);\n      var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n      var start = leavesForLeafSet.first().get('start');\n      var end = leavesForLeafSet.last().get('end');\n      var decoratedText = text.slice(start, end);\n      var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n      // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n      var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n      var commonProps = {\n        contentState: _this2.props.contentState,\n        decoratedText: decoratedText,\n        dir: dir,\n        start: start,\n        end: end,\n        blockKey: blockKey,\n        entityKey: entityKey,\n        offsetKey: decoratorOffsetKey\n      };\n      return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n        key: decoratorOffsetKey\n      }), leaves);\n    }).toArray();\n  };\n\n  _proto.render = function render() {\n    var _this3 = this;\n\n    var _this$props = this.props,\n        direction = _this$props.direction,\n        offsetKey = _this$props.offsetKey;\n    var className = cx({\n      'public/DraftStyleDefault/block': true,\n      'public/DraftStyleDefault/ltr': direction === 'LTR',\n      'public/DraftStyleDefault/rtl': direction === 'RTL'\n    });\n    return React.createElement(\"div\", {\n      \"data-offset-key\": offsetKey,\n      className: className,\n      ref: function ref(_ref) {\n        return _this3._node = _ref;\n      }\n    }, this._renderChildren());\n  };\n\n  return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n  'text/rtf': 1,\n  'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n  if (item.kind == 'file') {\n    return item.getAsFile();\n  }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n  /**\n   * @param {object} data\n   */\n  function DataTransfer(data) {\n    this.data = data; // Types could be DOMStringList or array\n\n    this.types = data.types ? createArrayFromMixed(data.types) : [];\n  }\n  /**\n   * Is this likely to be a rich text data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  var _proto = DataTransfer.prototype;\n\n  _proto.isRichText = function isRichText() {\n    // If HTML is available, treat this data as rich text. This way, we avoid\n    // using a pasted image if it is packaged with HTML -- this may occur with\n    // pastes from MS Word, for example.  However this is only rich text if\n    // there's accompanying text.\n    if (this.getHTML() && this.getText()) {\n      return true;\n    } // When an image is copied from a preview window, you end up with two\n    // DataTransferItems one of which is a file's metadata as text.  Skip those.\n\n\n    if (this.isImage()) {\n      return false;\n    }\n\n    return this.types.some(function (type) {\n      return RICH_TEXT_TYPES[type];\n    });\n  };\n  /**\n   * Get raw text.\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getText = function getText() {\n    var text;\n\n    if (this.data.getData) {\n      if (!this.types.length) {\n        text = this.data.getData('Text');\n      } else if (this.types.indexOf('text/plain') != -1) {\n        text = this.data.getData('text/plain');\n      }\n    }\n\n    return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n  };\n  /**\n   * Get HTML paste data\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getHTML = function getHTML() {\n    if (this.data.getData) {\n      if (!this.types.length) {\n        return this.data.getData('Text');\n      } else if (this.types.indexOf('text/html') != -1) {\n        return this.data.getData('text/html');\n      }\n    }\n  };\n  /**\n   * Is this a link data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.isLink = function isLink() {\n    return this.types.some(function (type) {\n      return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n    });\n  };\n  /**\n   * Get a link url.\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getLink = function getLink() {\n    if (this.data.getData) {\n      if (this.types.indexOf('text/x-moz-url') != -1) {\n        var url = this.data.getData('text/x-moz-url').split('\\n');\n        return url[0];\n      }\n\n      return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n    }\n\n    return null;\n  };\n  /**\n   * Is this an image data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.isImage = function isImage() {\n    var isImage = this.types.some(function (type) {\n      // Firefox will have a type of application/x-moz-file for images during\n      // dragging\n      return type.indexOf('application/x-moz-file') != -1;\n    });\n\n    if (isImage) {\n      return true;\n    }\n\n    var items = this.getFiles();\n\n    for (var i = 0; i < items.length; i++) {\n      var type = items[i].type;\n\n      if (!PhotosMimeType.isImage(type)) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  _proto.getCount = function getCount() {\n    if (this.data.hasOwnProperty('items')) {\n      return this.data.items.length;\n    } else if (this.data.hasOwnProperty('mozItemCount')) {\n      return this.data.mozItemCount;\n    } else if (this.data.files) {\n      return this.data.files.length;\n    }\n\n    return null;\n  };\n  /**\n   * Get files.\n   *\n   * @return {array}\n   */\n\n\n  _proto.getFiles = function getFiles() {\n    if (this.data.items) {\n      // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n      return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n    } else if (this.data.files) {\n      return Array.prototype.slice.call(this.data.files);\n    } else {\n      return [];\n    }\n  };\n  /**\n   * Are there any files to fetch?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.hasFiles = function hasFiles() {\n    return this.getFiles().length > 0;\n  };\n\n  return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n  'text/plain': true,\n  'text/html': true,\n  'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n  var readCount = 0;\n  var results = [];\n  files.forEach(function (\n  /*blob*/\n  file) {\n    readFile(file, function (\n    /*string*/\n    text) {\n      readCount++;\n      text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n      if (readCount == files.length) {\n        callback(results.join('\\r'));\n      }\n    });\n  });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n  if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n    callback('');\n    return;\n  }\n\n  if (file.type === '') {\n    var _contents = ''; // Special-case text clippings, which have an empty type but include\n    // `.textClipping` in the file name. `readAsText` results in an empty\n    // string for text clippings, so we force the file name to serve\n    // as the text value for the file.\n\n    if (TEXT_CLIPPING_REGEX.test(file.name)) {\n      _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n    }\n\n    callback(_contents);\n    return;\n  }\n\n  var reader = new FileReader();\n\n  reader.onload = function () {\n    var result = reader.result;\n    !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n    callback(result);\n  };\n\n  reader.onerror = function () {\n    callback('');\n  };\n\n  reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n  var selectionState = editorState.getSelection();\n\n  if (selectionState.isCollapsed()) {\n    return null;\n  }\n\n  return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var content = strategyState.getCurrentContent();\n    var key = selection.getAnchorKey();\n    var offset = selection.getAnchorOffset();\n    var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n    return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  var selection = editorState.getSelection();\n  return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n  var tempRange = range.cloneRange();\n  var clientRects = [];\n\n  for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n    // If we've climbed up to the common ancestor, we can now use the\n    // original start point and stop climbing the tree.\n    var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n    if (atCommonAncestor) {\n      tempRange.setStart(range.startContainer, range.startOffset);\n    } else {\n      tempRange.setStart(tempRange.endContainer, 0);\n    }\n\n    var rects = Array.from(tempRange.getClientRects());\n    clientRects.push(rects);\n\n    if (atCommonAncestor) {\n      var _ref;\n\n      clientRects.reverse();\n      return (_ref = []).concat.apply(_ref, clientRects);\n    }\n\n    tempRange.setEndBefore(ancestor);\n  }\n\n  !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n  return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n  var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n  return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n  getBackward: function getBackward(text) {\n    return getRemovableWord(text, true);\n  },\n  getForward: function getForward(text) {\n    return getRemovableWord(text, false);\n  }\n};\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n  var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n  process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n  var key = selection.getStartKey();\n  var offset = selection.getStartOffset();\n  var content = editorState.getCurrentContent();\n  var focusKey = key;\n  var focusOffset;\n  var block = content.getBlockForKey(key);\n\n  if (maxDistance > block.getText().length - offset) {\n    focusKey = content.getKeyAfter(key);\n    focusOffset = 0;\n  } else {\n    focusOffset = offset + maxDistance;\n  }\n\n  return selection.merge({\n    focusKey: focusKey,\n    focusOffset: focusOffset\n  });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n    List = _require.List,\n    Map = _require.Map,\n    OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = '&nbsp;';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp('&#13;?', 'g');\nvar REGEX_ZWS = new RegExp('&#8203;?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n  b: 'BOLD',\n  code: 'CODE',\n  del: 'STRIKETHROUGH',\n  em: 'ITALIC',\n  i: 'ITALIC',\n  s: 'STRIKETHROUGH',\n  strike: 'STRIKETHROUGH',\n  strong: 'BOLD',\n  u: 'UNDERLINE',\n  mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n *   Map({\n *     h1: 'header-one',\n *     h2: 'header-two',\n *     h3: 'header-three',\n *     h4: 'header-four',\n *     h5: 'header-five',\n *     h6: 'header-six',\n *     blockquote: 'blockquote',\n *     figure: 'atomic',\n *     pre: ['code-block'],\n *     div: 'unstyled',\n *     p: 'unstyled',\n *     li: ['ordered-list-item', 'unordered-list-item'],\n *   })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n  var blockTypeMap = {};\n  blockRenderMap.mapKeys(function (blockType, desc) {\n    var elements = [desc.element];\n\n    if (desc.aliasedElements !== undefined) {\n      elements.push.apply(elements, desc.aliasedElements);\n    }\n\n    elements.forEach(function (element) {\n      if (blockTypeMap[element] === undefined) {\n        blockTypeMap[element] = blockType;\n      } else if (typeof blockTypeMap[element] === 'string') {\n        blockTypeMap[element] = [blockTypeMap[element], blockType];\n      } else {\n        blockTypeMap[element].push(blockType);\n      }\n    });\n  });\n  return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n  if (isHTMLElement(node)) {\n    var element = node; // Currently only used to detect preformatted inline code\n\n    if (element.style.fontFamily.includes('monospace')) {\n      return 'CODE';\n    }\n  }\n\n  return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n  var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n    if (node.classList.contains(depthClass)) {\n      depth = knownListItemDepthClasses[depthClass];\n    }\n  });\n  return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n  if (!isHTMLAnchorElement(node)) {\n    return false;\n  }\n\n  var anchorNode = node;\n  return !!(anchorNode.href && (anchorNode.protocol === 'http:' || anchorNode.protocol === 'https:' || anchorNode.protocol === 'mailto:' || anchorNode.protocol === 'tel:'));\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n  if (!isHTMLImageElement(node)) {\n    return false;\n  }\n\n  var imageNode = node;\n  return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n  if (!isHTMLElement(node)) {\n    return style;\n  }\n\n  var htmlElement = node;\n  var fontWeight = htmlElement.style.fontWeight;\n  var fontStyle = htmlElement.style.fontStyle;\n  var textDecoration = htmlElement.style.textDecoration;\n  return style.withMutations(function (style) {\n    if (boldValues.indexOf(fontWeight) >= 0) {\n      style.add('BOLD');\n    } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n      style.remove('BOLD');\n    }\n\n    if (fontStyle === 'italic') {\n      style.add('ITALIC');\n    } else if (fontStyle === 'normal') {\n      style.remove('ITALIC');\n    }\n\n    if (textDecoration === 'underline') {\n      style.add('UNDERLINE');\n    }\n\n    if (textDecoration === 'line-through') {\n      style.add('STRIKETHROUGH');\n    }\n\n    if (textDecoration === 'none') {\n      style.remove('UNDERLINE');\n      style.remove('STRIKETHROUGH');\n    }\n  });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n  return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n *  ContentBlockConfig is a mutable data structure that holds all\n *  the information required to build a ContentBlock and an array of\n *  all the child nodes (childConfigs).\n *  It is being used a temporary data structure by the\n *  ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n *     new ContentBlocksBuilder()\n *        .addDOMNode(someHTMLNode)\n *        .addDOMNode(someOtherHTMLNode)\n *       .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder =\n/*#__PURE__*/\nfunction () {\n  // Most of the method in the class depend on the state of the content builder\n  // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n  // be confusing at first, it made the code simpler than the alternative which\n  // is to pass those values around in every call.\n  // The following attributes are used to accumulate text and styles\n  // as we are walking the HTML node tree.\n  // Describes the future ContentState as a tree of content blocks\n  // The content blocks generated from the blockConfigs\n  // Entity map use to store links and images found in the HTML nodes\n  // Map HTML tags to draftjs block types and disambiguation function\n  function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n    _defineProperty(this, \"characterList\", List());\n\n    _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n    _defineProperty(this, \"currentDepth\", 0);\n\n    _defineProperty(this, \"currentEntity\", null);\n\n    _defineProperty(this, \"currentText\", '');\n\n    _defineProperty(this, \"wrapper\", null);\n\n    _defineProperty(this, \"blockConfigs\", []);\n\n    _defineProperty(this, \"contentBlocks\", []);\n\n    _defineProperty(this, \"entityMap\", DraftEntity);\n\n    _defineProperty(this, \"blockTypeMap\", void 0);\n\n    _defineProperty(this, \"disambiguate\", void 0);\n\n    this.clear();\n    this.blockTypeMap = blockTypeMap;\n    this.disambiguate = disambiguate;\n  }\n  /**\n   * Clear the internal state of the ContentBlocksBuilder\n   */\n\n\n  var _proto = ContentBlocksBuilder.prototype;\n\n  _proto.clear = function clear() {\n    this.characterList = List();\n    this.blockConfigs = [];\n    this.currentBlockType = 'unstyled';\n    this.currentDepth = 0;\n    this.currentEntity = null;\n    this.currentText = '';\n    this.entityMap = DraftEntity;\n    this.wrapper = null;\n    this.contentBlocks = [];\n  }\n  /**\n   * Add an HTMLElement to the ContentBlocksBuilder\n   */\n  ;\n\n  _proto.addDOMNode = function addDOMNode(node) {\n    var _this$blockConfigs;\n\n    this.contentBlocks = [];\n    this.currentDepth = 0; // Converts the HTML node to block config\n\n    (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n    // internal state, if so make a ContentBlock out of it.\n\n\n    this._trimCurrentText();\n\n    if (this.currentText !== '') {\n      this.blockConfigs.push(this._makeBlockConfig());\n    } // for chaining\n\n\n    return this;\n  }\n  /**\n   * Return the ContentBlocks and the EntityMap that corresponds\n   * to the previously added HTML nodes.\n   */\n  ;\n\n  _proto.getContentBlocks = function getContentBlocks() {\n    if (this.contentBlocks.length === 0) {\n      if (experimentalTreeDataSupport) {\n        this._toContentBlocks(this.blockConfigs);\n      } else {\n        this._toFlatContentBlocks(this.blockConfigs);\n      }\n    }\n\n    return {\n      contentBlocks: this.contentBlocks,\n      entityMap: this.entityMap\n    };\n  } // ***********************************WARNING******************************\n  // The methods below this line are private - don't call them directly.\n\n  /**\n   * Generate a new ContentBlockConfig out of the current internal state\n   * of the builder, then clears the internal state.\n   */\n  ;\n\n  _proto._makeBlockConfig = function _makeBlockConfig() {\n    var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var key = config.key || generateRandomKey();\n\n    var block = _objectSpread({\n      key: key,\n      type: this.currentBlockType,\n      text: this.currentText,\n      characterList: this.characterList,\n      depth: this.currentDepth,\n      parent: null,\n      children: List(),\n      prevSibling: null,\n      nextSibling: null,\n      childConfigs: []\n    }, config);\n\n    this.characterList = List();\n    this.currentBlockType = 'unstyled';\n    this.currentText = '';\n    return block;\n  }\n  /**\n   * Converts an array of HTML elements to a multi-root tree of content\n   * block configs. Some text content may be left in the builders internal\n   * state to enable chaining sucessive calls.\n   */\n  ;\n\n  _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n    var blockConfigs = [];\n\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n      var nodeName = node.nodeName.toLowerCase();\n\n      if (nodeName === 'body' || isListNode(nodeName)) {\n        // body, ol and ul are 'block' type nodes so create a block config\n        // with the text accumulated so far (if any)\n        this._trimCurrentText();\n\n        if (this.currentText !== '') {\n          blockConfigs.push(this._makeBlockConfig());\n        } // body, ol and ul nodes are ignored, but their children are inlined in\n        // the parent block config.\n\n\n        var wasCurrentDepth = this.currentDepth;\n        var wasWrapper = this.wrapper;\n\n        if (isListNode(nodeName)) {\n          this.wrapper = nodeName;\n\n          if (isListNode(wasWrapper)) {\n            this.currentDepth++;\n          }\n        }\n\n        blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n        this.currentDepth = wasCurrentDepth;\n        this.wrapper = wasWrapper;\n        continue;\n      }\n\n      var blockType = this.blockTypeMap.get(nodeName);\n\n      if (blockType !== undefined) {\n        // 'block' type node means we need to create a block config\n        // with the text accumulated so far (if any)\n        this._trimCurrentText();\n\n        if (this.currentText !== '') {\n          blockConfigs.push(this._makeBlockConfig());\n        }\n\n        var _wasCurrentDepth = this.currentDepth;\n        var _wasWrapper = this.wrapper;\n        this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n        if (typeof blockType !== 'string') {\n          blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n        }\n\n        if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n          var htmlElement = node;\n          this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n        }\n\n        var key = generateRandomKey();\n\n        var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n        this._trimCurrentText();\n\n        blockConfigs.push(this._makeBlockConfig({\n          key: key,\n          childConfigs: childConfigs,\n          type: blockType\n        }));\n        this.currentDepth = _wasCurrentDepth;\n        this.wrapper = _wasWrapper;\n        continue;\n      }\n\n      if (nodeName === '#text') {\n        this._addTextNode(node, style);\n\n        continue;\n      }\n\n      if (nodeName === 'br') {\n        this._addBreakNode(node, style);\n\n        continue;\n      }\n\n      if (isValidImage(node)) {\n        this._addImgNode(node, style);\n\n        continue;\n      }\n\n      if (isValidAnchor(node)) {\n        this._addAnchorNode(node, blockConfigs, style);\n\n        continue;\n      }\n\n      var newStyle = style;\n\n      if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n        newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n      }\n\n      newStyle = styleFromNodeAttributes(node, newStyle);\n      var inlineStyle = detectInlineStyle(node);\n\n      if (inlineStyle != null) {\n        newStyle = newStyle.add(inlineStyle);\n      }\n\n      blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n    }\n\n    return blockConfigs;\n  }\n  /**\n   * Append a string of text to the internal buffer.\n   */\n  ;\n\n  _proto._appendText = function _appendText(text, style) {\n    var _this$characterList;\n\n    this.currentText += text;\n    var characterMetadata = CharacterMetadata.create({\n      style: style,\n      entity: this.currentEntity\n    });\n    this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n  }\n  /**\n   * Trim the text in the internal buffer.\n   */\n  ;\n\n  _proto._trimCurrentText = function _trimCurrentText() {\n    var l = this.currentText.length;\n    var begin = l - this.currentText.trimLeft().length;\n    var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n    var entity = this.characterList.findEntry(function (characterMetadata) {\n      return characterMetadata.getEntity() !== null;\n    });\n    begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n    entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n      return characterMetadata.getEntity() !== null;\n    });\n    end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n    if (begin > end) {\n      this.currentText = '';\n      this.characterList = List();\n    } else {\n      this.currentText = this.currentText.slice(begin, end);\n      this.characterList = this.characterList.slice(begin, end);\n    }\n  }\n  /**\n   * Add the content of an HTML text node to the internal state\n   */\n  ;\n\n  _proto._addTextNode = function _addTextNode(node, style) {\n    var text = node.textContent;\n    var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n    // normalize to a single space.\n\n    if (trimmedText === '' && this.wrapper !== 'pre') {\n      text = ' ';\n    }\n\n    if (this.wrapper !== 'pre') {\n      // Trim leading line feed, which is invisible in HTML\n      text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n      text = text.replace(REGEX_LF, SPACE);\n    }\n\n    this._appendText(text, style);\n  };\n\n  _proto._addBreakNode = function _addBreakNode(node, style) {\n    if (!isHTMLBRElement(node)) {\n      return;\n    }\n\n    this._appendText('\\n', style);\n  }\n  /**\n   * Add the content of an HTML img node to the internal state\n   */\n  ;\n\n  _proto._addImgNode = function _addImgNode(node, style) {\n    if (!isHTMLImageElement(node)) {\n      return;\n    }\n\n    var image = node;\n    var entityConfig = {};\n    imgAttr.forEach(function (attr) {\n      var imageAttribute = image.getAttribute(attr);\n\n      if (imageAttribute) {\n        entityConfig[attr] = imageAttribute;\n      }\n    }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n    this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n    // we strip those out), unless the image is for presentation only.\n    // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n    if (gkx('draftjs_fix_paste_for_img')) {\n      if (image.getAttribute('role') !== 'presentation') {\n        this._appendText(\"\\uD83D\\uDCF7\", style);\n      }\n    } else {\n      this._appendText(\"\\uD83D\\uDCF7\", style);\n    }\n\n    this.currentEntity = null;\n  }\n  /**\n   * Add the content of an HTML 'a' node to the internal state. Child nodes\n   * (if any) are converted to Block Configs and appended to the provided\n   * blockConfig array.\n   */\n  ;\n\n  _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n    // The check has already been made by isValidAnchor but\n    // we have to do it again to keep flow happy.\n    if (!isHTMLAnchorElement(node)) {\n      return;\n    }\n\n    var anchor = node;\n    var entityConfig = {};\n    anchorAttr.forEach(function (attr) {\n      var anchorAttribute = anchor.getAttribute(attr);\n\n      if (anchorAttribute) {\n        entityConfig[attr] = anchorAttribute;\n      }\n    });\n    entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n    this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n    blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n    this.currentEntity = null;\n  }\n  /**\n   * Walk the BlockConfig tree, compute parent/children/siblings,\n   * and generate the corresponding ContentBlockNode\n   */\n  ;\n\n  _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n    var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    var l = blockConfigs.length - 1;\n\n    for (var i = 0; i <= l; i++) {\n      var config = blockConfigs[i];\n      config.parent = parent;\n      config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n      config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n      config.children = List(config.childConfigs.map(function (child) {\n        return child.key;\n      }));\n      this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n      this._toContentBlocks(config.childConfigs, config.key);\n    }\n  }\n  /**\n   * Remove 'useless' container nodes from the block config hierarchy, by\n   * replacing them with their children.\n   */\n  ;\n\n  _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n    var _this = this;\n\n    var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n      // Don't mess with useful blocks\n      if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n        return [blockConfig];\n      }\n\n      return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n    });\n    return hoisted;\n  } // ***********************************************************************\n  // The two methods below are used for backward compatibility when\n  // experimentalTreeDataSupport is disabled.\n\n  /**\n   * Same as _toContentBlocks but replaces nested blocks by their\n   * text content.\n   */\n  ;\n\n  _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n    var _this2 = this;\n\n    var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n    cleanConfigs.forEach(function (config) {\n      var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n          text = _this2$_extractTextFr.text,\n          characterList = _this2$_extractTextFr.characterList;\n\n      _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n        text: config.text + text,\n        characterList: config.characterList.concat(characterList)\n      })));\n    });\n  }\n  /**\n   * Extract the text and the associated inline styles form an\n   * array of content block configs.\n   */\n  ;\n\n  _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n    var l = blockConfigs.length - 1;\n    var text = '';\n    var characterList = List();\n\n    for (var i = 0; i <= l; i++) {\n      var config = blockConfigs[i];\n      text += config.text;\n      characterList = characterList.concat(config.characterList);\n\n      if (text !== '' && config.type !== 'unstyled') {\n        text += '\\n';\n        characterList = characterList.push(characterList.last());\n      }\n\n      var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n      text += children.text;\n      characterList = characterList.concat(children.characterList);\n    }\n\n    return {\n      text: text,\n      characterList: characterList\n    };\n  };\n\n  return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n  var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n  var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n  // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n  // arbitrary code in whatever environment you're running this in. For an\n  // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n  // Remove funky characters from the HTML string\n  html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n  var safeBody = DOMBuilder(html);\n\n  if (!safeBody) {\n    return null;\n  } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n  var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n  // uses multiple block types for the same html tag.\n\n  var disambiguate = function disambiguate(tag, wrapper) {\n    if (tag === 'li') {\n      return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n    }\n\n    return null;\n  };\n\n  return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n  var doc;\n  var root = null; // Provides a safe context\n\n  if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n    doc = document.implementation.createHTMLDocument('foo');\n    !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n    doc.documentElement.innerHTML = html;\n    root = doc.getElementsByTagName('body')[0];\n  }\n\n  return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n  currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n    var selection = editorState.getSelection();\n    var contentState = editorState.getCurrentContent();\n    var entityMap = contentState.getEntityMap();\n    return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n      var entity = v.getEntity();\n      return !!entity && entityMap.__get(entity).getType() === 'LINK';\n    });\n  },\n  getCurrentBlockType: function getCurrentBlockType(editorState) {\n    var selection = editorState.getSelection();\n    return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n  },\n  getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n    return {\n      url: uri.toString()\n    };\n  },\n  handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n    switch (command) {\n      case 'bold':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n      case 'italic':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n      case 'underline':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n      case 'code':\n        return RichTextEditorUtil.toggleCode(editorState);\n\n      case 'backspace':\n      case 'backspace-word':\n      case 'backspace-to-start-of-line':\n        return RichTextEditorUtil.onBackspace(editorState);\n\n      case 'delete':\n      case 'delete-word':\n      case 'delete-to-end-of-block':\n        return RichTextEditorUtil.onDelete(editorState);\n\n      default:\n        // they may have custom editor commands; ignore those\n        return null;\n    }\n  },\n  insertSoftNewline: function insertSoftNewline(editorState) {\n    var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n    var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n    return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n  },\n\n  /**\n   * For collapsed selections at the start of styled blocks, backspace should\n   * just remove the existing style.\n   */\n  onBackspace: function onBackspace(editorState) {\n    var selection = editorState.getSelection();\n\n    if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n      return null;\n    } // First, try to remove a preceding atomic block.\n\n\n    var content = editorState.getCurrentContent();\n    var startKey = selection.getStartKey();\n    var blockBefore = content.getBlockBefore(startKey);\n\n    if (blockBefore && blockBefore.getType() === 'atomic') {\n      var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n      var withoutAtomicBlock = content.merge({\n        blockMap: blockMap,\n        selectionAfter: selection\n      });\n\n      if (withoutAtomicBlock !== content) {\n        return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n      }\n    } // If that doesn't succeed, try to remove the current block style.\n\n\n    var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n    if (withoutBlockStyle) {\n      return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n    }\n\n    return null;\n  },\n  onDelete: function onDelete(editorState) {\n    var selection = editorState.getSelection();\n\n    if (!selection.isCollapsed()) {\n      return null;\n    }\n\n    var content = editorState.getCurrentContent();\n    var startKey = selection.getStartKey();\n    var block = content.getBlockForKey(startKey);\n    var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n    if (selection.getStartOffset() < length) {\n      return null;\n    }\n\n    var blockAfter = content.getBlockAfter(startKey);\n\n    if (!blockAfter || blockAfter.getType() !== 'atomic') {\n      return null;\n    }\n\n    var atomicBlockTarget = selection.merge({\n      focusKey: blockAfter.getKey(),\n      focusOffset: blockAfter.getLength()\n    });\n    var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n    if (withoutAtomicBlock !== content) {\n      return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n    }\n\n    return null;\n  },\n  onTab: function onTab(event, editorState, maxDepth) {\n    var selection = editorState.getSelection();\n    var key = selection.getAnchorKey();\n\n    if (key !== selection.getFocusKey()) {\n      return editorState;\n    }\n\n    var content = editorState.getCurrentContent();\n    var block = content.getBlockForKey(key);\n    var type = block.getType();\n\n    if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n      return editorState;\n    }\n\n    event.preventDefault();\n    var depth = block.getDepth();\n\n    if (!event.shiftKey && depth === maxDepth) {\n      return editorState;\n    }\n\n    var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n    return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n  },\n  toggleBlockType: function toggleBlockType(editorState, blockType) {\n    var selection = editorState.getSelection();\n    var startKey = selection.getStartKey();\n    var endKey = selection.getEndKey();\n    var content = editorState.getCurrentContent();\n    var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n    // following block. The `SelectionState` for this case is accurate, but\n    // we should avoid toggling block type for the trailing block because it\n    // is a confusing interaction.\n\n    if (startKey !== endKey && selection.getEndOffset() === 0) {\n      var blockBefore = nullthrows(content.getBlockBefore(endKey));\n      endKey = blockBefore.getKey();\n      target = target.merge({\n        anchorKey: startKey,\n        anchorOffset: selection.getStartOffset(),\n        focusKey: endKey,\n        focusOffset: blockBefore.getLength(),\n        isBackward: false\n      });\n    }\n\n    var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n      return k !== startKey;\n    }).reverse().skipWhile(function (_, k) {\n      return k !== endKey;\n    }).some(function (v) {\n      return v.getType() === 'atomic';\n    });\n\n    if (hasAtomicBlock) {\n      return editorState;\n    }\n\n    var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n    return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n  },\n  toggleCode: function toggleCode(editorState) {\n    var selection = editorState.getSelection();\n    var anchorKey = selection.getAnchorKey();\n    var focusKey = selection.getFocusKey();\n\n    if (selection.isCollapsed() || anchorKey !== focusKey) {\n      return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n    }\n\n    return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n  },\n\n  /**\n   * Toggle the specified inline style for the selection. If the\n   * user's selection is collapsed, apply or remove the style for the\n   * internal state. If it is not collapsed, apply the change directly\n   * to the document state.\n   */\n  toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n    var selection = editorState.getSelection();\n    var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n    // set the result as the new inline style override. This will then be\n    // used as the inline style for the next character to be inserted.\n\n    if (selection.isCollapsed()) {\n      return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n    } // If characters are selected, immediately apply or remove the\n    // inline style on the document state itself.\n\n\n    var content = editorState.getCurrentContent();\n    var newContent; // If the style is already present for the selection range, remove it.\n    // Otherwise, apply it.\n\n    if (currentStyle.has(inlineStyle)) {\n      newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n    } else {\n      newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n    }\n\n    return EditorState.push(editorState, newContent, 'change-inline-style');\n  },\n  toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n    var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n    return EditorState.push(editorState, withoutLink, 'apply-entity');\n  },\n\n  /**\n   * When a collapsed cursor is at the start of a styled block, changes block\n   * type to 'unstyled'. Returns null if selection does not meet that criteria.\n   */\n  tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n    var selection = editorState.getSelection();\n    var offset = selection.getAnchorOffset();\n\n    if (selection.isCollapsed() && offset === 0) {\n      var key = selection.getAnchorKey();\n      var content = editorState.getCurrentContent();\n      var block = content.getBlockForKey(key);\n      var type = block.getType();\n      var blockBefore = content.getBlockBefore(key);\n\n      if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n        return null;\n      }\n\n      if (type !== 'unstyled') {\n        return DraftModifier.setBlockType(content, selection, 'unstyled');\n      }\n    }\n\n    return null;\n  }\n};\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n    isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n  return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n  if (!hasCommandModifier(e)) {\n    return null;\n  }\n\n  return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n  // Allow default \"cut\" behavior for PCs on Shift + Delete.\n  if (!isOSX && e.shiftKey) {\n    return null;\n  }\n\n  return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n  if (hasCommandModifier(e) && isOSX) {\n    return 'backspace-to-start-of-line';\n  }\n\n  return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n  switch (e.keyCode) {\n    case 66:\n      // B\n      return hasCommandModifier(e) ? 'bold' : null;\n\n    case 68:\n      // D\n      return isCtrlKeyCommand(e) ? 'delete' : null;\n\n    case 72:\n      // H\n      return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n    case 73:\n      // I\n      return hasCommandModifier(e) ? 'italic' : null;\n\n    case 74:\n      // J\n      return hasCommandModifier(e) ? 'code' : null;\n\n    case 75:\n      // K\n      return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n    case 77:\n      // M\n      return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n    case 79:\n      // O\n      return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n    case 84:\n      // T\n      return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n    case 85:\n      // U\n      return hasCommandModifier(e) ? 'underline' : null;\n\n    case 87:\n      // W\n      return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n    case 89:\n      // Y\n      if (isCtrlKeyCommand(e)) {\n        return isOSX ? 'secondary-paste' : 'redo';\n      }\n\n      return null;\n\n    case 90:\n      // Z\n      return getZCommand(e) || null;\n\n    case Keys.RETURN:\n      return 'split-block';\n\n    case Keys.DELETE:\n      return getDeleteCommand(e);\n\n    case Keys.BACKSPACE:\n      return getBackspaceCommand(e);\n    // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n    case Keys.LEFT:\n      return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n    case Keys.RIGHT:\n      return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n    default:\n      return null;\n  }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n  stringify: function stringify(key) {\n    return '_' + String(key);\n  },\n  unstringify: function unstringify(key) {\n    return key.slice(1);\n  }\n};\nmodule.exports = DraftStringKey;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;","'use strict';\nrequire('./warnAboutDeprecatedCJSRequire.js')('createBrowserHistory');\nmodule.exports = require('./index.js').createBrowserHistory;\n","var css = require('./lib/styles.css')\n\n// media breakpoint - small screen min width\nvar smallScreenMin = 768\n\n// default className for NotificationsSystem component\nvar notificationsSystemClassName = css['notifications-system']\n\n// default className for NotificationsContainer component\nvar notificationsContainerClassName = {\n  main: css['notifications-container'],\n  position: function position(_position) {\n    return css['notifications-container--' + _position]\n  }\n}\n\n// default transition for Notification component\nvar notificationsContainerTransition = {\n  enterTimeout: 500,\n  leaveTimeout: 900,\n  name: {\n    enter: css['notification-wrapper-enter'],\n    leave: css['notification-wrapper-leave']\n  }\n}\n\n// default className for Notification component\nvar notificationClassName = {\n  main: css['notification'],\n  wrapper: css['notification-wrapper'],\n  meta: css['notification-meta'],\n  title: css['notification-title'],\n  message: css['notification-message'],\n  // `fa` corresponds to font-awesome's class name\n  icon: 'fa ' + css['notification-icon'],\n  imageContainer: css['notification-image-container'],\n  image: css['notification-image'],\n  status: function status(_status) {\n    return css['notification--' + _status]\n  },\n  dismissible: css['notification--dismissible'],\n  buttons: function buttons(count) {\n    if (count === 0) {\n      return ''\n    } else if (count === 1) {\n      return css['notification--buttons-1']\n    } else if (count === 2) {\n      return css['notification--buttons-2']\n    }\n    return css['notification-buttons']\n  },\n  closeButtonContainer: css['notification-close-button-container'],\n  closeButton: 'fa ' + css['notification-close-button'],\n  button: css['notification-button'],\n  buttonText: css['notification-button-text']\n}\n\nmodule.exports = {\n  smallScreenMin: smallScreenMin,\n  notificationsSystem: {\n    className: notificationsSystemClassName\n  },\n  notificationsContainer: {\n    className: notificationsContainerClassName,\n    transition: notificationsContainerTransition\n  },\n  notification: {\n    className: notificationClassName\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 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    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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/**\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 * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * 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 the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\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 * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\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 * 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/** 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    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\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 * 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 methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\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 `_.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 * 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 * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\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 * 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 * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\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 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\nmodule.exports = difference;\n","/**\n * lodash 3.0.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/* pako 1.0.11 nodeca/pako */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.pako = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n\n},{}],2:[function(require,module,exports){\n// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n},{\"./common\":1}],3:[function(require,module,exports){\n'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n},{}],4:[function(require,module,exports){\n'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n        );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n},{\"../utils/common\":1,\"./adler32\":3,\"./crc32\":4,\"./messages\":6,\"./trees\":7}],6:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n},{}],7:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n},{\"../utils/common\":1}],8:[function(require,module,exports){\n'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n},{}],\"/lib/deflate.js\":[function(require,module,exports){\n'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n},{\"./utils/common\":1,\"./utils/strings\":2,\"./zlib/deflate\":5,\"./zlib/messages\":6,\"./zlib/zstream\":8}]},{},[])(\"/lib/deflate.js\")\n});\n","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","module.exports=function(r){var n={};function a(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,a),t.l=!0,t.exports}return a.m=r,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=32)}([function(e,t,r){e.exports=r(27)()},function(e,t,r){\"use strict\";e.exports=r(25)},function(e,t,r){e.exports=r(21)},function(e,t,r){var a=r(20);e.exports=function(t){for(var e=1;e<arguments.length;e++)if(e%2){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);\"function\"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(e){a(t,e,r[e])})}else Object.defineProperties(t,Object.getOwnPropertyDescriptors(arguments[e]));return t}},function(e,t){function s(e,t,r,n,a,o,i){try{var u=e[o](i),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,a)}e.exports=function(u){return function(){var e=this,i=arguments;return new Promise(function(t,r){var n=u.apply(e,i);function a(e){s(n,t,r,a,o,\"next\",e)}function o(e){s(n,t,r,a,o,\"throw\",e)}a(void 0)})}}},function(t,e){function r(e){return t.exports=r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}t.exports=r},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},function(e,t,r){var n=r(22),a=r(9);e.exports=function(e,t){return!t||\"object\"!==n(t)&&\"function\"!=typeof t?a(e):t}},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t,r){var n=r(23);e.exports=function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&n(e,t)}},function(e,t,r){var n=r(29),a=r(30),o=r(31);e.exports=function(e,t){return n(e)||a(e,t)||o()}},function(e,t,r){var n=r(17),a=r(18),o=r(19);e.exports=function(e){return n(e)||a(e)||o()}},function(n,e,t){t(5);var o=t(24);function a(e,t,r){return\"undefined\"!=typeof Reflect&&Reflect.get?n.exports=a=Reflect.get:n.exports=a=function(e,t,r){var n=o(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(r):a.value}},a(e,t,r||e)}n.exports=a},function(e,t){e.exports=\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgOCAxNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMzMzMzMzIj48cGF0aCBkPSJNMSwxNCBDMC40LDE0IDAsMTMuNiAwLDEzIEwwLDEgQzAsMC40IDAuNCwwIDEsMCBDMS42LDAgMiwwLjQgMiwxIEwyLDEzIEMyLDEzLjYgMS42LDE0IDEsMTQgWiIgaWQ9IlBhdGgiPjwvcGF0aD48cGF0aCBkPSJNNywxNCBDNi40LDE0IDYsMTMuNiA2LDEzIEw2LDEgQzYsMC40IDYuNCwwIDcsMCBDNy42LDAgOCwwLjQgOCwxIEw4LDEzIEM4LDEzLjYgNy42LDE0IDcsMTQgWiIgaWQ9IlBhdGgiPjwvcGF0aD48L2c+PC9zdmc+Cg==\"},function(e,t){e.exports=\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTQgMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMCwgMC4wKSIgZmlsbD0iIzMzMzMzMyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNC4wLCAwLjApIj48cG9seWdvbiBwb2ludHM9IjcuNzE5IDQuOTY0IDEyLjY5MiAwLjAxNyAxNC4zODkgMS43MTUgOS40MTIgNi42NjYgMTQuMzU0IDExLjYzNCAxMi42NTcgMTMuMzMxIDYuMDE3IDYuNjU3IDcuNzE1IDQuOTYwIj48L3BvbHlnb24+PHBvbHlnb24gcG9pbnRzPSI3LjYxMiA0Ljk2NCA3LjYxNiA0Ljk2MCA5LjMxMyA2LjY1NyAyLjY3NCAxMy4zMzEgMC45NzcgMTEuNjM0IDUuOTE5IDYuNjY2IDAuOTQyIDEuNzE1IDIuNjM5IDAuMDE3Ij48L3BvbHlnb24+PC9nPjwvZz48L3N2Zz4K\"},function(e,t){e.exports=\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGc+PHBhdGggZD0iTTAuNSwxNC45IEMwLjIsMTQuNyAwLDE0LjQgMCwxNCBMMCwyIEMwLDEuNiAwLjIsMS4zIDAuNSwxLjEgQzAuOCwwLjkgMS4yLDAuOSAxLjUsMS4xIEwxMC41LDcuMSBDMTAuOCw3LjMgMTAuOSw3LjYgMTAuOSw3LjkgQzEwLjksOC4yIDEwLjcsOC41IDEwLjUsOC43IEwxLjUsMTQuNyBDMS40LDE0LjkgMC44LDE1LjEgMC41LDE0LjkgWiBNMiwzLjkgTDIsMTIuMiBMOC4yLDguMSBMMiwzLjkgWiI+PC9wYXRoPjwvZz48L3N2Zz4K\"},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},function(e,t,r){var n=function(o){\"use strict\";var s,e=Object.prototype,c=e.hasOwnProperty,t=\"function\"==typeof Symbol?Symbol:{},a=t.iterator||\"@@iterator\",r=t.asyncIterator||\"@@asyncIterator\",n=t.toStringTag||\"@@toStringTag\";function i(e,t,r,n){var a=t&&t.prototype instanceof u?t:u,o=Object.create(a.prototype),i=new O(n||[]);return o._invoke=function(o,i,u){var s=f;return function(e,t){if(s===d)throw new Error(\"Generator is already running\");if(s===m){if(\"throw\"===e)throw t;return D()}for(u.method=e,u.arg=t;;){var r=u.delegate;if(r){var n=C(r,u);if(n){if(n===y)continue;return n}}if(\"next\"===u.method)u.sent=u._sent=u.arg;else if(\"throw\"===u.method){if(s===f)throw s=m,u.arg;u.dispatchException(u.arg)}else\"return\"===u.method&&u.abrupt(\"return\",u.arg);s=d;var a=l(o,i,u);if(\"normal\"===a.type){if(s=u.done?m:p,a.arg===y)continue;return{value:a.arg,done:u.done}}\"throw\"===a.type&&(s=m,u.method=\"throw\",u.arg=a.arg)}}}(e,r,i),o}function l(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}o.wrap=i;var f=\"suspendedStart\",p=\"suspendedYield\",d=\"executing\",m=\"completed\",y={};function u(){}function h(){}function v(){}var g={};g[a]=function(){return this};var b=Object.getPrototypeOf,w=b&&b(b(L([])));w&&w!==e&&c.call(w,a)&&(g=w);var x=v.prototype=u.prototype=Object.create(g);function S(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function E(s){var t;this._invoke=function(r,n){function e(){return new Promise(function(e,t){!function t(e,r,n,a){var o=l(s[e],s,r);if(\"throw\"!==o.type){var i=o.arg,u=i.value;return u&&\"object\"==typeof u&&c.call(u,\"__await\")?Promise.resolve(u.__await).then(function(e){t(\"next\",e,n,a)},function(e){t(\"throw\",e,n,a)}):Promise.resolve(u).then(function(e){i.value=e,n(i)},function(e){return t(\"throw\",e,n,a)})}a(o.arg)}(r,n,e,t)})}return t=t?t.then(e,e):e()}}function C(e,t){var r=e.iterator[t.method];if(r===s){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=s,C(e,t),\"throw\"===t.method))return y;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return y}var n=l(r,e.iterator,t.arg);if(\"throw\"===n.type)return t.method=\"throw\",t.arg=n.arg,t.delegate=null,y;var a=n.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=s),t.delegate=null,y):a:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,y)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(R,this),this.reset(!0)}function L(t){if(t){var e=t[a];if(e)return e.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r<t.length;)if(c.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=s,e.done=!0,e};return n.next=n}}return{next:D}}function D(){return{value:s,done:!0}}return h.prototype=x.constructor=v,v.constructor=h,v[n]=h.displayName=\"GeneratorFunction\",o.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===h||\"GeneratorFunction\"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,n in e||(e[n]=\"GeneratorFunction\")),e.prototype=Object.create(x),e},o.awrap=function(e){return{__await:e}},S(E.prototype),E.prototype[r]=function(){return this},o.AsyncIterator=E,o.async=function(e,t,r,n){var a=new E(i(e,t,r,n));return o.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},S(x),x[n]=\"Generator\",x[a]=function(){return this},x.toString=function(){return\"[object Generator]\"},o.keys=function(r){var n=[];for(var e in r)n.push(e);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},o.values=L,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=s,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=s,this.tryEntries.forEach(j),!e)for(var t in this)\"t\"===t.charAt(0)&&c.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=s)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return o.type=\"throw\",o.arg=r,n.next=e,t&&(n.method=\"next\",n.arg=s),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var a=this.tryEntries[t],o=a.completion;if(\"root\"===a.tryLoc)return e(\"end\");if(a.tryLoc<=this.prev){var i=c.call(a,\"catchLoc\"),u=c.call(a,\"finallyLoc\");if(i&&u){if(this.prev<a.catchLoc)return e(a.catchLoc,!0);if(this.prev<a.finallyLoc)return e(a.finallyLoc)}else if(i){if(this.prev<a.catchLoc)return e(a.catchLoc,!0)}else{if(!u)throw new Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return e(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;0<=r;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&c.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var a=n;break}}a&&(\"break\"===e||\"continue\"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=e,o.arg=t,a?(this.method=\"next\",this.next=a.finallyLoc,y):this.complete(o)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var a=n.arg;j(r)}return a}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:L(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=s),y}},o}(e.exports);try{regeneratorRuntime=n}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(n)}},function(t,e){function r(e){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function n(e){return\"function\"==typeof Symbol&&\"symbol\"===r(Symbol.iterator)?t.exports=n=function(e){return r(e)}:t.exports=n=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":r(e)},n(e)}t.exports=n},function(r,e){function n(e,t){return r.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},n(e,t)}r.exports=n},function(e,t,r){var n=r(5);e.exports=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e}},function(e,t,r){\"use strict\";\n/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */var l=r(26),n=\"function\"==typeof Symbol&&Symbol.for,f=n?Symbol.for(\"react.element\"):60103,c=n?Symbol.for(\"react.portal\"):60106,a=n?Symbol.for(\"react.fragment\"):60107,o=n?Symbol.for(\"react.strict_mode\"):60108,i=n?Symbol.for(\"react.profiler\"):60114,u=n?Symbol.for(\"react.provider\"):60109,s=n?Symbol.for(\"react.context\"):60110,p=n?Symbol.for(\"react.concurrent_mode\"):60111,d=n?Symbol.for(\"react.forward_ref\"):60112,m=n?Symbol.for(\"react.suspense\"):60113,y=n?Symbol.for(\"react.memo\"):60115,h=n?Symbol.for(\"react.lazy\"):60116,v=\"function\"==typeof Symbol&&Symbol.iterator;function g(e){for(var t=arguments.length-1,r=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=0;n<t;n++)r+=\"&args[]=\"+encodeURIComponent(arguments[n+1]);!function(e,t,r,n,a,o,i,u){if(!e){if((e=void 0)===t)e=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var s=[r,n,a,o,i,u],c=0;(e=Error(t.replace(/%s/g,function(){return s[c++]}))).name=\"Invariant Violation\"}throw e.framesToPop=1,e}}(!1,\"Minified React error #\"+e+\"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \",r)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w={};function x(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||b}function S(){}function E(e,t,r){this.props=e,this.context=t,this.refs=w,this.updater=r||b}x.prototype.isReactComponent={},x.prototype.setState=function(e,t){\"object\"!=typeof e&&\"function\"!=typeof e&&null!=e&&g(\"85\"),this.updater.enqueueSetState(this,e,t,\"setState\")},x.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")},S.prototype=x.prototype;var C=E.prototype=new S;C.constructor=E,l(C,x.prototype),C.isPureReactComponent=!0;var R={current:null},j={current:null},O=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};function D(e,t,r){var n=void 0,a={},o=null,i=null;if(null!=t)for(n in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(o=\"\"+t.key),t)O.call(t,n)&&!L.hasOwnProperty(n)&&(a[n]=t[n]);var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}if(e&&e.defaultProps)for(n in u=e.defaultProps)void 0===a[n]&&(a[n]=u[n]);return{$$typeof:f,type:e,key:o,ref:i,props:a,_owner:j.current}}function _(e){return\"object\"==typeof e&&null!==e&&e.$$typeof===f}var N=/\\/+/g,z=[];function I(e,t,r,n){if(z.length){var a=z.pop();return a.result=e,a.keyPrefix=t,a.func=r,a.context=n,a.count=0,a}return{result:e,keyPrefix:t,func:r,context:n,count:0}}function M(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,z.length<10&&z.push(e)}function P(e,t,r){return null==e?0:function e(t,r,n,a){var o=typeof t;\"undefined\"!==o&&\"boolean\"!==o||(t=null);var i=!1;if(null===t)i=!0;else switch(o){case\"string\":case\"number\":i=!0;break;case\"object\":switch(t.$$typeof){case f:case c:i=!0}}if(i)return n(a,t,\"\"===r?\".\"+F(t,0):r),1;if(i=0,r=\"\"===r?\".\":r+\":\",Array.isArray(t))for(var u=0;u<t.length;u++){var s=r+F(o=t[u],u);i+=e(o,s,n,a)}else if(\"function\"==typeof(s=null===t||\"object\"!=typeof t?null:\"function\"==typeof(s=v&&t[v]||t[\"@@iterator\"])?s:null))for(t=s.call(t),u=0;!(o=t.next()).done;)i+=e(o=o.value,s=r+F(o,u++),n,a);else\"object\"===o&&g(\"31\",\"[object Object]\"==(n=\"\"+t)?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":n,\"\");return i}(e,\"\",t,r)}function F(e,t){return\"object\"==typeof e&&null!==e&&null!=e.key?function(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+e).replace(/[=:]/g,function(e){return t[e]})}(e.key):t.toString(36)}function k(e,t){e.func.call(e.context,t,e.count++)}function q(e,t,r){var n=e.result,a=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?T(e,n,r,function(e){return e}):null!=e&&(_(e)&&(e=function(e,t){return{$$typeof:f,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,a+(!e.key||t&&t.key===e.key?\"\":(\"\"+e.key).replace(N,\"$&/\")+\"/\")+r)),n.push(e))}function T(e,t,r,n,a){var o=\"\";null!=r&&(o=(\"\"+r).replace(N,\"$&/\")+\"/\"),P(e,q,t=I(t,o,n,a)),M(t)}function B(){var e=R.current;return null===e&&g(\"321\"),e}var A={Children:{map:function(e,t,r){if(null==e)return e;var n=[];return T(e,n,null,t,r),n},forEach:function(e,t,r){if(null==e)return e;P(e,k,t=I(null,null,t,r)),M(t)},count:function(e){return P(e,function(){return null},null)},toArray:function(e){var t=[];return T(e,t,null,function(e){return e}),t},only:function(e){return _(e)||g(\"143\"),e}},createRef:function(){return{current:null}},Component:x,PureComponent:E,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:d,render:e}},lazy:function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:y,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return B().useCallback(e,t)},useContext:function(e,t){return B().useContext(e,t)},useEffect:function(e,t){return B().useEffect(e,t)},useImperativeHandle:function(e,t,r){return B().useImperativeHandle(e,t,r)},useDebugValue:function(){},useLayoutEffect:function(e,t){return B().useLayoutEffect(e,t)},useMemo:function(e,t){return B().useMemo(e,t)},useReducer:function(e,t,r){return B().useReducer(e,t,r)},useRef:function(e){return B().useRef(e)},useState:function(e){return B().useState(e)},Fragment:a,StrictMode:o,Suspense:m,createElement:D,cloneElement:function(e,t,r){null==e&&g(\"267\",e);var n=void 0,a=l({},e.props),o=e.key,i=e.ref,u=e._owner;if(null!=t){void 0!==t.ref&&(i=t.ref,u=j.current),void 0!==t.key&&(o=\"\"+t.key);var s=void 0;for(n in e.type&&e.type.defaultProps&&(s=e.type.defaultProps),t)O.call(t,n)&&!L.hasOwnProperty(n)&&(a[n]=void 0===t[n]&&void 0!==s?s[n]:t[n])}if(1===(n=arguments.length-2))a.children=r;else if(1<n){s=Array(n);for(var c=0;c<n;c++)s[c]=arguments[c+2];a.children=s}return{$$typeof:f,type:e.type,key:o,ref:i,props:a,_owner:u}},createFactory:function(e){var t=D.bind(null,e);return t.type=e,t},isValidElement:_,version:\"16.8.6\",unstable_ConcurrentMode:p,unstable_Profiler:i,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:R,ReactCurrentOwner:j,assign:l}},U=A;e.exports=U.default||U},function(e,t,r){\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/var s=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",\"5\"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t[\"_\"+String.fromCharCode(r)]=r;if(\"0123456789\"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(\"\"))return!1;var n={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(e){n[e]=e}),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},n)).join(\"\")}catch(e){return!1}}()?Object.assign:function(e,t){for(var r,n,a=function(e){if(null==e)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}(e),o=1;o<arguments.length;o++){for(var i in r=Object(arguments[o]))c.call(r,i)&&(a[i]=r[i]);if(s){n=s(r);for(var u=0;u<n.length;u++)l.call(r,n[u])&&(a[n[u]]=r[n[u]])}}return a}},function(e,t,r){\"use strict\";var u=r(28);function n(){}function a(){}a.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,a,o){if(o!==u){var i=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw i.name=\"Invariant Violation\",i}}function t(){return e}var r={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:n};return r.PropTypes=r}},function(e,t,r){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){var r=[],n=!0,a=!1,o=void 0;try{for(var i,u=e[Symbol.iterator]();!(n=(i=u.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==u.return||u.return()}finally{if(a)throw o}}return r}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}},function(e,t,r){\"use strict\";r.r(t);function n(e){var t=e.input,r=e.previews,n=e.submitButton,a=e.dropzoneProps,o=e.files,i=e.extra.maxFiles;return pe.a.createElement(\"div\",Object.assign({},a),r,o.length<i&&t,0<o.length&&n)}var a=r(12),le=r.n(a),o=r(3),fe=r.n(o),i=r(2),C=r.n(i),u=r(4),h=r.n(u),s=r(6),c=r.n(s),l=r(7),f=r.n(l),p=r(8),d=r.n(p),m=r(9),y=r.n(m),v=r(10),g=r.n(v),b=r(5),w=r.n(b),x=r(13),S=r.n(x),E=r(1),pe=r.n(E),R=r(0),j=r.n(R);n.propTypes={input:j.a.node,previews:j.a.arrayOf(j.a.node),submitButton:j.a.node,dropzoneProps:j.a.shape({ref:j.a.any.isRequired,className:j.a.string.isRequired,style:j.a.object,onDragEnter:j.a.func.isRequired,onDragOver:j.a.func.isRequired,onDragLeave:j.a.func.isRequired,onDrop:j.a.func.isRequired}).isRequired,files:j.a.arrayOf(j.a.any).isRequired,extra:j.a.shape({active:j.a.bool.isRequired,reject:j.a.bool.isRequired,dragged:j.a.arrayOf(j.a.any).isRequired,accept:j.a.string.isRequired,multiple:j.a.bool.isRequired,minSizeBytes:j.a.number.isRequired,maxSizeBytes:j.a.number.isRequired,maxFiles:j.a.number.isRequired,onFiles:j.a.func.isRequired,onCancelFile:j.a.func.isRequired,onRemoveFile:j.a.func.isRequired,onRestartFile:j.a.func.isRequired}).isRequired};function O(e){var t,r=e.className,n=e.labelClassName,a=e.labelWithFilesClassName,o=e.style,i=e.labelStyle,u=e.labelWithFilesStyle,s=e.getFilesFromEvent,c=e.accept,l=e.multiple,f=e.disabled,p=e.content,d=e.withFilesContent,m=e.onFiles,y=e.files;return pe.a.createElement(\"label\",{className:0<y.length?a:n,style:0<y.length?u:i},0<y.length?d:p,pe.a.createElement(\"input\",{className:r,style:o,type:\"file\",accept:c,multiple:l,disabled:f,onChange:(t=h()(C.a.mark(function e(t){var r,n;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.target,e.next=3,s(t);case 3:n=e.sent,m(n),r.value=null;case 6:case\"end\":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}))}var de=n;O.propTypes={className:j.a.string,labelClassName:j.a.string,labelWithFilesClassName:j.a.string,style:j.a.object,labelStyle:j.a.object,labelWithFilesStyle:j.a.object,getFilesFromEvent:j.a.func.isRequired,accept:j.a.string.isRequired,multiple:j.a.bool.isRequired,disabled:j.a.bool.isRequired,content:j.a.node,withFilesContent:j.a.node,onFiles:j.a.func.isRequired,files:j.a.arrayOf(j.a.any).isRequired,extra:j.a.shape({active:j.a.bool.isRequired,reject:j.a.bool.isRequired,dragged:j.a.arrayOf(j.a.any).isRequired,accept:j.a.string.isRequired,multiple:j.a.bool.isRequired,minSizeBytes:j.a.number.isRequired,maxSizeBytes:j.a.number.isRequired,maxFiles:j.a.number.isRequired}).isRequired};function L(e){for(var t=0,r=e;1024<=r;)r/=1024,t+=1;return\"\".concat(r.toFixed(10<=r||t<1?0:1)).concat([\"bytes\",\"kB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"][t])}function D(e){var t=new Date(0);t.setSeconds(e);var r=t.toISOString().slice(11,19);return e<3600?r.slice(3):r}function me(t,e){if(!e||\"*\"===e)return!0;var r=t.type||\"\",n=r.replace(/\\/.*$/,\"\");return e.split(\",\").map(function(e){return e.trim()}).some(function(e){return\".\"===e.charAt(0)?void 0===t.name||t.name.toLowerCase().endsWith(e.toLowerCase()):e.endsWith(\"/*\")?n===e.replace(/\\/.*$/,\"\"):r===e})}function ye(e){for(var t=arguments.length,r=new Array(1<t?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return\"function\"==typeof e?e.apply(void 0,r):e}function _(e){var t=null;if(\"dataTransfer\"in e){var r=e.dataTransfer;\"files\"in r&&r.files.length?t=r.files:r.items&&r.items.length&&(t=r.items)}else e.target&&e.target.files&&(t=e.target.files);return Array.prototype.slice.call(t)}var he=O,N=r(11),ve=r.n(N),ge={dropzone:\"dzu-dropzone\",dropzoneActive:\"dzu-dropzoneActive\",dropzoneReject:\"dzu-dropzoneActive\",dropzoneDisabled:\"dzu-dropzoneDisabled\",input:\"dzu-input\",inputLabel:\"dzu-inputLabel\",inputLabelWithFiles:\"dzu-inputLabelWithFiles\",preview:\"dzu-previewContainer\",previewImage:\"dzu-previewImage\",submitButtonContainer:\"dzu-submitButtonContainer\",submitButton:\"dzu-submitButton\"},z=r(14),I=r.n(z),M=r(15),P=r.n(M),F=r(16),k=r.n(F),q={cancel:{backgroundImage:\"url(\".concat(I.a,\")\")},remove:{backgroundImage:\"url(\".concat(P.a,\")\")},restart:{backgroundImage:\"url(\".concat(k.a,\")\")}},T=function(e){function t(){return c()(this,t),d()(this,w()(t).apply(this,arguments))}return g()(t,e),f()(t,[{key:\"render\",value:function(){var e=this.props,t=e.className,r=e.imageClassName,n=e.style,a=e.imageStyle,o=e.fileWithMeta,i=o.cancel,u=o.remove,s=o.restart,c=e.meta,l=c.name,f=void 0===l?\"\":l,p=c.percent,d=void 0===p?0:p,m=c.size,y=void 0===m?0:m,h=c.previewUrl,v=c.status,g=c.duration,b=c.validationError,w=e.isUpload,x=e.canCancel,S=e.canRemove,E=e.canRestart,C=e.extra.minSizeBytes,R=\"\".concat(f||\"?\",\", \").concat(L(y));return g&&(R=\"\".concat(R,\", \").concat(D(g))),\"error_file_size\"===v||\"error_validation\"===v?pe.a.createElement(\"div\",{className:t,style:n},pe.a.createElement(\"span\",{className:\"dzu-previewFileNameError\"},R),\"error_file_size\"===v&&pe.a.createElement(\"span\",null,y<C?\"File too small\":\"File too big\"),\"error_validation\"===v&&pe.a.createElement(\"span\",null,String(b)),S&&pe.a.createElement(\"span\",{className:\"dzu-previewButton\",style:q.remove,onClick:u})):(\"error_upload_params\"!==v&&\"exception_upload\"!==v&&\"error_upload\"!==v||(R=\"\".concat(R,\" (upload failed)\")),\"aborted\"===v&&(R=\"\".concat(R,\" (cancelled)\")),pe.a.createElement(\"div\",{className:t,style:n},h&&pe.a.createElement(\"img\",{className:r,style:a,src:h,alt:R,title:R}),!h&&pe.a.createElement(\"span\",{className:\"dzu-previewFileName\"},R),pe.a.createElement(\"div\",{className:\"dzu-previewStatusContainer\"},w&&pe.a.createElement(\"progress\",{max:100,value:\"done\"===v||\"headers_received\"===v?100:d}),\"uploading\"===v&&x&&pe.a.createElement(\"span\",{className:\"dzu-previewButton\",style:q.cancel,onClick:i}),\"preparing\"!==v&&\"getting_upload_params\"!==v&&\"uploading\"!==v&&S&&pe.a.createElement(\"span\",{className:\"dzu-previewButton\",style:q.remove,onClick:u}),[\"error_upload_params\",\"exception_upload\",\"error_upload\",\"aborted\",\"ready\"].includes(v)&&E&&pe.a.createElement(\"span\",{className:\"dzu-previewButton\",style:q.restart,onClick:s}))))}}]),t}(pe.a.PureComponent);T.propTypes={className:j.a.string,imageClassName:j.a.string,style:j.a.object,imageStyle:j.a.object,fileWithMeta:j.a.shape({file:j.a.any.isRequired,meta:j.a.object.isRequired,cancel:j.a.func.isRequired,restart:j.a.func.isRequired,remove:j.a.func.isRequired,xhr:j.a.any}).isRequired,meta:j.a.shape({status:j.a.oneOf([\"preparing\",\"error_file_size\",\"error_validation\",\"ready\",\"getting_upload_params\",\"error_upload_params\",\"uploading\",\"exception_upload\",\"aborted\",\"error_upload\",\"headers_received\",\"done\"]).isRequired,type:j.a.string.isRequired,name:j.a.string,uploadedDate:j.a.string.isRequired,percent:j.a.number,size:j.a.number,lastModifiedDate:j.a.string,previewUrl:j.a.string,duration:j.a.number,width:j.a.number,height:j.a.number,videoWidth:j.a.number,videoHeight:j.a.number,validationError:j.a.any}).isRequired,isUpload:j.a.bool.isRequired,canCancel:j.a.bool.isRequired,canRemove:j.a.bool.isRequired,canRestart:j.a.bool.isRequired,files:j.a.arrayOf(j.a.any).isRequired,extra:j.a.shape({active:j.a.bool.isRequired,reject:j.a.bool.isRequired,dragged:j.a.arrayOf(j.a.any).isRequired,accept:j.a.string.isRequired,multiple:j.a.bool.isRequired,minSizeBytes:j.a.number.isRequired,maxSizeBytes:j.a.number.isRequired,maxFiles:j.a.number.isRequired}).isRequired};function B(e){var t=e.className,r=e.buttonClassName,n=e.style,a=e.buttonStyle,o=e.disabled,i=e.content,u=e.onSubmit,s=e.files,c=s.some(function(e){return[\"preparing\",\"getting_upload_params\",\"uploading\"].includes(e.meta.status)})||!s.some(function(e){return[\"headers_received\",\"done\"].includes(e.meta.status)});return pe.a.createElement(\"div\",{className:t,style:n},pe.a.createElement(\"button\",{className:r,style:a,onClick:function(){u(s.filter(function(e){return[\"headers_received\",\"done\"].includes(e.meta.status)}))},disabled:o||c},i))}var be=T;B.propTypes={className:j.a.string,buttonClassName:j.a.string,style:j.a.object,buttonStyle:j.a.object,disabled:j.a.bool.isRequired,content:j.a.node,onSubmit:j.a.func.isRequired,files:j.a.arrayOf(j.a.object).isRequired,extra:j.a.shape({active:j.a.bool.isRequired,reject:j.a.bool.isRequired,dragged:j.a.arrayOf(j.a.any).isRequired,accept:j.a.string.isRequired,multiple:j.a.bool.isRequired,minSizeBytes:j.a.number.isRequired,maxSizeBytes:j.a.number.isRequired,maxFiles:j.a.number.isRequired}).isRequired};var we=B;r.d(t,\"Layout\",function(){return de}),r.d(t,\"Input\",function(){return he}),r.d(t,\"Preview\",function(){return be}),r.d(t,\"SubmitButton\",function(){return we}),r.d(t,\"formatBytes\",function(){return L}),r.d(t,\"formatDuration\",function(){return D}),r.d(t,\"accepts\",function(){return me}),r.d(t,\"defaultClassNames\",function(){return ge}),r.d(t,\"getFilesFromEvent\",function(){return _});var A=function(e){function t(e){var E;return c()(this,t),(E=d()(this,w()(t).call(this,e))).forceUpdate=function(){E.mounted&&S()(w()(t.prototype),\"forceUpdate\",y()(E)).call(y()(E))},E.getFilesFromEvent=function(){return E.props.getFilesFromEvent||_},E.getDataTransferItemsFromEvent=function(){return E.props.getDataTransferItemsFromEvent||_},E.handleDragEnter=function(){var t=h()(C.a.mark(function e(t){var r;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),t.stopPropagation(),e.next=4,E.getDataTransferItemsFromEvent()(t);case 4:r=e.sent,E.setState({active:!0,dragged:r});case 6:case\"end\":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}(),E.handleDragOver=function(){var t=h()(C.a.mark(function e(t){var r;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),t.stopPropagation(),clearTimeout(E.dragTimeoutId),e.next=5,E.getDataTransferItemsFromEvent()(t);case 5:r=e.sent,E.setState({active:!0,dragged:r});case 7:case\"end\":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}(),E.handleDragLeave=function(e){e.preventDefault(),e.stopPropagation(),E.dragTimeoutId=window.setTimeout(function(){return E.setState({active:!1,dragged:[]})},150)},E.handleDrop=function(){var t=h()(C.a.mark(function e(t){var r;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),t.stopPropagation(),E.setState({active:!1,dragged:[]}),e.next=5,E.getFilesFromEvent()(t);case 5:r=e.sent,E.handleFiles(r);case 7:case\"end\":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}(),E.handleDropDisabled=function(e){e.preventDefault(),e.stopPropagation(),E.setState({active:!1,dragged:[]})},E.handleChangeStatus=function(e){if(E.props.onChangeStatus){var t=(E.props.onChangeStatus(e,e.meta.status,E.files)||{}).meta,r=void 0===t?{}:t;r&&(delete r.status,e.meta=fe()({},e.meta,{},r),E.forceUpdate())}},E.handleSubmit=function(e){E.props.onSubmit&&E.props.onSubmit(e,le()(E.files))},E.handleCancel=function(e){\"uploading\"===e.meta.status&&(e.meta.status=\"aborted\",e.xhr&&e.xhr.abort(),E.handleChangeStatus(e),E.forceUpdate())},E.handleRemove=function(t){var e=E.files.findIndex(function(e){return e===t});-1!==e&&(URL.revokeObjectURL(t.meta.previewUrl||\"\"),t.meta.status=\"removed\",E.handleChangeStatus(t),E.files.splice(e,1),E.forceUpdate())},E.handleRestart=function(e){E.props.getUploadParams&&(\"ready\"===e.meta.status?e.meta.status=\"started\":e.meta.status=\"restarted\",E.handleChangeStatus(e),e.meta.status=\"getting_upload_params\",e.meta.percent=0,E.handleChangeStatus(e),E.forceUpdate(),E.uploadFile(e))},E.handleFiles=function(e){e.forEach(function(e,t){return E.handleFile(e,\"\".concat((new Date).getTime(),\"-\").concat(t))});var t=E.dropzone.current;t&&setTimeout(function(){return t.scroll({top:t.scrollHeight,behavior:\"smooth\"})},150)},E.handleFile=function(){var r=h()(C.a.mark(function e(t,r){var n,a,o,i,u,s,c,l,f,p,d,m,y,h,v,g;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.name,a=t.size,o=t.type,i=t.lastModified,u=E.props,s=u.minSizeBytes,c=u.maxSizeBytes,l=u.maxFiles,f=u.accept,p=u.getUploadParams,d=u.autoUpload,m=u.validate,y=(new Date).toISOString(),h=i&&new Date(i).toISOString(),v={file:t,meta:{name:n,size:a,type:o,lastModifiedDate:h,uploadedDate:y,percent:0,id:r}},\"application/x-moz-file\"===t.type||me(t,f)){e.next=9;break}return v.meta.status=\"rejected_file_type\",E.handleChangeStatus(v),e.abrupt(\"return\");case 9:if(E.files.length>=l)return v.meta.status=\"rejected_max_files\",E.handleChangeStatus(v),e.abrupt(\"return\");e.next=13;break;case 13:if(v.cancel=function(){return E.handleCancel(v)},v.remove=function(){return E.handleRemove(v)},v.restart=function(){return E.handleRestart(v)},v.meta.status=\"preparing\",E.files.push(v),E.handleChangeStatus(v),E.forceUpdate(),a<s||c<a)return v.meta.status=\"error_file_size\",E.handleChangeStatus(v),E.forceUpdate(),e.abrupt(\"return\");e.next=25;break;case 25:return e.next=27,E.generatePreview(v);case 27:if(!m){e.next=35;break}if(g=m(v))return v.meta.status=\"error_validation\",v.meta.validationError=g,E.handleChangeStatus(v),E.forceUpdate(),e.abrupt(\"return\");e.next=35;break;case 35:p?d?(E.uploadFile(v),v.meta.status=\"getting_upload_params\"):v.meta.status=\"ready\":v.meta.status=\"done\",E.handleChangeStatus(v),E.forceUpdate();case 38:case\"end\":return e.stop()}},e)}));return function(e,t){return r.apply(this,arguments)}}(),E.generatePreview=function(){var t=h()(C.a.mark(function e(t){var r,n,a,o,i,u,s,c,l,f;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.meta.type,n=t.file,a=r.startsWith(\"image/\"),o=r.startsWith(\"audio/\"),i=r.startsWith(\"video/\"),a||o||i){e.next=6;break}return e.abrupt(\"return\");case 6:if(u=URL.createObjectURL(n),s=function(t){return Promise.race([new Promise(function(e){t instanceof HTMLImageElement?t.onload=e:t.onloadedmetadata=e}),new Promise(function(e,t){setTimeout(t,1e3)})])},e.prev=8,a)return(c=new Image).src=u,t.meta.previewUrl=u,e.next=15,s(c);e.next=17;break;case 15:t.meta.width=c.width,t.meta.height=c.height;case 17:if(o)return(l=new Audio).src=u,e.next=22,s(l);e.next=23;break;case 22:t.meta.duration=l.duration;case 23:if(i)return(f=document.createElement(\"video\")).src=u,e.next=28,s(f);e.next=31;break;case 28:t.meta.duration=f.duration,t.meta.videoWidth=f.videoWidth,t.meta.videoHeight=f.videoHeight;case 31:a||URL.revokeObjectURL(u),e.next=37;break;case 34:e.prev=34,e.t0=e.catch(8),URL.revokeObjectURL(u);case 37:E.forceUpdate();case 38:case\"end\":return e.stop()}},e,null,[[8,34]])}));return function(e){return t.apply(this,arguments)}}(),E.uploadFile=function(){var t=h()(C.a.mark(function e(t){var r,n,a,o,i,u,s,c,l,f,p,d,m,y,h,v,g,b,w,x,S;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=E.props.getUploadParams){e.next=3;break}return e.abrupt(\"return\");case 3:return n=null,e.prev=4,e.next=7,r(t);case 7:n=e.sent,e.next=13;break;case 10:e.prev=10,e.t0=e.catch(4),console.error(\"Error Upload Params\",e.t0.stack);case 13:if(null===n)return e.abrupt(\"return\");e.next=15;break;case 15:if(o=(a=n).url,i=a.method,u=void 0===i?\"POST\":i,s=a.body,c=a.fields,l=void 0===c?{}:c,f=a.headers,p=void 0===f?{}:f,d=a.meta,delete(m=void 0===d?{}:d).status,o){e.next=22;break}return t.meta.status=\"error_upload_params\",E.handleChangeStatus(t),E.forceUpdate(),e.abrupt(\"return\");case 22:for(y=new XMLHttpRequest,h=new FormData,y.open(u,o,!0),v=0,g=Object.keys(l);v<g.length;v++)b=g[v],h.append(b,l[b]);for(y.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),w=0,x=Object.keys(p);w<x.length;w++)S=x[w],y.setRequestHeader(S,p[S]);t.meta=fe()({},t.meta,{},m),y.upload.addEventListener(\"progress\",function(e){t.meta.percent=100*e.loaded/e.total||100,E.forceUpdate()}),y.addEventListener(\"readystatechange\",function(){2!==y.readyState&&4!==y.readyState||(0===y.status&&\"aborted\"!==t.meta.status&&(t.meta.status=\"exception_upload\",E.handleChangeStatus(t),E.forceUpdate()),0<y.status&&y.status<400&&(t.meta.percent=100,2===y.readyState&&(t.meta.status=\"headers_received\"),4===y.readyState&&(t.meta.status=\"done\"),E.handleChangeStatus(t),E.forceUpdate()),400<=y.status&&\"error_upload\"!==t.meta.status&&(t.meta.status=\"error_upload\",E.handleChangeStatus(t),E.forceUpdate()))}),h.append(\"file\",t.file),E.props.timeout&&(y.timeout=E.props.timeout),y.send(s||h),t.xhr=y,t.meta.status=\"uploading\",E.handleChangeStatus(t),E.forceUpdate();case 38:case\"end\":return e.stop()}},e,null,[[4,10]])}));return function(e){return t.apply(this,arguments)}}(),E.state={active:!1,dragged:[]},E.files=[],E.mounted=!0,E.dropzone=pe.a.createRef(),E}return g()(t,e),f()(t,[{key:\"componentDidMount\",value:function(){this.props.initialFiles&&this.handleFiles(this.props.initialFiles)}},{key:\"componentDidUpdate\",value:function(e){var t=this.props.initialFiles;e.initialFiles!==t&&t&&this.handleFiles(t)}},{key:\"componentWillUnmount\",value:function(){var e=!(this.mounted=!1),t=!1,r=void 0;try{for(var n,a=this.files[Symbol.iterator]();!(e=(n=a.next()).done);e=!0){var o=n.value;this.handleCancel(o)}}catch(e){t=!0,r=e}finally{try{e||null==a.return||a.return()}finally{if(t)throw r}}}},{key:\"render\",value:function(){var e=this.props,t=e.accept,r=e.multiple,n=e.maxFiles,a=e.minSizeBytes,o=e.maxSizeBytes,i=e.onSubmit,u=e.getUploadParams,s=e.disabled,c=e.canCancel,l=e.canRemove,f=e.canRestart,p=e.inputContent,d=e.inputWithFilesContent,m=e.submitButtonDisabled,y=e.submitButtonContent,h=e.classNames,v=e.styles,g=e.addClassNames,b=e.InputComponent,w=e.PreviewComponent,x=e.SubmitButtonComponent,S=e.LayoutComponent,E=this.state,C=E.active,R=E.dragged,j=R.some(function(e){return\"application/x-moz-file\"!==e.type&&!me(e,t)}),O={active:C,reject:j,dragged:R,accept:t,multiple:r,minSizeBytes:a,maxSizeBytes:o,maxFiles:n},L=le()(this.files),D=ye(s,L,O),_=function(e,t,r){for(var n=fe()({},ge),a=fe()({},t),o=arguments.length,i=new Array(3<o?o-3:0),u=3;u<o;u++)i[u-3]=arguments[u];for(var s=0,c=Object.entries(e);s<c.length;s++){var l=ve()(c[s],2),f=l[0],p=l[1];n[f]=ye.apply(void 0,[p].concat(i))}for(var d=0,m=Object.entries(r);d<m.length;d++){var y=ve()(m[d],2);f=y[0],p=y[1];n[f]=\"\".concat(n[f],\" \").concat(ye.apply(void 0,[p].concat(i)))}for(var h=0,v=Object.entries(t);h<v.length;h++){var g=ve()(v[h],2);f=g[0],p=g[1];a[f]=ye.apply(void 0,[p].concat(i))}return{classNames:n,styles:a}}(h,v,g,L,O),N=_.classNames,z=N.dropzone,I=N.dropzoneActive,M=N.dropzoneReject,P=N.dropzoneDisabled,F=N.input,k=N.inputLabel,q=N.inputLabelWithFiles,T=N.preview,B=N.previewImage,A=N.submitButtonContainer,U=N.submitButton,W=_.styles,G=W.dropzone,H=W.dropzoneActive,Y=W.dropzoneReject,$=W.dropzoneDisabled,Q=W.input,Z=W.inputLabel,J=W.inputLabelWithFiles,V=W.preview,X=W.previewImage,K=W.submitButtonContainer,ee=W.submitButton,te=b||he,re=w||be,ne=x||we,ae=S||de,oe=null;null!==w&&(oe=L.map(function(e){return pe.a.createElement(re,{className:T,imageClassName:B,style:V,imageStyle:X,key:e.meta.id,fileWithMeta:e,meta:fe()({},e.meta),isUpload:Boolean(u),canCancel:ye(c,L,O),canRemove:ye(l,L,O),canRestart:ye(f,L,O),files:L,extra:O})}));var ie=null!==b?pe.a.createElement(te,{className:F,labelClassName:k,labelWithFilesClassName:q,style:Q,labelStyle:Z,labelWithFilesStyle:J,getFilesFromEvent:this.getFilesFromEvent(),accept:t,multiple:r,disabled:D,content:ye(p,L,O),withFilesContent:ye(d,L,O),onFiles:this.handleFiles,files:L,extra:O}):null,ue=i&&null!==x?pe.a.createElement(ne,{className:A,buttonClassName:U,style:K,buttonStyle:ee,disabled:ye(m,L,O),content:ye(y,L,O),onSubmit:this.handleSubmit,files:L,extra:O}):null,se=z,ce=G;return D?(se=\"\".concat(se,\" \").concat(P),ce=fe()({},ce||{},{},$||{})):j?(se=\"\".concat(se,\" \").concat(M),ce=fe()({},ce||{},{},Y||{})):C&&(se=\"\".concat(se,\" \").concat(I),ce=fe()({},ce||{},{},H||{})),pe.a.createElement(ae,{input:ie,previews:oe,submitButton:ue,dropzoneProps:{ref:this.dropzone,className:se,style:ce,onDragEnter:this.handleDragEnter,onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:D?this.handleDropDisabled:this.handleDrop},files:L,extra:fe()({},O,{onFiles:this.handleFiles,onCancelFile:this.handleCancel,onRemoveFile:this.handleRemove,onRestartFile:this.handleRestart})})}}]),t}(pe.a.Component);A.defaultProps={accept:\"*\",multiple:!0,minSizeBytes:0,maxSizeBytes:Number.MAX_SAFE_INTEGER,maxFiles:Number.MAX_SAFE_INTEGER,autoUpload:!0,disabled:!1,canCancel:!0,canRemove:!0,canRestart:!0,inputContent:\"Drag Files or Click to Browse\",inputWithFilesContent:\"Add Files\",submitButtonDisabled:!1,submitButtonContent:\"Submit\",classNames:{},styles:{},addClassNames:{}},A.propTypes={onChangeStatus:j.a.func,getUploadParams:j.a.func,onSubmit:j.a.func,getFilesFromEvent:j.a.func,getDataTransferItemsFromEvent:j.a.func,accept:j.a.string,multiple:j.a.bool,minSizeBytes:j.a.number.isRequired,maxSizeBytes:j.a.number.isRequired,maxFiles:j.a.number.isRequired,validate:j.a.func,autoUpload:j.a.bool,timeout:j.a.number,initialFiles:j.a.arrayOf(j.a.any),disabled:j.a.oneOfType([j.a.bool,j.a.func]),canCancel:j.a.oneOfType([j.a.bool,j.a.func]),canRemove:j.a.oneOfType([j.a.bool,j.a.func]),canRestart:j.a.oneOfType([j.a.bool,j.a.func]),inputContent:j.a.oneOfType([j.a.node,j.a.func]),inputWithFilesContent:j.a.oneOfType([j.a.node,j.a.func]),submitButtonDisabled:j.a.oneOfType([j.a.bool,j.a.func]),submitButtonContent:j.a.oneOfType([j.a.node,j.a.func]),classNames:j.a.object.isRequired,styles:j.a.object.isRequired,addClassNames:j.a.object.isRequired,InputComponent:j.a.func,PreviewComponent:j.a.func,SubmitButtonComponent:j.a.func,LayoutComponent:j.a.func};t.default=A}]);","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"react\",\"draft-js\",\"immutable\"],t):\"object\"==typeof exports?exports.reactDraftWysiwyg=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):e.reactDraftWysiwyg=t(e.react,e[\"draft-js\"],e.immutable)}(window,function(n,o,r){return c={},i.m=a=[function(e,t,n){e.exports=n(9)()},function(e,t){e.exports=n},function(e,t,n){var o;\n/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n!function(){\"use strict\";var a={}.hasOwnProperty;function c(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if(\"string\"==o||\"number\"==o)e.push(n);else if(Array.isArray(n)&&n.length){var r=c.apply(null,n);r&&e.push(r)}else if(\"object\"==o)for(var i in n)a.call(n,i)&&n[i]&&e.push(i)}}return e.join(\" \")}e.exports?(c.default=c,e.exports=c):void 0===(o=function(){return c}.apply(t,[]))||(e.exports=o)}()},function(e,t){e.exports=o},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(3),i=n(5),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var b=n(0),i=n(1);function j(e){var t=e.getSelection(),n=e.getCurrentContent(),o=t.getStartKey(),r=t.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(e,t){return t===o}).takeUntil(function(e,t){return t===r}).concat([[r,i.get(r)]])}function u(e){return j(e).toList()}function l(e){if(e)return u(e).get(0)}function o(e){if(e){var n=l(e),t=e.getCurrentContent().getBlockMap().toSeq().toList(),o=0;if(t.forEach(function(e,t){e.get(\"key\")===n.get(\"key\")&&(o=t-1)}),-1<o)return t.get(o)}}function r(e){return e?e.getCurrentContent().getBlockMap().toList():new i.List}function a(e){var t=u(e);if(!t.some(function(e){return e.type!==t.get(0).type}))return t.get(0).type}function c(e){var t=b.RichUtils.tryToRemoveBlockStyle(e);return t?b.EditorState.push(e,t,\"change-block-type\"):e}function s(e){var t=\"\",n=e.getSelection(),o=n.getAnchorOffset(),r=n.getFocusOffset(),i=u(e);if(0<i.size){if(n.getIsBackward()){var a=o;o=r,r=a}for(var c=0;c<i.size;c+=1){var l=0===c?o:0,s=c===i.size-1?r:i.get(c).getText().length;t+=i.get(c).getText().slice(l,s)}}return t}function p(e){var t=e.getCurrentContent(),n=e.getSelection(),o=b.Modifier.removeRange(t,n,\"forward\"),r=o.getSelectionAfter(),i=o.getBlockForKey(r.getStartKey());return o=b.Modifier.insertText(o,r,\"\\n\",i.getInlineStyleAt(r.getStartOffset()),null),b.EditorState.push(e,o,\"insert-fragment\")}function d(e){var t=b.Modifier.splitBlock(e.getCurrentContent(),e.getSelection());return c(b.EditorState.push(e,t,\"split-block\"))}function m(e){var t=e.getCurrentContent().getBlockMap().toList(),n=e.getSelection().merge({anchorKey:t.first().get(\"key\"),anchorOffset:0,focusKey:t.last().get(\"key\"),focusOffset:t.last().getLength()}),o=b.Modifier.removeRange(e.getCurrentContent(),n,\"forward\");return b.EditorState.push(e,o,\"remove-range\")}function f(e,t){var n=b.Modifier.setBlockData(e.getCurrentContent(),e.getSelection(),t);return b.EditorState.push(e,n,\"change-block-data\")}function g(e){var o=new i.Map({}),t=u(e);if(t&&0<t.size)for(var n=function(e){var n=t.get(e).getData();if(!n||0===n.size)return o=o.clear(),\"break\";if(0===e)o=n;else if(o.forEach(function(e,t){n.get(t)&&n.get(t)===e||(o=o.delete(t))}),0===o.size)return o=o.clear(),\"break\"},r=0;r<t.size&&\"break\"!==n(r);r+=1);return o}var y=Object(i.Map)({code:{element:\"pre\"}}),h=b.DefaultDraftBlockRenderMap.merge(y);function M(e){if(e){var t=e.getType();return\"unordered-list-item\"===t||\"ordered-list-item\"===t}return!1}function N(e,t,n){var o,r=e.getSelection();o=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var i=e.getCurrentContent(),a=i.getBlockForKey(o),c=a.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return e;var l=i.getBlockBefore(o);if(!l)return e;if(l.getType()!==c)return e;var s=a.getDepth();if(1===t&&s===n)return e;var u,p,d,m,f,g,y,h=Math.min(l.getDepth()+1,n),M=(p=t,d=h,m=(u=e).getSelection(),f=u.getCurrentContent(),g=f.getBlockMap(),y=j(u).map(function(e){var t=e.getDepth()+p;return t=Math.max(0,Math.min(t,d)),e.set(\"depth\",t)}),g=g.merge(y),f.merge({blockMap:g,selectionBefore:m,selectionAfter:m}));return b.EditorState.push(e,M,\"adjust-depth\")}function S(e,t){var n;return 13===(n=t).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?e.getSelection().isCollapsed()?b.RichUtils.insertSoftNewline(e):p(e):function(e){var t=e.getSelection();if(t.isCollapsed()){var n=e.getCurrentContent(),o=t.getStartKey(),r=n.getBlockForKey(o);if(!M(r)&&\"unstyled\"!==r.getType()&&r.getLength()===t.getStartOffset())return d(e);if(M(r)&&0===r.getLength()){var i=r.getDepth();if(0===i)return c(e);if(0<i)return N(e,-1,i)}}}(e)}function E(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function L(e){return(L=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function k(e){var t=e.getSelection();if(t.isCollapsed()){var n={},o=e.getCurrentInlineStyle().toList().toJS();if(o)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=0<=o.indexOf(e)}),n}var a=t.getStartOffset(),c=t.getEndOffset(),l=u(e);if(0<l.size){var r=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},o=0;o<l.size;o+=1){var e=0===o?a:0,t=o===l.size-1?c:l.get(o).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var r=function(e){var t=l.get(o).getInlineStyleAt(e);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=n[e]&&t.get(e)===e})},i=e;i<t;i+=1)r(i)}return{v:n}}();if(\"object\"===L(r))return r.v}return{}}function D(e){var t,n=e.getSelection(),o=n.getStartOffset(),r=n.getEndOffset();o===r&&0===o?r=1:o===r&&--o;for(var i=l(e),a=o;a<r;a+=1){var c=i.getEntityAt(a);if(!c){t=void 0;break}if(a===o)t=c;else if(t!==c){t=void 0;break}}return t}function v(e,t){var n,o=l(e);return o.findEntityRanges(function(e){return e.get(\"entity\")===t},function(e,t){n={start:e,end:t,text:o.get(\"text\").slice(e,t)}}),n}function w(e,t,n){I[e][\"\".concat(e.toLowerCase(),\"-\").concat(n)]=C({},\"\".concat(t),n)}function x(){return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?E(Object(n),!0).forEach(function(e){C(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},I.color,{},I.bgcolor,{},I.fontSize,{},I.fontFamily,{CODE:I.CODE,SUPERSCRIPT:I.SUPERSCRIPT,SUBSCRIPT:I.SUBSCRIPT})}var I={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}};function O(e,t,n){var o=e.getSelection(),r=Object.keys(I[t]).reduce(function(e,t){return b.Modifier.removeInlineStyle(e,o,t)},e.getCurrentContent()),i=b.EditorState.push(e,r,\"changeinline-style\"),a=e.getCurrentInlineStyle();if(o.isCollapsed()&&(i=a.reduce(function(e,t){return b.RichUtils.toggleInlineStyle(e,t)},i)),\"SUPERSCRIPT\"===t||\"SUBSCRIPT\"==t)a.has(n)||(i=b.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===t?\"backgroundColor\":t;a.has(\"\".concat(c,\"-\").concat(n))||(i=b.RichUtils.toggleInlineStyle(i,\"\".concat(t.toLowerCase(),\"-\").concat(n)),w(t,c,n))}return i}function A(e){e&&e.getCurrentContent().getBlockMap().map(function(e){return e.get(\"characterList\")}).toList().flatten().forEach(function(e){e&&0===e.indexOf(\"color-\")?w(\"color\",\"color\",e.substr(6)):e&&0===e.indexOf(\"bgcolor-\")?w(\"bgcolor\",\"backgroundColor\",e.substr(8)):e&&0===e.indexOf(\"fontsize-\")?w(\"fontSize\",\"fontSize\",+e.substr(9)):e&&0===e.indexOf(\"fontfamily-\")&&w(\"fontFamily\",\"fontFamily\",e.substr(11))})}function T(e,t,n){var o=e.getInlineStyleAt(n).toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(o&&0<o.size)return o.get(0)}function z(o,s){if(o&&s&&0<s.length){var e=function(){var e=o.getSelection(),i={};if(e.isCollapsed())return s.forEach(function(e){i[e]=function(e,t){var n=e.getCurrentInlineStyle().toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(n&&0<n.size)return n.get(0)}(o,e)}),{v:i};var a=e.getStartOffset(),c=e.getEndOffset(),l=u(o);if(0<l.size){for(var t=function(n){var e=0===n?a:0,t=n===l.size-1?c:l.get(n).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var o=function(t){t===e?s.forEach(function(e){i[e]=T(l.get(n),e,t)}):s.forEach(function(e){i[e]&&i[e]!==T(l.get(n),e,t)&&(i[e]=void 0)})},r=e;r<t;r+=1)o(r)},n=0;n<l.size;n+=1)t(n);return{v:i}}}();if(\"object\"===L(e))return e.v}return{}}function _(t){var e=t.getCurrentInlineStyle(),n=t.getCurrentContent();return e.forEach(function(e){n=b.Modifier.removeInlineStyle(n,t.getSelection(),e)}),b.EditorState.push(t,n,\"change-inline-style\")}n.d(t,\"isListBlock\",function(){return M}),n.d(t,\"changeDepth\",function(){return N}),n.d(t,\"handleNewLine\",function(){return S}),n.d(t,\"getEntityRange\",function(){return v}),n.d(t,\"getCustomStyleMap\",function(){return x}),n.d(t,\"toggleCustomInlineStyle\",function(){return O}),n.d(t,\"getSelectionEntity\",function(){return D}),n.d(t,\"extractInlineStyle\",function(){return A}),n.d(t,\"removeAllInlineStyles\",function(){return _}),n.d(t,\"getSelectionInlineStyle\",function(){return k}),n.d(t,\"getSelectionCustomInlineStyle\",function(){return z}),n.d(t,\"getSelectedBlocksMap\",function(){return j}),n.d(t,\"getSelectedBlocksList\",function(){return u}),n.d(t,\"getSelectedBlock\",function(){return l}),n.d(t,\"getBlockBeforeSelectedBlock\",function(){return o}),n.d(t,\"getAllBlocks\",function(){return r}),n.d(t,\"getSelectedBlocksType\",function(){return a}),n.d(t,\"removeSelectedBlocksStyle\",function(){return c}),n.d(t,\"getSelectionText\",function(){return s}),n.d(t,\"addLineBreakRemovingSelection\",function(){return p}),n.d(t,\"insertNewUnstyledBlock\",function(){return d}),n.d(t,\"clearEditorContent\",function(){return m}),n.d(t,\"setBlockData\",function(){return f}),n.d(t,\"getSelectedBlocksMetadata\",function(){return g}),n.d(t,\"blockRenderMap\",function(){return h})}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t){e.exports=r},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(5),i=n(3),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var j=n(1),s=n(0),N=function(e,t,n){var o,r=e.textContent;return\"\"===r.trim()?{chunk:(o=n,{text:\" \",inlines:[new s.OrderedSet],entities:[o],blocks:[]})}:{chunk:{text:r,inlines:Array(r.length).fill(t),entities:Array(r.length).fill(n),blocks:[]}}},S=function(){return{text:\"\\n\",inlines:[new s.OrderedSet],entities:new Array(1),blocks:[]}},E=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},C=function(e,t){return{text:\"\",inlines:[],entities:[],blocks:[{type:e,depth:0,data:t||new s.Map({})}]}},L=function(e,t,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:e,depth:Math.max(0,Math.min(4,t)),data:n||new s.Map({})}]}},k=function(e){return{text:\"\\r \",inlines:[new s.OrderedSet],entities:[e],blocks:[{type:\"atomic\",depth:0,data:new s.Map({})}]}},D=function(e,t){return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks)}},v=new s.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}}),w={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function x(e){return e.style.textAlign?new s.Map({\"text-align\":e.style.textAlign}):e.style.marginLeft?new s.Map({\"margin-left\":e.style.marginLeft}):void 0}var I=function(e){var t=void 0;if(e instanceof HTMLAnchorElement){var n={};t=e.dataset&&void 0!==e.dataset.mention?(n.url=e.href,n.text=e.innerHTML,n.value=e.dataset.value,j.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=e.getAttribute&&e.getAttribute(\"href\")||e.href,n.title=e.innerHTML,n.targetOption=e.target,j.Entity.__create(\"LINK\",\"MUTABLE\",n))}return t};n.d(t,\"default\",function(){return o});var u=\" \",p=new RegExp(\"&nbsp;\",\"g\"),O=!0;function o(e,t){var n,o,r,i=(n=t,o=e.trim().replace(p,u),(r=function(e){var t,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((t=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=e,n=t.getElementsByTagName(\"body\")[0]),n}(o))?(O=!0,{chunk:function e(t,n,o,r,i,a){var c=t.nodeName.toLowerCase();if(a){var l=a(c,t);if(l){var s=j.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:k(s)}}}if(\"#text\"===c&&\"\\n\"!==t.textContent)return N(t,n,i);if(\"br\"===c)return{chunk:S()};if(\"img\"===c&&t instanceof HTMLImageElement){var u={};u.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,u.alt=t.alt,u.height=t.style.height,u.width=t.style.width,t.style.float&&(u.alignment=t.style.float);var p=j.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:k(p)}}if(\"video\"===c&&t instanceof HTMLVideoElement){var d={};d.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,d.alt=t.alt,d.height=t.style.height,d.width=t.style.width,t.style.float&&(d.alignment=t.style.float);var m=j.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:k(m)}}if(\"iframe\"===c&&t instanceof HTMLIFrameElement){var f={};f.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,f.height=t.height,f.width=t.width;var g=j.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",f);return{chunk:k(g)}}var y,h=function(t,n){var e=v.filter(function(e){return e.element===t&&(!e.wrapper||e.wrapper===n)||e.wrapper===t||e.aliasedElements&&-1<e.aliasedElements.indexOf(t)}).keySeq().toSet().toArray();if(1===e.length)return e[0]}(c,r);h&&(\"ul\"===c||\"ol\"===c?(r=c,o+=1):(\"unordered-list-item\"!==h&&\"ordered-list-item\"!==h&&(r=\"\",o=-1),O?(y=C(h,x(t)),O=!1):y=L(h,o,x(t)))),y=y||E(),n=function(e,t,n){var o,r=w[e];if(r)o=n.add(r).toOrderedSet();else if(t instanceof HTMLElement){var l=t;o=(o=n).withMutations(function(e){var t=l.style.color,n=l.style.backgroundColor,o=l.style.fontSize,r=l.style.fontFamily.replace(/^\"|\"$/g,\"\"),i=l.style.fontWeight,a=l.style.textDecoration,c=l.style.fontStyle;t&&e.add(\"color-\".concat(t.replace(/ /g,\"\"))),n&&e.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),o&&e.add(\"fontsize-\".concat(o.replace(/px$/g,\"\"))),r&&e.add(\"fontfamily-\".concat(r)),\"bold\"===i&&e.add(w.strong),\"underline\"===a&&e.add(w.ins),\"italic\"===c&&e.add(w.em)}).toOrderedSet()}return o}(c,t,n);for(var M=t.firstChild;M;){var b=e(M,n,o,r,I(M)||i,a).chunk;y=D(y,b),M=M.nextSibling}return{chunk:y}}(r,new s.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(i){var a=i.chunk,c=new s.OrderedMap({});a.entities&&a.entities.forEach(function(e){e&&(c=c.set(e,j.Entity.__get(e)))});var l=0;return{contentBlocks:a.text.split(\"\\r\").map(function(e,t){var n=l+e.length,o=a&&a.inlines.slice(l,n),r=a&&a.entities.slice(l,n),i=new s.List(o.map(function(e,t){var n={style:e,entity:null};return r[t]&&(n.entity=r[t]),j.CharacterMetadata.create(n)}));return l=n,new j.ContentBlock({key:Object(j.genKey)(),type:a&&a.blocks[t]&&a.blocks[t].type||\"unstyled\",depth:a&&a.blocks[t]&&a.blocks[t].depth,data:a&&a.blocks[t]&&a.blocks[t].data||new s.Map({}),text:e,characterList:i})}),entityMap:c}}return null}}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t,l){\"use strict\";function o(n){return Array.prototype.slice.call(arguments,1).forEach(function(t){t&&Object.keys(t).forEach(function(e){n[e]=t[e]})}),n}function s(e){return Object.prototype.toString.call(e)}function u(e){return\"[object Function]\"===s(e)}function p(e){return e.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}var r={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var i={\"http:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.http||(n.re.http=new RegExp(\"^\\\\/\\\\/\"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,\"i\")),n.re.http.test(o)?o.match(n.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(e,t,n){var o=e.slice(t);return n.re.no_http||(n.re.no_http=new RegExp(\"^\"+n.re.src_auth+\"(?:localhost|(?:(?:\"+n.re.src_domain+\")\\\\.)+\"+n.re.src_domain_root+\")\"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,\"i\")),n.re.no_http.test(o)?3<=t&&\":\"===e[t-3]?0:3<=t&&\"/\"===e[t-3]?0:o.match(n.re.no_http)[0].length:0}},\"mailto:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp(\"^\"+n.re.src_email_name+\"@\"+n.re.src_host_strict,\"i\")),n.re.mailto.test(o)?o.match(n.re.mailto)[0].length:0}}},d=\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\",a=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\");function m(){return function(e,t){t.normalize(e)}}function c(r){var t=r.re=l(21)(r.__opts__),e=r.__tlds__.slice();function n(e){return e.replace(\"%TLDS%\",t.src_tlds)}r.onCompile(),r.__tlds_replaced__||e.push(d),e.push(t.src_xn),t.src_tlds=e.join(\"|\"),t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),\"i\"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),\"i\"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),\"i\"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),\"i\");var i=[];function a(e,t){throw new Error('(LinkifyIt) Invalid schema \"'+e+'\": '+t)}r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var o,n={validate:null,link:null};if(r.__compiled__[e]=n,\"[object Object]\"===s(t))return\"[object RegExp]\"===s(t.validate)?n.validate=(o=t.validate,function(e,t){var n=e.slice(t);return o.test(n)?n.match(o)[0].length:0}):u(t.validate)?n.validate=t.validate:a(e,t),void(u(t.normalize)?n.normalize=t.normalize:t.normalize?a(e,t):n.normalize=m());if(\"[object String]\"!==s(t))a(e,t);else i.push(e)}}),i.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[\"\"]={validate:null,normalize:m()};var o,c=Object.keys(r.__compiled__).filter(function(e){return 0<e.length&&r.__compiled__[e]}).map(p).join(\"|\");r.re.schema_test=RegExp(\"(^|(?!_)(?:[><｜]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"i\"),r.re.schema_search=RegExp(\"(^|(?!_)(?:[><｜]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"ig\"),r.re.pretest=RegExp(\"(\"+r.re.schema_test.source+\")|(\"+r.re.host_fuzzy_test.source+\")|@\",\"i\"),(o=r).__index__=-1,o.__text_cache__=\"\"}function f(e,t){var n=e.__index__,o=e.__last_index__,r=e.__text_cache__.slice(n,o);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=o+t,this.raw=r,this.text=r,this.url=r}function g(e,t){var n=new f(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function y(e,t){if(!(this instanceof y))return new y(e,t);var n;t||(n=e,Object.keys(n||{}).reduce(function(e,t){return e||r.hasOwnProperty(t)},!1)&&(t=e,e={})),this.__opts__=o({},r,t),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=o({},i,e),this.__compiled__={},this.__tlds__=a,this.__tlds_replaced__=!1,this.re={},c(this)}y.prototype.add=function(e,t){return this.__schemas__[e]=t,c(this),this},y.prototype.set=function(e){return this.__opts__=o(this.__opts__,e),this},y.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,n,o,r,i,a,c,l;if(this.re.schema_test.test(e))for((c=this.re.schema_search).lastIndex=0;null!==(t=c.exec(e));)if(r=this.testSchemaAt(e,t[2],c.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&0<=(l=e.search(this.re.host_fuzzy_test))&&(this.__index__<0||l<this.__index__)&&null!==(n=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=n.index+n[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__=\"\",this.__index__=i,this.__last_index__=n.index+n[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&0<=e.indexOf(\"@\")&&null!==(o=e.match(this.re.email_fuzzy))&&(i=o.index+o[1].length,a=o.index+o[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=i,this.__last_index__=a)),0<=this.__index__},y.prototype.pretest=function(e){return this.re.pretest.test(e)},y.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},y.prototype.match=function(e){var t=0,n=[];0<=this.__index__&&this.__text_cache__===e&&(n.push(g(this,t)),t=this.__last_index__);for(var o=t?e.slice(t):e;this.test(o);)n.push(g(this,t)),o=o.slice(this.__last_index__),t+=this.__last_index__;return n.length?n:null},y.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,t,n){return e!==n[t-1]}).reverse():(this.__tlds__=e.slice(),this.__tlds_replaced__=!0),c(this),this},y.prototype.normalize=function(e){e.schema||(e.url=\"http://\"+e.url),\"mailto:\"!==e.schema||/^mailto:/i.test(e.url)||(e.url=\"mailto:\"+e.url)},y.prototype.onCompile=function(){},e.exports=y},function(e,t,n){e.exports=n(40)},function(e,t,n){\"use strict\";var c=n(10);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,i){if(i!==c){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}var n={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,o){\"use strict\";e.exports=function(e){var t={};t.src_Any=o(22).source,t.src_Cc=o(23).source,t.src_Z=o(24).source,t.src_P=o(25).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join(\"|\"),t.src_ZCc=[t.src_Z,t.src_Cc].join(\"|\");var n=\"[><｜]\";return t.src_pseudo_letter=\"(?:(?![><｜]|\"+t.src_ZPCc+\")\"+t.src_Any+\")\",t.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",t.src_auth=\"(?:(?:(?!\"+t.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",t.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",t.src_host_terminator=\"(?=$|[><｜]|\"+t.src_ZPCc+\")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\"+t.src_ZPCc+\"))\",t.src_path=\"(?:[/?#](?:(?!\"+t.src_ZCc+\"|\"+n+\"|[()[\\\\]{}.,\\\"'?!\\\\-]).|\\\\[(?:(?!\"+t.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+t.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+t.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+t.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+t.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+t.src_pseudo_letter+\"|[-]).|\\\\.{2,4}[a-zA-Z0-9%/]|\\\\.(?!\"+t.src_ZCc+\"|[.]).|\"+(e&&e[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\"\\\\,(?!\"+t.src_ZCc+\").|\\\\!(?!\"+t.src_ZCc+\"|[!]).|\\\\?(?!\"+t.src_ZCc+\"|[?]).)+|\\\\/)?\",t.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',t.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",t.src_domain_root=\"(?:\"+t.src_xn+\"|\"+t.src_pseudo_letter+\"{1,63})\",t.src_domain=\"(?:\"+t.src_xn+\"|(?:\"+t.src_pseudo_letter+\")|(?:\"+t.src_pseudo_letter+\"(?:-|\"+t.src_pseudo_letter+\"){0,61}\"+t.src_pseudo_letter+\"))\",t.src_host=\"(?:(?:(?:(?:\"+t.src_domain+\")\\\\.)*\"+t.src_domain+\"))\",t.tpl_host_fuzzy=\"(?:\"+t.src_ip4+\"|(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%)))\",t.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%))\",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+t.src_ZPCc+\"|>|$))\",t.tpl_email_fuzzy='(^|[><｜]|\"|\\\\(|'+t.src_ZCc+\")(\"+t.src_email_name+\"@\"+t.tpl_host_fuzzy_strict+\")\",t.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\"+t.src_ZPCc+\"))((?![$+<=>^`|｜])\"+t.tpl_host_port_fuzzy_strict+t.src_path+\")\",t.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\"+t.src_ZPCc+\"))((?![$+<=>^`|｜])\"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+\")\",t}},function(e,t){e.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},function(e,t){e.exports=/[\\0-\\x1F\\x7F-\\x9F]/},function(e,t){e.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/},function(e,t){e.exports=/[!-#%-\\*,-/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E44\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var m=n(1),S=n.n(m),o=n(0),f=n.n(o),E=n(3),C=n(4),r=n(2),L=n.n(r);function i(){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i),this.callBacks=[],this.suggestionCallback=void 0,this.editorFlag=!1,this.suggestionFlag=!1,this.closeAllModals=function(t){n.callBacks.forEach(function(e){e(t)})},this.init=function(e){var t=document.getElementById(e);t&&t.addEventListener(\"click\",function(){n.editorFlag=!0}),document&&(document.addEventListener(\"click\",function(){n.editorFlag?n.editorFlag=!1:(n.closeAllModals(),n.suggestionCallback&&n.suggestionCallback())}),document.addEventListener(\"keydown\",function(e){\"Escape\"===e.key&&n.closeAllModals()}))},this.onEditorClick=function(){n.closeModals(),!n.suggestionFlag&&n.suggestionCallback?n.suggestionCallback():n.suggestionFlag=!1},this.closeModals=function(e){n.closeAllModals(e)},this.registerCallBack=function(e){n.callBacks.push(e)},this.deregisterCallBack=function(t){n.callBacks=n.callBacks.filter(function(e){return e!==t})},this.setSuggestionCallback=function(e){n.suggestionCallback=e},this.removeSuggestionCallback=function(){n.suggestionCallback=void 0},this.onSuggestionClick=function(){n.suggestionFlag=!0}}function c(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.inputFocused=!1,this.editorMouseDown=!1,this.onEditorMouseDown=function(){t.editorFocused=!0},this.onInputMouseDown=function(){t.inputFocused=!0},this.isEditorBlur=function(e){return\"INPUT\"!==e.target.tagName&&\"LABEL\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName||t.editorFocused?!(\"INPUT\"===e.target.tagName&&\"LABEL\"===e.target.tagName&&\"TEXTAREA\"===e.target.tagName||t.inputFocused)&&!(t.editorFocused=!1):!(t.inputFocused=!1)},this.isEditorFocused=function(){return!t.inputFocused||(t.inputFocused=!1)},this.isToolbarFocused=function(){return!t.editorFocused||(t.editorFocused=!1)},this.isInputFocused=function(){return t.inputFocused}}var a,l=[],k={onKeyDown:function(t){l.forEach(function(e){e(t)})},registerCallBack:function(e){l.push(e)},deregisterCallBack:function(t){l=l.filter(function(e){return e!==t})}},g=function(){a=!0},y=function(){a=!1},s=function(){return a};function D(e){var t=e.getData()&&e.getData().get(\"text-align\");return t?\"rdw-\".concat(t,\"-aligned-block\"):\"\"}function u(e,t){if(e)for(var n in e)!{}.hasOwnProperty.call(e,n)||t(n,e[n])}function p(e,t){var n=!1;if(e)for(var o in e)if({}.hasOwnProperty.call(e,o)&&t===o){n=!0;break}return n}function d(e){e.stopPropagation()}function h(e){return e[e.options[0]].icon}function M(e,o){if(e&&void 0===o)return e;var r={};return u(e,function(e,t){var n;n=t,\"[object Object]\"===Object.prototype.toString.call(n)?r[e]=M(t,o[e]):r[e]=void 0!==o[e]?o[e]:t}),r}var b=n(6),j=n.n(b),N=n(5);n(11);function v(e){return(v=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function I(e,t){return!t||\"object\"!==v(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e,t){return(A=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var T=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=I(this,(e=O(i)).call.apply(e,[this].concat(n)))).onClick=function(){var e=r.props,t=e.disabled,n=e.onClick,o=e.value;t||n(o)},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&A(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.className,r=t.activeClassName,i=t.active,a=t.disabled,c=t.title;return S.a.createElement(\"div\",{className:L()(\"rdw-option-wrapper\",o,(w(e={},\"rdw-option-active \".concat(r),i),w(e,\"rdw-option-disabled\",a),e)),onClick:this.onClick,\"aria-selected\":i,title:c},n)}}])&&x(e.prototype,t),n&&x(e,n),i}();T.propTypes={onClick:f.a.func.isRequired,children:f.a.any,value:f.a.string,className:f.a.string,activeClassName:f.a.string,active:f.a.bool,disabled:f.a.bool,title:f.a.string},T.defaultProps={activeClassName:\"\"};n(12);function z(e){return(z=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function P(e,t){return!t||\"object\"!==z(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function U(e){return(U=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var F=function(){function i(){var e,o;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return(o=P(this,(e=U(i)).call.apply(e,[this].concat(n)))).state={highlighted:-1},o.onChange=function(e){var t=o.props.onChange;t&&t(e),o.toggleExpansion()},o.setHighlighted=function(e){o.setState({highlighted:e})},o.toggleExpansion=function(){var e=o.props,t=e.doExpand,n=e.doCollapse;e.expanded?n():t()},o}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Y(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.expanded;e.expanded&&!t&&this.setState({highlighted:-1})}},{key:\"render\",value:function(){var n=this,e=this.props,t=e.expanded,o=e.children,r=e.className,i=e.optionWrapperClassName,a=e.ariaLabel,c=e.onExpandEvent,l=e.title,s=this.state.highlighted,u=o.slice(1,o.length);return S.a.createElement(\"div\",{className:L()(\"rdw-dropdown-wrapper\",r),\"aria-expanded\":t,\"aria-label\":a||\"rdw-dropdown\"},S.a.createElement(\"a\",{className:\"rdw-dropdown-selectedtext\",onClick:c,title:l},o[0],S.a.createElement(\"div\",{className:L()({\"rdw-dropdown-carettoclose\":t,\"rdw-dropdown-carettoopen\":!t})})),t?S.a.createElement(\"ul\",{className:L()(\"rdw-dropdown-optionwrapper\",i),onClick:d},S.a.Children.map(u,function(e,t){return e&&S.a.cloneElement(e,{onSelect:n.onChange,highlighted:s===t,setHighlighted:n.setHighlighted,index:t})})):void 0)}}])&&_(e.prototype,t),n&&_(e,n),i}();F.propTypes={children:f.a.any,onChange:f.a.func,className:f.a.string,expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,optionWrapperClassName:f.a.string,ariaLabel:f.a.string,title:f.a.string};n(13);function R(e){return(R=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function H(e,t){return!t||\"object\"!==R(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Z(e){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function W(e,t){return(W=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var G=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=H(this,(e=Z(r)).call.apply(e,[this].concat(n)))).onClick=function(e){var t=i.props,n=t.onSelect,o=t.onClick,r=t.value;t.disabled||(n&&n(r),o&&(e.stopPropagation(),o(r)))},i.setHighlighted=function(){var e=i.props;(0,e.setHighlighted)(e.index)},i.resetHighlighted=function(){(0,i.props.setHighlighted)(-1)},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&W(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.active,r=t.disabled,i=t.highlighted,a=t.className,c=t.activeClassName,l=t.disabledClassName,s=t.highlightedClassName,u=t.title;return S.a.createElement(\"li\",{className:L()(\"rdw-dropdownoption-default\",a,(B(e={},\"rdw-dropdownoption-active \".concat(c),o),B(e,\"rdw-dropdownoption-highlighted \".concat(s),i),B(e,\"rdw-dropdownoption-disabled \".concat(l),r),e)),onMouseEnter:this.setHighlighted,onMouseLeave:this.resetHighlighted,onClick:this.onClick,title:u},n)}}])&&Q(e.prototype,t),n&&Q(e,n),r}();G.propTypes={children:f.a.any,value:f.a.any,onClick:f.a.func,onSelect:f.a.func,setHighlighted:f.a.func,index:f.a.number,disabled:f.a.bool,active:f.a.bool,highlighted:f.a.bool,className:f.a.string,activeClassName:f.a.string,disabledClassName:f.a.string,highlightedClassName:f.a.string,title:f.a.string},G.defaultProps={activeClassName:\"\",disabledClassName:\"\",highlightedClassName:\"\"};n(14);function J(e){return(J=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function V(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function q(e,t){return!t||\"object\"!==J(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function K(e){return(K=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function X(e,t){return(X=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var $=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),q(this,K(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&X(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,n=e.config,o=e.currentState,r=e.onChange,i=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n.className),\"aria-label\":\"rdw-inline-control\"},n.options.map(function(e,t){return S.a.createElement(T,{key:t,value:e,onClick:r,className:L()(n[e].className),active:!0===o[e]||\"MONOSPACE\"===e&&o.CODE,title:n[e].title||i[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{alt:\"\",src:n[e].icon}))}))}},{key:\"renderInDropDown\",value:function(){var e=this.props,n=e.config,t=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=e.onChange,l=e.translations,s=n.className,u=n.dropdownClassName,p=n.title;return S.a.createElement(F,{className:L()(\"rdw-inline-dropdown\",s),optionWrapperClassName:L()(u),onChange:c,expanded:t,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-inline-control\",title:p},S.a.createElement(\"img\",{src:h(n),alt:\"\"}),n.options.map(function(e,t){return S.a.createElement(G,{key:t,value:e,className:L()(\"rdw-inline-dropdownoption\",n[e].className),active:!0===a[e]||\"MONOSPACE\"===e&&a.CODE,title:n[e].title||l[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{src:n[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&V(t.prototype,n),o&&V(t,o),e}();function ee(e){return(ee=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function te(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ne(e,t){return!t||\"object\"!==ee(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function oe(e){return(oe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function re(e,t){return(re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}$.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ie=function(){function r(e){var l;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(l=ne(this,oe(r).call(this,e))).onExpandEvent=function(){l.signalExpanded=!l.state.expanded},l.expandCollapse=function(){l.setState({expanded:l.signalExpanded}),l.signalExpanded=!1},l.toggleInlineStyle=function(e){var t=\"monospace\"===e?\"CODE\":e.toUpperCase(),n=l.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleInlineStyle(o,t);if(\"subscript\"===e||\"superscript\"===e){var a=\"subscript\"===e?\"SUPERSCRIPT\":\"SUBSCRIPT\",c=E.Modifier.removeInlineStyle(i.getCurrentContent(),i.getSelection(),a);i=E.EditorState.push(i,c,\"change-inline-style\")}i&&r(i)},l.changeKeys=function(e){if(e){var n={};return u(e,function(e,t){n[\"CODE\"===e?\"monospace\":e.toLowerCase()]=t}),n}},l.doExpand=function(){l.setState({expanded:!0})},l.doCollapse=function(){l.setState({expanded:!1})};var t=l.props,n=t.editorState,o=t.modalHandler;return l.state={currentStyles:n?l.changeKeys(Object(C.getSelectionInlineStyle)(n)):{}},o.registerCallBack(l.expandCollapse),l}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&re(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentStyles:this.changeKeys(Object(C.getSelectionInlineStyle)(t))})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentStyles,a=t.component||$;return S.a.createElement(a,{config:t,translations:n,currentState:i,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.toggleInlineStyle})}}])&&te(e.prototype,t),n&&te(e,n),r}();ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(15);function ae(e){return(ae=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ce(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function le(e,t){return!t||\"object\"!==ae(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function se(e){return(se=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ue(e,t){return(ue=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var pe=function(){function n(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(t=le(this,se(n).call(this,e))).getBlockTypes=function(e){return[{label:\"Normal\",displayName:e[\"components.controls.blocktype.normal\"]},{label:\"H1\",displayName:e[\"components.controls.blocktype.h1\"]},{label:\"H2\",displayName:e[\"components.controls.blocktype.h2\"]},{label:\"H3\",displayName:e[\"components.controls.blocktype.h3\"]},{label:\"H4\",displayName:e[\"components.controls.blocktype.h4\"]},{label:\"H5\",displayName:e[\"components.controls.blocktype.h5\"]},{label:\"H6\",displayName:e[\"components.controls.blocktype.h6\"]},{label:\"Blockquote\",displayName:e[\"components.controls.blocktype.blockquote\"]},{label:\"Code\",displayName:e[\"components.controls.blocktype.code\"]}]},t.state={blockTypes:t.getBlockTypes(e.translations)},t}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ue(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.translations;t!==e.translations&&this.setState({blockTypes:this.getBlockTypes(t)})}},{key:\"renderFlat\",value:function(e){var t=this.props,n=t.config.className,o=t.onChange,r=t.currentState.blockType;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n)},e.map(function(e,t){return S.a.createElement(T,{key:t,value:e.label,active:r===e.label,onClick:o},e.displayName)}))}},{key:\"renderInDropdown\",value:function(e){var t=this.props,n=t.config,o=n.className,r=n.dropdownClassName,i=n.title,a=t.currentState.blockType,c=t.expanded,l=t.doExpand,s=t.onExpandEvent,u=t.doCollapse,p=t.onChange,d=t.translations,m=this.state.blockTypes.filter(function(e){return e.label===a}),f=m&&m[0]&&m[0].displayName;return S.a.createElement(\"div\",{className:\"rdw-block-wrapper\",\"aria-label\":\"rdw-block-control\"},S.a.createElement(F,{className:L()(\"rdw-block-dropdown\",o),optionWrapperClassName:L()(r),onChange:p,expanded:c,doExpand:l,doCollapse:u,onExpandEvent:s,title:i||d[\"components.controls.blocktype.blocktype\"]},S.a.createElement(\"span\",null,f||d[\"components.controls.blocktype.blocktype\"]),e.map(function(e,t){return S.a.createElement(G,{active:a===e.label,value:e.label,key:t},e.displayName)})))}},{key:\"render\",value:function(){var n=this.props.config,e=n.inDropdown,t=this.state.blockTypes.filter(function(e){var t=e.label;return-1<n.options.indexOf(t)});return e?this.renderInDropdown(t):this.renderFlat(t)}}])&&ce(e.prototype,t),o&&ce(e,o),n}();pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var de=pe;function me(e){return(me=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ge(e,t){return!t||\"object\"!==me(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ye(e){return(ye=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function he(e,t){return(he=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Me=function(){function o(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(a=ge(this,ye(o).call(this,e))).onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.blocksTypes=[{label:\"Normal\",style:\"unstyled\"},{label:\"H1\",style:\"header-one\"},{label:\"H2\",style:\"header-two\"},{label:\"H3\",style:\"header-three\"},{label:\"H4\",style:\"header-four\"},{label:\"H5\",style:\"header-five\"},{label:\"H6\",style:\"header-six\"},{label:\"Blockquote\",style:\"blockquote\"},{label:\"Code\",style:\"code\"}],a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleBlockType=function(t){var e=a.blocksTypes.find(function(e){return e.label===t}).style,n=a.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleBlockType(o,e);i&&r(i)};var t=e.editorState,n=e.modalHandler;return a.state={expanded:!1,currentBlockType:t?Object(C.getSelectedBlocksType)(t):\"unstyled\"},n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&he(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlockType:Object(C.getSelectedBlocksType)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentBlockType,a=t.component||de,c=this.blocksTypes.find(function(e){return e.style===i});return S.a.createElement(a,{config:t,translations:n,currentState:{blockType:c&&c.label},onChange:this.toggleBlockType,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&fe(e.prototype,t),n&&fe(e,n),o}();Me.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var be=Me;n(16);function je(e){return(je=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ne(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Se(e,t){return!t||\"object\"!==je(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ee(e){return(Ee=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ce(e,t){return(Ce=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Le=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Se(this,(e=Ee(i)).call.apply(e,[this].concat(o)))).state={defaultFontSize:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ce(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-size\");t=t.substring(0,t.length-2),this.setState({defaultFontSize:t})}}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.dropdownClassName,i=t.options,a=t.title,c=e.onChange,l=e.expanded,s=e.doCollapse,u=e.onExpandEvent,p=e.doExpand,d=e.translations,m=this.props.currentState.fontSize,f=this.state.defaultFontSize;return f=Number(f),m=m||i&&0<=i.indexOf(f)&&f,S.a.createElement(\"div\",{className:\"rdw-fontsize-wrapper\",\"aria-label\":\"rdw-font-size-control\"},S.a.createElement(F,{className:L()(\"rdw-fontsize-dropdown\",o),optionWrapperClassName:L()(r),onChange:c,expanded:l,doExpand:p,doCollapse:s,onExpandEvent:u,title:a||d[\"components.controls.fontsize.fontsize\"]},m?S.a.createElement(\"span\",null,m):S.a.createElement(\"img\",{src:n,alt:\"\"}),i.map(function(e,t){return S.a.createElement(G,{className:\"rdw-fontsize-option\",active:m===e,value:e,key:t},e)})))}}])&&Ne(e.prototype,t),n&&Ne(e,n),i}();function ke(e){return(ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function De(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ve(e,t){return!t||\"object\"!==ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function we(e){return(we=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function xe(e,t){return(xe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Le.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ie=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=ve(this,we(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontSize=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontSize\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontSize:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&xe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontSize:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontSize,a=t.component||Le,c=i&&Number(i.substring(9));return S.a.createElement(a,{config:t,translations:n,currentState:{fontSize:c},onChange:this.toggleFontSize,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&De(e.prototype,t),n&&De(e,n),o}();Ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(17);function Oe(e){return(Oe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ae(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Te(e,t){return!t||\"object\"!==Oe(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ze(e){return(ze=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _e(e,t){return(_e=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Pe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Te(this,(e=ze(i)).call.apply(e,[this].concat(o)))).state={defaultFontFamily:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_e(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-family\");this.setState({defaultFontFamily:t})}}},{key:\"render\",value:function(){var t=this.state.defaultFontFamily,e=this.props,n=e.config,o=n.className,r=n.dropdownClassName,i=n.options,a=n.title,c=e.translations,l=e.onChange,s=e.expanded,u=e.doCollapse,p=e.onExpandEvent,d=e.doExpand,m=this.props.currentState.fontFamily;return m=m||i&&t&&i.some(function(e){return e.toLowerCase()===t.toLowerCase()})&&t,S.a.createElement(\"div\",{className:\"rdw-fontfamily-wrapper\",\"aria-label\":\"rdw-font-family-control\"},S.a.createElement(F,{className:L()(\"rdw-fontfamily-dropdown\",o),optionWrapperClassName:L()(\"rdw-fontfamily-optionwrapper\",r),onChange:l,expanded:s,doExpand:d,doCollapse:u,onExpandEvent:p,title:a||c[\"components.controls.fontfamily.fontfamily\"]},S.a.createElement(\"span\",{className:\"rdw-fontfamily-placeholder\"},m||c[\"components.controls.fontfamily.fontfamily\"]),i.map(function(e,t){return S.a.createElement(G,{active:m===e,value:e,key:t},e)})))}}])&&Ae(e.prototype,t),n&&Ae(e,n),i}();Pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ue=Pe;function Ye(e){return(Ye=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Re(e,t){return!t||\"object\"!==Ye(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Be(e){return(Be=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Qe(e,t){return(Qe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var He=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=Re(this,Be(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontFamily=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontFamily\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontFamily:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Qe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontFamily:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontFamily,a=t.component||Ue,c=i&&i.substring(11);return S.a.createElement(a,{translations:n,config:t,currentState:{fontFamily:c},onChange:this.toggleFontFamily,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&Fe(e.prototype,t),n&&Fe(e,n),o}();He.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(18);function Ze(e){return(Ze=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function We(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ge(e,t){return!t||\"object\"!==Ze(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Je(e){return(Je=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ve(e,t){return(Ve=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var qe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Ge(this,(e=Je(i)).call.apply(e,[this].concat(o)))).options=[\"unordered\",\"ordered\",\"indent\",\"outdent\"],t.toggleBlockType=function(e){(0,t.props.onChange)(e)},t.indent=function(){(0,t.props.onChange)(\"indent\")},t.outdent=function(){(0,t.props.onChange)(\"outdent\")},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ve(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=e.currentState.listType,o=e.translations,r=e.indentDisabled,i=e.outdentDisabled,a=t.options,c=t.unordered,l=t.ordered,s=t.indent,u=t.outdent,p=t.className;return S.a.createElement(\"div\",{className:L()(\"rdw-list-wrapper\",p),\"aria-label\":\"rdw-list-control\"},0<=a.indexOf(\"unordered\")&&S.a.createElement(T,{value:\"unordered\",onClick:this.toggleBlockType,className:L()(c.className),active:\"unordered\"===n,title:c.title||o[\"components.controls.list.unordered\"]},S.a.createElement(\"img\",{src:c.icon,alt:\"\"})),0<=a.indexOf(\"ordered\")&&S.a.createElement(T,{value:\"ordered\",onClick:this.toggleBlockType,className:L()(l.className),active:\"ordered\"===n,title:l.title||o[\"components.controls.list.ordered\"]},S.a.createElement(\"img\",{src:l.icon,alt:\"\"})),0<=a.indexOf(\"indent\")&&S.a.createElement(T,{onClick:this.indent,disabled:r,className:L()(s.className),title:s.title||o[\"components.controls.list.indent\"]},S.a.createElement(\"img\",{src:s.icon,alt:\"\"})),0<=a.indexOf(\"outdent\")&&S.a.createElement(T,{onClick:this.outdent,disabled:i,className:L()(u.className),title:u.title||o[\"components.controls.list.outdent\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var n=this,e=this.props,o=e.config,t=e.expanded,r=e.doCollapse,i=e.doExpand,a=e.onExpandEvent,c=e.onChange,l=e.currentState.listType,s=e.translations,u=o.options,p=o.className,d=o.dropdownClassName,m=o.title;return S.a.createElement(F,{className:L()(\"rdw-list-dropdown\",p),optionWrapperClassName:L()(d),onChange:c,expanded:t,doExpand:i,doCollapse:r,onExpandEvent:a,\"aria-label\":\"rdw-list-control\",title:m||s[\"components.controls.list.list\"]},S.a.createElement(\"img\",{src:h(o),alt:\"\"}),this.options.filter(function(e){return 0<=u.indexOf(e)}).map(function(e,t){return S.a.createElement(G,{key:t,value:e,disabled:n.props[\"\".concat(e,\"Disabled\")],className:L()(\"rdw-list-dropdownOption\",o[e].className),active:l===e,title:o[e].title||s[\"components.controls.list.\".concat(e)]},S.a.createElement(\"img\",{src:o[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&We(e.prototype,t),n&&We(e,n),i}();function Ke(e){return(Ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Xe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function $e(e,t){return!t||\"object\"!==Ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function et(e){return(et=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function tt(e,t){return(tt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}qe.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object,indentDisabled:f.a.bool,outdentDisabled:f.a.bool};var nt=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=$e(this,et(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){\"unordered\"===e?i.toggleBlockType(\"unordered-list-item\"):\"ordered\"===e?i.toggleBlockType(\"ordered-list-item\"):\"indent\"===e?i.adjustDepth(1):i.adjustDepth(-1)},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleBlockType=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=E.RichUtils.toggleBlockType(o,e);r&&n(r)},i.adjustDepth=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=Object(C.changeDepth)(o,e,4);r&&n(r)},i.isIndentDisabled=function(){var e=i.props.editorState,t=i.state.currentBlock,n=Object(C.getBlockBeforeSelectedBlock)(e);return!n||!Object(C.isListBlock)(t)||n.get(\"type\")!==t.get(\"type\")||n.get(\"depth\")<t.get(\"depth\")},i.isOutdentDisabled=function(){var e=i.state.currentBlock;return!e||!Object(C.isListBlock)(e)||e.get(\"depth\")<=0};var t=i.props,n=t.editorState,o=t.modalHandler;return i.state={expanded:!1,currentBlock:n?Object(C.getSelectedBlock)(n):void 0},o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&tt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlock:Object(C.getSelectedBlock)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e,t=this.props,n=t.config,o=t.translations,r=this.state,i=r.expanded,a=r.currentBlock,c=n.component||qe;\"unordered-list-item\"===a.get(\"type\")?e=\"unordered\":\"ordered-list-item\"===a.get(\"type\")&&(e=\"ordered\");var l=this.isIndentDisabled(),s=this.isOutdentDisabled();return S.a.createElement(c,{config:n,translations:o,currentState:{listType:e},expanded:i,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange,indentDisabled:l,outdentDisabled:s})}}])&&Xe(e.prototype,t),n&&Xe(e,n),r}();nt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(19);function ot(e){return(ot=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function rt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function it(e,t){return!t||\"object\"!==ot(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function at(e){return(at=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ct(e,t){return(ct=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var lt=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),it(this,at(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ct(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.left,r=t.center,i=t.right,a=t.justify,c=t.className,l=e.onChange,s=e.currentState.textAlignment,u=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-text-align-wrapper\",c),\"aria-label\":\"rdw-textalign-control\"},0<=n.indexOf(\"left\")&&S.a.createElement(T,{value:\"left\",className:L()(o.className),active:\"left\"===s,onClick:l,title:o.title||u[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"center\")&&S.a.createElement(T,{value:\"center\",className:L()(r.className),active:\"center\"===s,onClick:l,title:r.title||u[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),0<=n.indexOf(\"right\")&&S.a.createElement(T,{value:\"right\",className:L()(i.className),active:\"right\"===s,onClick:l,title:i.title||u[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:i.icon,alt:\"\"})),0<=n.indexOf(\"justify\")&&S.a.createElement(T,{value:\"justify\",className:L()(a.className),active:\"justify\"===s,onClick:l,title:a.title||u[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:a.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState.textAlignment,c=e.onChange,l=e.translations,s=t.options,u=t.left,p=t.center,d=t.right,m=t.justify,f=t.className,g=t.dropdownClassName,y=t.title;return S.a.createElement(F,{className:L()(\"rdw-text-align-dropdown\",f),optionWrapperClassName:L()(g),onChange:c,expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-textalign-control\",title:y||l[\"components.controls.textalign.textalign\"]},S.a.createElement(\"img\",{src:a&&t[a]&&t[a].icon||h(t),alt:\"\"}),0<=s.indexOf(\"left\")&&S.a.createElement(G,{value:\"left\",active:\"left\"===a,className:L()(\"rdw-text-align-dropdownOption\",u.className),title:u.title||l[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"center\")&&S.a.createElement(G,{value:\"center\",active:\"center\"===a,className:L()(\"rdw-text-align-dropdownOption\",p.className),title:p.title||l[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=s.indexOf(\"right\")&&S.a.createElement(G,{value:\"right\",active:\"right\"===a,className:L()(\"rdw-text-align-dropdownOption\",d.className),title:d.title||l[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})),0<=s.indexOf(\"justify\")&&S.a.createElement(G,{value:\"justify\",active:\"justify\"===a,className:L()(\"rdw-text-align-dropdownOption\",m.className),title:m.title||l[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:m.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&rt(t.prototype,n),o&&rt(t,o),e}();function st(e){return(st=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ut(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function pt(e,t){return!t||\"object\"!==st(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function dt(e){return(dt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function mt(e,t){return(mt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}lt.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ft=function(){function n(e){var r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(r=pt(this,dt(n).call(this,e))).onExpandEvent=function(){r.signalExpanded=!r.state.expanded},r.expandCollapse=function(){r.setState({expanded:r.signalExpanded}),r.signalExpanded=!1},r.doExpand=function(){r.setState({expanded:!0})},r.doCollapse=function(){r.setState({expanded:!1})},r.addBlockAlignmentData=function(e){var t=r.props,n=t.editorState,o=t.onChange;o(r.state.currentTextAlignment!==e?Object(C.setBlockData)(n,{\"text-align\":e}):Object(C.setBlockData)(n,{\"text-align\":void 0}))};var t=r.props.modalHandler;return r.state={currentTextAlignment:void 0},t.registerCallBack(r.expandCollapse),r}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&mt(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t!==e.editorState&&this.setState({currentTextAlignment:Object(C.getSelectedBlocksMetadata)(t).get(\"text-align\")})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentTextAlignment,a=t.component||lt;return S.a.createElement(a,{config:t,translations:n,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{textAlignment:i},onChange:this.addBlockAlignmentData})}}])&&ut(e.prototype,t),o&&ut(e,o),n}();ft.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(20);function gt(e){return(gt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ht(e,t){return!t||\"object\"!==gt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Mt(e){return(Mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bt(e,t){return(bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var jt=function(){function r(){var e,u;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(u=ht(this,(e=Mt(r)).call.apply(e,[this].concat(n)))).state={currentStyle:\"color\"},u.onChange=function(e){(0,u.props.onChange)(u.state.currentStyle,e)},u.setCurrentStyleColor=function(){u.setState({currentStyle:\"color\"})},u.setCurrentStyleBgcolor=function(){u.setState({currentStyle:\"bgcolor\"})},u.renderModal=function(){var e=u.props,t=e.config,n=t.popupClassName,o=t.colors,r=e.currentState,i=r.color,a=r.bgColor,c=e.translations,l=u.state.currentStyle,s=\"color\"===l?i:a;return S.a.createElement(\"div\",{className:L()(\"rdw-colorpicker-modal\",n),onClick:d},S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-header\"},S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"color\"===l}),onClick:u.setCurrentStyleColor},c[\"components.controls.colorpicker.text\"]),S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"bgcolor\"===l}),onClick:u.setCurrentStyleBgcolor},c[\"components.controls.colorpicker.background\"])),S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-options\"},o.map(function(e,t){return S.a.createElement(T,{value:e,key:t,className:\"rdw-colorpicker-option\",activeClassName:\"rdw-colorpicker-option-active\",active:s===e,onClick:u.onChange},S.a.createElement(\"span\",{style:{backgroundColor:e},className:\"rdw-colorpicker-cube\"}))})))},u}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){this.props.expanded&&!e.expanded&&this.setState({currentStyle:\"color\"})}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-colorpicker-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-color-picker\",title:r||c[\"components.controls.colorpicker.colorpicker\"]},S.a.createElement(T,{onClick:a,className:L()(o)},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderModal():void 0)}}])&&yt(e.prototype,t),n&&yt(e,n),r}();jt.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Nt=jt;function St(e){return(St=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Et(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ct(e,t){return!t||\"object\"!==St(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Lt(e){return(Lt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kt(e,t){return(kt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Dt=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Ct(this,Lt(r).call(this,e))).state={expanded:!1,currentColor:void 0,currentBgColor:void 0},a.onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleColor=function(e,t){var n=a.props,o=n.editorState,r=n.onChange,i=Object(C.toggleCustomInlineStyle)(o,e,t);i&&r(i),a.doCollapse()};var t=e.editorState,n=e.modalHandler,o={expanded:!1,currentColor:void 0,currentBgColor:void 0};return t&&(o.currentColor=Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,o.currentBgColor=Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR),a.state=o,n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&kt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentColor:Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,currentBgColor:Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.currentColor,i=o.currentBgColor,a=o.expanded,c=t.component||Nt,l=r&&r.substring(6),s=i&&i.substring(8);return S.a.createElement(c,{config:t,translations:n,onChange:this.toggleColor,expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{color:l,bgColor:s}})}}])&&Et(e.prototype,t),n&&Et(e,n),r}();Dt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var vt=Dt,wt=n(7),xt=n.n(wt);n(26);function It(e){return(It=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ot(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function At(e,t){return!t||\"object\"!==It(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tt(e){return(Tt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zt(e,t){return(zt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _t=function(){function r(){var e,a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=At(this,(e=Tt(r)).call.apply(e,[this].concat(n)))).state={showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:a.props.config.defaultTargetOption},a.removeLink=function(){(0,a.props.onChange)(\"unlink\")},a.addLink=function(){var e=a.props.onChange,t=a.state;e(\"link\",t.linkTitle,t.linkTarget,t.linkTargetOption)},a.updateValue=function(e){var t,n,o;a.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},a.updateTargetOption=function(e){a.setState({linkTargetOption:e.target.checked?\"_blank\":\"_self\"})},a.hideModal=function(){a.setState({showModal:!1})},a.signalExpandShowModal=function(){var e=a.props,t=e.onExpandEvent,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target||\"\",linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a.forceExpandAndShowModal=function(){var e=a.props,t=e.doExpand,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target,linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){e.expanded&&!this.props.expanded&&this.setState({showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:this.props.config.defaultTargetOption})}},{key:\"renderAddLinkModal\",value:function(){var e=this.props,t=e.config.popupClassName,n=e.doCollapse,o=e.translations,r=this.state,i=r.linkTitle,a=r.linkTarget,c=r.linkTargetOption;return S.a.createElement(\"div\",{className:L()(\"rdw-link-modal\",t),onClick:d},S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTitle\"},o[\"components.controls.link.linkTitle\"]),S.a.createElement(\"input\",{id:\"linkTitle\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTitle\",value:i}),S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTarget\"},o[\"components.controls.link.linkTarget\"]),S.a.createElement(\"input\",{id:\"linkTarget\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTarget\",value:a}),S.a.createElement(\"label\",{className:\"rdw-link-modal-target-option\",htmlFor:\"openLinkInNewWindow\"},S.a.createElement(\"input\",{id:\"openLinkInNewWindow\",type:\"checkbox\",defaultChecked:\"_blank\"===c,value:\"_blank\",onChange:this.updateTargetOption}),S.a.createElement(\"span\",null,o[\"components.controls.link.linkTargetOption\"])),S.a.createElement(\"span\",{className:\"rdw-link-modal-buttonsection\"},S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:this.addLink,disabled:!a||!i},o[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:n},o[\"generic.cancel\"])))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.link,r=t.unlink,i=t.className,a=e.currentState,c=e.expanded,l=e.translations,s=this.state.showModal;return S.a.createElement(\"div\",{className:L()(\"rdw-link-wrapper\",i),\"aria-label\":\"rdw-link-control\"},0<=n.indexOf(\"link\")&&S.a.createElement(T,{value:\"unordered-list-item\",className:L()(o.className),onClick:this.signalExpandShowModal,\"aria-haspopup\":\"true\",\"aria-expanded\":s,title:o.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"unlink\")&&S.a.createElement(T,{disabled:!a.link,value:\"ordered-list-item\",className:L()(r.className),onClick:this.removeLink,title:r.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),c&&s?this.renderAddLinkModal():void 0)}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.expanded,n=e.onExpandEvent,o=e.doCollapse,r=e.doExpand,i=e.onChange,a=e.config,c=e.currentState,l=e.translations,s=a.options,u=a.link,p=a.unlink,d=a.className,m=a.dropdownClassName,f=a.title,g=this.state.showModal;return S.a.createElement(\"div\",{className:\"rdw-link-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-link-control\",\"aria-expanded\":t,title:f},S.a.createElement(F,{className:L()(\"rdw-link-dropdown\",d),optionWrapperClassName:L()(m),onChange:i,expanded:t&&!g,doExpand:r,doCollapse:o,onExpandEvent:n},S.a.createElement(\"img\",{src:h(a),alt:\"\"}),0<=s.indexOf(\"link\")&&S.a.createElement(G,{onClick:this.forceExpandAndShowModal,className:L()(\"rdw-link-dropdownoption\",u.className),title:u.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"unlink\")&&S.a.createElement(G,{onClick:this.removeLink,disabled:!c.link,className:L()(\"rdw-link-dropdownoption\",p.className),title:p.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"}))),t&&g?this.renderAddLinkModal():void 0)}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Ot(e.prototype,t),n&&Ot(e,n),r}();_t.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var Pt=_t;function Ut(e){return(Ut=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ft(e,t){return!t||\"object\"!==Ut(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Rt(e){return(Rt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Bt(e,t){return(Bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Qt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zt(e){var t=Wt.match(e.target);return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Qt(Object(n),!0).forEach(function(e){Ht(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},e,{target:t&&t[0]&&t[0].url||e.target})}var Wt=xt()(),Gt=function(){function r(e){var d;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(d=Ft(this,Rt(r).call(this,e))).onExpandEvent=function(){d.signalExpanded=!d.state.expanded},d.onChange=function(e,t,n,o){var r=d.props.config.linkCallback;if(\"link\"===e){var i=(r||Zt)({title:t,target:n,targetOption:o});d.addLink(i.title,i.target,i.targetOption)}else d.removeLink()},d.getCurrentValues=function(){var e=d.props.editorState,t=d.state.currentEntity,n=e.getCurrentContent(),o={};if(t&&\"LINK\"===n.getEntity(t).get(\"type\")){o.link={};var r=t&&Object(C.getEntityRange)(e,t);o.link.target=t&&n.getEntity(t).get(\"data\").url,o.link.targetOption=t&&n.getEntity(t).get(\"data\").targetOption,o.link.title=r&&r.text}return o.selectionText=Object(C.getSelectionText)(e),o},d.doExpand=function(){d.setState({expanded:!0})},d.expandCollapse=function(){d.setState({expanded:d.signalExpanded}),d.signalExpanded=!1},d.doCollapse=function(){d.setState({expanded:!1})},d.removeLink=function(){var e=d.props,t=e.editorState,n=e.onChange,o=d.state.currentEntity,r=t.getSelection();if(o){var i=Object(C.getEntityRange)(t,o);r=r.getIsBackward()?r.merge({anchorOffset:i.end,focusOffset:i.start}):r.merge({anchorOffset:i.start,focusOffset:i.end}),n(E.RichUtils.toggleLink(t,r,null))}},d.addLink=function(e,t,n){var o=d.props,r=o.editorState,i=o.onChange,a=d.state.currentEntity,c=r.getSelection();if(a){var l=Object(C.getEntityRange)(r,a);c=c.getIsBackward()?c.merge({anchorOffset:l.end,focusOffset:l.start}):c.merge({anchorOffset:l.start,focusOffset:l.end})}var s=r.getCurrentContent().createEntity(\"LINK\",\"MUTABLE\",{url:t,targetOption:n}).getLastCreatedEntityKey(),u=E.Modifier.replaceText(r.getCurrentContent(),c,\"\".concat(e),r.getCurrentInlineStyle(),s),p=E.EditorState.push(r,u,\"insert-characters\");c=p.getSelection().merge({anchorOffset:c.get(\"anchorOffset\")+e.length,focusOffset:c.get(\"anchorOffset\")+e.length}),p=E.EditorState.acceptSelection(p,c),u=E.Modifier.insertText(p.getCurrentContent(),c,\" \",p.getCurrentInlineStyle(),void 0),i(E.EditorState.push(p,u,\"insert-characters\")),d.doCollapse()};var t=d.props,n=t.editorState,o=t.modalHandler;return d.state={expanded:!1,link:void 0,selectionText:void 0,currentEntity:n?Object(C.getSelectionEntity)(n):void 0},o.registerCallBack(d.expandCollapse),d}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentEntity:Object(C.getSelectionEntity)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=this.getCurrentValues(),i=r.link,a=r.selectionText,c=t.component||Pt;return S.a.createElement(c,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{link:i,selectionText:a},onChange:this.onChange})}}])&&Yt(e.prototype,t),n&&Yt(e,n),r}();Gt.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var Jt=Gt;n(27);function Vt(e){return(Vt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function qt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Kt(e,t){return!t||\"object\"!==Vt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Xt(e){return(Xt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $t(e,t){return($t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var en=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=Kt(this,(e=Xt(i)).call.apply(e,[this].concat(n)))).state={embeddedLink:\"\",height:r.props.config.defaultSize.height,width:r.props.config.defaultSize.width},r.onChange=function(){var e=r.props.onChange,t=r.state;e(t.embeddedLink,t.height,t.width)},r.updateValue=function(e){var t,n,o;r.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&$t(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props,n=t.expanded,o=t.config;if(!n&&e.expanded){var r=o.defaultSize,i=r.height,a=r.width;this.setState({embeddedLink:\"\",height:i,width:a})}}},{key:\"rendeEmbeddedLinkModal\",value:function(){var e=this.state,t=e.embeddedLink,n=e.height,o=e.width,r=this.props,i=r.config.popupClassName,a=r.doCollapse,c=r.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-embedded-modal\",i),onClick:d},S.a.createElement(\"div\",{className:\"rdw-embedded-modal-header\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-option\"},c[\"components.controls.embedded.embeddedlink\"],S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-label\"}))),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-link-section\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-link-input-wrapper\"},S.a.createElement(\"input\",{className:\"rdw-embedded-modal-link-input\",placeholder:c[\"components.controls.embedded.enterlink\"],onChange:this.updateValue,onBlur:this.updateValue,value:t,name:\"embeddedLink\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-size\"},S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:n,name:\"height\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:o,name:\"width\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")))),S.a.createElement(\"span\",{className:\"rdw-embedded-modal-btn-section\"},S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:this.onChange,disabled:!t||!n||!o},c[\"generic.add\"]),S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:a},c[\"generic.cancel\"])))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-embedded-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-embedded-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.embedded.embedded\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.rendeEmbeddedLinkModal():void 0)}}])&&qt(e.prototype,t),n&&qt(e,n),i}();en.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object,doCollapse:f.a.func};var tn=en;function nn(e){return(nn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function on(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function rn(e,t){return!t||\"object\"!==nn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function an(e){return(an=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function cn(e,t){return(cn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var ln=function(){function r(){var e,s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(s=rn(this,(e=an(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},s.onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.addEmbeddedLink=function(e,t,n){var o=s.props,r=o.editorState,i=o.onChange,a=o.config.embedCallback,c=a?a(e):e,l=r.getCurrentContent().createEntity(\"EMBEDDED_LINK\",\"MUTABLE\",{src:c,height:t,width:n}).getLastCreatedEntityKey();i(E.AtomicBlockUtils.insertAtomicBlock(r,l,\" \")),s.doCollapse()},s}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&cn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||tn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmbeddedLink,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&on(e.prototype,t),n&&on(e,n),r}();ln.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var sn=ln;n(28);function un(e){return(un=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function pn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function dn(e,t){return!t||\"object\"!==un(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function mn(e){return(mn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function fn(e,t){return(fn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var gn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=dn(this,(e=mn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e.target.innerHTML)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&fn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderEmojiModal\",value:function(){var n=this,e=this.props.config,t=e.popupClassName,o=e.emojis;return S.a.createElement(\"div\",{className:L()(\"rdw-emoji-modal\",t),onClick:d},o.map(function(e,t){return S.a.createElement(\"span\",{key:t,className:\"rdw-emoji-icon\",alt:\"\",onClick:n.onChange},e)}))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-emoji-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-emoji-control\",\"aria-expanded\":i,title:r||c[\"components.controls.emoji.emoji\"]},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderEmojiModal():void 0)}}])&&pn(e.prototype,t),n&&pn(e,n),i}();gn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var yn=gn;function hn(e){return(hn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Mn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function bn(e,t){return!t||\"object\"!==hn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function jn(e){return(jn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Nn(e,t){return(Nn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Sn=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=bn(this,(e=jn(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},i.onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.addEmoji=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());o(E.EditorState.push(n,r,\"insert-characters\")),i.doCollapse()},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Nn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||yn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmoji,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onCollpase:this.closeModal})}}])&&Mn(e.prototype,t),n&&Mn(e,n),r}();Sn.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function En(){return S.a.createElement(\"div\",{className:\"rdw-spinner\"},S.a.createElement(\"div\",{className:\"rdw-bounce1\"}),S.a.createElement(\"div\",{className:\"rdw-bounce2\"}),S.a.createElement(\"div\",{className:\"rdw-bounce3\"}))}n(29),n(30);function Cn(e){return(Cn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ln(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function kn(e,t){return!t||\"object\"!==Cn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Dn(e){return(Dn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function vn(e,t){return(vn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var wn=function(){function r(){var e,c;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(c=kn(this,(e=Dn(r)).call.apply(e,[this].concat(n)))).state={imgSrc:\"\",dragEnter:!1,uploadHighlighted:c.props.config.uploadEnabled&&!!c.props.config.uploadCallback,showImageLoading:!1,height:c.props.config.defaultSize.height,width:c.props.config.defaultSize.width,alt:\"\"},c.onDragEnter=function(e){c.stopPropagation(e),c.setState({dragEnter:!0})},c.onImageDrop=function(e){var t,n;e.preventDefault(),e.stopPropagation(),c.setState({dragEnter:!1}),n=e.dataTransfer.items?(t=e.dataTransfer.items,!0):(t=e.dataTransfer.files,!1);for(var o=0;o<t.length;o+=1)if((!n||\"file\"===t[o].kind)&&t[o].type.match(\"^image/\")){var r=n?t[o].getAsFile():t[o];c.uploadImage(r)}},c.showImageUploadOption=function(){c.setState({uploadHighlighted:!0})},c.addImageFromState=function(){var e=c.state,t=e.imgSrc,n=e.alt,o=c.state,r=o.height,i=o.width,a=c.props.onChange;isNaN(r)||(r+=\"px\"),isNaN(i)||(i+=\"px\"),a(t,r,i,n)},c.showImageURLOption=function(){c.setState({uploadHighlighted:!1})},c.toggleShowImageLoading=function(){var e=!c.state.showImageLoading;c.setState({showImageLoading:e})},c.updateValue=function(e){var t,n,o;c.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},c.selectImage=function(e){e.target.files&&0<e.target.files.length&&c.uploadImage(e.target.files[0])},c.uploadImage=function(e){c.toggleShowImageLoading(),(0,c.props.config.uploadCallback)(e).then(function(e){var t=e.data;c.setState({showImageLoading:!1,dragEnter:!1,imgSrc:t.link||t.url}),c.fileUpload=!1}).catch(function(){c.setState({showImageLoading:!1,dragEnter:!1})})},c.fileUploadClick=function(e){c.fileUpload=!0,e.stopPropagation()},c.stopPropagation=function(e){c.fileUpload?c.fileUpload=!1:(e.preventDefault(),e.stopPropagation())},c}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&vn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.config;e.expanded&&!this.props.expanded?this.setState({imgSrc:\"\",dragEnter:!1,uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback,showImageLoading:!1,height:t.defaultSize.height,width:t.defaultSize.width,alt:\"\"}):t.uploadCallback===e.config.uploadCallback&&t.uploadEnabled===e.config.uploadEnabled||this.setState({uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback})}},{key:\"renderAddImageModal\",value:function(){var e=this.state,t=e.imgSrc,n=e.uploadHighlighted,o=e.showImageLoading,r=e.dragEnter,i=e.height,a=e.width,c=e.alt,l=this.props,s=l.config,u=s.popupClassName,p=s.uploadCallback,d=s.uploadEnabled,m=s.urlEnabled,f=s.previewImage,g=s.inputAccept,y=s.alt,h=l.doCollapse,M=l.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-image-modal\",u),onClick:this.stopPropagation},S.a.createElement(\"div\",{className:\"rdw-image-modal-header\"},d&&p&&S.a.createElement(\"span\",{onClick:this.showImageUploadOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.fileUpload\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":n})})),m&&S.a.createElement(\"span\",{onClick:this.showImageURLOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.byURL\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":!n})}))),n?S.a.createElement(\"div\",{onClick:this.fileUploadClick},S.a.createElement(\"div\",{onDragEnter:this.onDragEnter,onDragOver:this.stopPropagation,onDrop:this.onImageDrop,className:L()(\"rdw-image-modal-upload-option\",{\"rdw-image-modal-upload-option-highlighted\":r})},S.a.createElement(\"label\",{htmlFor:\"file\",className:\"rdw-image-modal-upload-option-label\"},f&&t?S.a.createElement(\"img\",{src:t,alt:t,className:\"rdw-image-modal-upload-option-image-preview\"}):t||M[\"components.controls.image.dropFileText\"])),S.a.createElement(\"input\",{type:\"file\",id:\"file\",accept:g,onChange:this.selectImage,className:\"rdw-image-modal-upload-option-input\"})):S.a.createElement(\"div\",{className:\"rdw-image-modal-url-section\"},S.a.createElement(\"input\",{className:\"rdw-image-modal-url-input\",placeholder:M[\"components.controls.image.enterlink\"],name:\"imgSrc\",onChange:this.updateValue,onBlur:this.updateValue,value:t}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),y.present&&S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},S.a.createElement(\"span\",{className:\"rdw-image-modal-alt-lbl\"},\"Alt Text\"),S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:c,name:\"alt\",className:\"rdw-image-modal-alt-input\",placeholder:\"alt\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},y.mandatory&&\"*\")),S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},\"↕ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:i,name:\"height\",className:\"rdw-image-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\"),\" ↔ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:a,name:\"width\",className:\"rdw-image-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",{className:\"rdw-image-modal-btn-section\"},S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:this.addImageFromState,disabled:!t||!i||!a||y.mandatory&&!c},M[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:h},M[\"generic.cancel\"])),o?S.a.createElement(\"div\",{className:\"rdw-image-modal-spinner\"},S.a.createElement(En,null)):void 0)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-image-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-image-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.image.image\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderAddImageModal():void 0)}}])&&Ln(e.prototype,t),n&&Ln(e,n),r}();wn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var xn=wn;function In(e){return(In=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function On(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function An(e,t){return!t||\"object\"!==In(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tn(e){return(Tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zn(e,t){return(zn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _n=function(){function n(e){var s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(s=An(this,Tn(n).call(this,e))).onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.addImage=function(e,t,n,o){var r=s.props,i=r.editorState,a=r.onChange,c={src:e,height:t,width:n};r.config.alt.present&&(c.alt=o);var l=i.getCurrentContent().createEntity(\"IMAGE\",\"MUTABLE\",c).getLastCreatedEntityKey();a(E.AtomicBlockUtils.insertAtomicBlock(i,l,\" \")),s.doCollapse()};var t=s.props.modalHandler;return s.state={expanded:!1},t.registerCallBack(s.expandCollapse),s}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zn(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||xn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addImage,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&On(e.prototype,t),o&&On(e,o),n}();_n.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function Pn(e){var t=e.config,n=e.onChange,o=e.translations,r=t.icon,i=t.className,a=t.title;return S.a.createElement(\"div\",{className:\"rdw-remove-wrapper\",\"aria-label\":\"rdw-remove-control\"},S.a.createElement(T,{className:L()(i),onClick:n,title:a||o[\"components.controls.remove.remove\"]},S.a.createElement(\"img\",{src:r,alt:\"\"})))}var Un=_n;n(31);Pn.propTypes={onChange:f.a.func,config:f.a.object,translations:f.a.object};var Yn=Pn;function Fn(e){return(Fn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Rn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Bn(e,t){return!t||\"object\"!==Fn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Qn(e){return(Qn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Hn(e,t){return(Hn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Zn=function(){function i(){var e,n;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return(n=Bn(this,(e=Qn(i)).call.apply(e,[this].concat(o)))).state={expanded:!1},n.onExpandEvent=function(){n.signalExpanded=!n.state.expanded},n.expandCollapse=function(){n.setState({expanded:n.signalExpanded}),n.signalExpanded=!1},n.removeInlineStyles=function(){var e=n.props,t=e.editorState;(0,e.onChange)(n.removeAllInlineStyles(t))},n.removeAllInlineStyles=function(n){var o=n.getCurrentContent();return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"MONOSPACE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){o=E.Modifier.removeInlineStyle(o,n.getSelection(),e)}),u(Object(C.getSelectionCustomInlineStyle)(n,[\"FONTSIZE\",\"FONTFAMILY\",\"COLOR\",\"BGCOLOR\"]),function(e,t){t&&(o=E.Modifier.removeInlineStyle(o,n.getSelection(),t))}),E.EditorState.push(n,o,\"change-inline-style\")},n.doExpand=function(){n.setState({expanded:!0})},n.doCollapse=function(){n.setState({expanded:!1})},n}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Hn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||Yn;return S.a.createElement(r,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.removeInlineStyles})}}])&&Rn(e.prototype,t),n&&Rn(e,n),i}();Zn.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,config:f.a.object,translations:f.a.object,modalHandler:f.a.object};n(32);function Wn(e){return(Wn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Gn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Jn(e,t){return!t||\"object\"!==Wn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Vn(e){return(Vn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function qn(e,t){return(qn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Kn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Jn(this,(e=Vn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&qn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations,u=t.options,p=t.undo,d=t.redo,m=t.className,f=t.dropdownClassName,g=t.title;return S.a.createElement(F,{className:L()(\"rdw-history-dropdown\",m),optionWrapperClassName:L()(f),expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-history-control\",title:g||s[\"components.controls.history.history\"]},S.a.createElement(\"img\",{src:h(t),alt:\"\"}),0<=u.indexOf(\"undo\")&&S.a.createElement(G,{value:\"undo\",onClick:this.onChange,disabled:c,className:L()(\"rdw-history-dropdownoption\",p.className),title:p.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=u.indexOf(\"redo\")&&S.a.createElement(G,{value:\"redo\",onClick:this.onChange,disabled:l,className:L()(\"rdw-history-dropdownoption\",d.className),title:d.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.undo,r=t.redo,i=t.className,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-history-wrapper\",i),\"aria-label\":\"rdw-history-control\"},0<=n.indexOf(\"undo\")&&S.a.createElement(T,{value:\"undo\",onClick:this.onChange,className:L()(o.className),disabled:c,title:o.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"redo\")&&S.a.createElement(T,{value:\"redo\",onClick:this.onChange,className:L()(r.className),disabled:l,title:r.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Gn(e.prototype,t),n&&Gn(e,n),i}();function Xn(e){return(Xn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function $n(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function eo(e,t){return!t||\"object\"!==Xn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function to(e){return(to=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function no(e,t){return(no=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Kn.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var oo=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=eo(this,to(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.EditorState[e](n);r&&o(r)},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})};var t={expanded:!(i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1}),undoDisabled:!1,redoDisabled:!1},n=e.editorState,o=e.modalHandler;return n&&(t.undoDisabled=0===n.getUndoStack().size,t.redoDisabled=0===n.getRedoStack().size),i.state=t,o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&no(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&e.editorState!==t&&this.setState({undoDisabled:0===t.getUndoStack().size,redoDisabled:0===t.getRedoStack().size})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.undoDisabled,i=o.redoDisabled,a=o.expanded,c=t.component||Kn;return S.a.createElement(c,{config:t,translations:n,currentState:{undoDisabled:r,redoDisabled:i},expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange})}}])&&$n(e.prototype,t),n&&$n(e,n),r}();oo.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var ro={inline:ie,blockType:be,fontSize:Ie,fontFamily:He,list:nt,textAlign:ft,colorPicker:vt,link:Jt,embedded:sn,emoji:Sn,image:Un,remove:Zn,history:oo};n(33);function io(e){return(io=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ao(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function co(e,t){return!t||\"object\"!==io(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function lo(e){return(lo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function so(e,t){return(so=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function uo(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"LINK\"===n.getEntity(t).getType()},t)}function po(e){var t,n,c=e.showOpenOptionOnHover;return n=t=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=co(this,(e=lo(i)).call.apply(e,[this].concat(n)))).state={showPopOver:!1},r.openLink=function(){var e=r.props,t=e.entityKey,n=e.contentState.getEntity(t).getData().url,o=window.open(n,\"blank\");o&&o.focus()},r.toggleShowPopOver=function(){var e=!r.state.showPopOver;r.setState({showPopOver:e})},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&so(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e=this.props,t=e.children,n=e.entityKey,o=e.contentState.getEntity(n).getData(),r=o.url,i=o.targetOption,a=this.state.showPopOver;return S.a.createElement(\"span\",{className:\"rdw-link-decorator-wrapper\",onMouseEnter:this.toggleShowPopOver,onMouseLeave:this.toggleShowPopOver},S.a.createElement(\"a\",{href:r,target:i},t),a&&c?S.a.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuMDcyIDBIOC45MTVhLjkyNS45MjUgMCAwIDAgMCAxLjg0OWgyLjkyNUw2Ljk2MSA2LjcyN2EuOTE4LjkxOCAwIDAgMC0uMjcuNjU0YzAgLjI0Ny4wOTUuNDguMjcuNjU0YS45MTguOTE4IDAgMCAwIC42NTQuMjcuOTE4LjkxOCAwIDAgMCAuNjUzLS4yN2w0Ljg4LTQuODh2Mi45MjZhLjkyNS45MjUgMCAwIDAgMS44NDggMFYuOTI0QS45MjUuOTI1IDAgMCAwIDE0LjA3MiAweiIvPjxwYXRoIGQ9Ik0xMC42MjMgMTMuNDExSDEuNTg1VjQuMzcyaDYuNzk4bDEuNTg0LTEuNTg0SC43OTJBLjc5Mi43OTIgMCAwIDAgMCAzLjU4djEwLjYyNGMwIC40MzcuMzU1Ljc5Mi43OTIuNzkyaDEwLjYyNGEuNzkyLjc5MiAwIDAgMCAuNzkyLS43OTJWNS4wMjlsLTEuNTg1IDEuNTg0djYuNzk4eiIvPjwvZz48L3N2Zz4=\",alt:\"\",onClick:this.openLink,className:\"rdw-link-decorator-icon\"}):void 0)}}])&&ao(e.prototype,t),n&&ao(e,n),i}(),t.propTypes={entityKey:f.a.string.isRequired,children:f.a.array,contentState:f.a.object},n}n(34);function mo(e){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,mo),this.getMentionComponent=function(){function e(e){var t=e.entityKey,n=e.children,o=e.contentState.getEntity(t).getData(),r=o.url,i=o.value;return S.a.createElement(\"a\",{href:r||i,className:L()(\"rdw-mention-link\",a)},n)}var a=t.className;return e.propTypes={entityKey:f.a.number,children:f.a.array,contentState:f.a.object},e},this.getMentionDecorator=function(){return{strategy:t.findMentionEntities,component:t.getMentionComponent()}},this.className=e}mo.prototype.findMentionEntities=function(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"MENTION\"===n.getEntity(t).getType()},t)};var fo=mo;n(35);function go(e){return(go=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function yo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ho(e,t){return!t||\"object\"!==go(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Mo(e){return(Mo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bo(e,t){return(bo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function jo(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var No=function e(t){var p=this;jo(this,e),this.findSuggestionEntities=function(e,t){if(p.config.getEditorState()){var n=p.config,o=n.separator,r=n.trigger,i=n.getSuggestions,a=(0,n.getEditorState)().getSelection();if(a.get(\"anchorKey\")===e.get(\"key\")&&a.get(\"anchorKey\")===a.get(\"focusKey\")){var c=e.getText(),l=(c=c.substr(0,a.get(\"focusOffset\")===c.length-1?c.length:a.get(\"focusOffset\")+1)).lastIndexOf(o+r),s=o+r;if((void 0===l||l<0)&&c[0]===r&&(l=0,s=r),0<=l){var u=c.substr(l+s.length,c.length);i().some(function(e){return!!e.value&&(p.config.caseSensitive?0<=e.value.indexOf(u):0<=e.value.toLowerCase().indexOf(u&&u.toLowerCase()))})&&t(0===l?0:l+1,c.length)}}}},this.getSuggestionComponent=function(){var e,t,c=this.config;return t=e=function(){function r(){var e,a;jo(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=ho(this,(e=Mo(r)).call.apply(e,[this].concat(n)))).state={style:{left:15},activeOption:-1,showSuggestions:!0},a.onEditorKeyDown=function(e){var t=a.state.activeOption,n={};\"ArrowDown\"===e.key?(e.preventDefault(),t===a.filteredSuggestions.length-1?n.activeOption=0:n.activeOption=t+1):\"ArrowUp\"===e.key?n.activeOption=t<=0?a.filteredSuggestions.length-1:t-1:\"Escape\"===e.key?(n.showSuggestions=!1,y()):\"Enter\"===e.key&&a.addMention(),a.setState(n)},a.onOptionMouseEnter=function(e){var t=e.target.getAttribute(\"data-index\");a.setState({activeOption:t})},a.onOptionMouseLeave=function(){a.setState({activeOption:-1})},a.setSuggestionReference=function(e){a.suggestion=e},a.setDropdownReference=function(e){a.dropdown=e},a.closeSuggestionDropdown=function(){a.setState({showSuggestions:!1})},a.filteredSuggestions=[],a.filterSuggestions=function(e){var t=e.children[0].props.text.substr(1),n=c.getSuggestions();a.filteredSuggestions=n&&n.filter(function(e){return!t||0===t.length||(c.caseSensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t&&t.toLowerCase()))})},a.addMention=function(){var e=a.state.activeOption,t=c.getEditorState(),n=c.onChange,o=c.separator,r=c.trigger,i=a.filteredSuggestions[e];i&&function(e,t,n,o,r){var i=r.value,a=r.url,c=e.getCurrentContent().createEntity(\"MENTION\",\"IMMUTABLE\",{text:\"\".concat(o).concat(i),value:i,url:a}).getLastCreatedEntityKey(),l=Object(C.getSelectedBlock)(e).getText(),s=e.getSelection().focusOffset,u=(l.lastIndexOf(n+o,s)||0)+1,p=!1;l.length===u+1&&(s=l.length),\" \"===l[s]&&(p=!0);var d=e.getSelection().merge({anchorOffset:u,focusOffset:s}),m=E.EditorState.acceptSelection(e,d),f=E.Modifier.replaceText(m.getCurrentContent(),d,\"\".concat(o).concat(i),m.getCurrentInlineStyle(),c);m=E.EditorState.push(m,f,\"insert-characters\"),p||(d=m.getSelection().merge({anchorOffset:u+i.length+o.length,focusOffset:u+i.length+o.length}),m=E.EditorState.acceptSelection(m,d),f=E.Modifier.insertText(m.getCurrentContent(),d,\" \",m.getCurrentInlineStyle(),void 0)),t(E.EditorState.push(m,f,\"insert-characters\"))}(t,n,o,r,i)},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&bo(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){var e,t,n,o=c.getWrapperRef().getBoundingClientRect(),r=this.suggestion.getBoundingClientRect(),i=this.dropdown.getBoundingClientRect();o.width<r.left-o.left+i.width?t=15:e=15,o.bottom<i.bottom&&(n=0),this.setState({style:{left:e,right:t,bottom:n}}),k.registerCallBack(this.onEditorKeyDown),g(),c.modalHandler.setSuggestionCallback(this.closeSuggestionDropdown),this.filterSuggestions(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.props.children!==e.children&&(this.filterSuggestions(e),this.setState({showSuggestions:!0}))}},{key:\"componentWillUnmount\",value:function(){k.deregisterCallBack(this.onEditorKeyDown),y(),c.modalHandler.removeSuggestionCallback()}},{key:\"render\",value:function(){var n=this,e=this.props.children,t=this.state,o=t.activeOption,r=t.showSuggestions,i=c.dropdownClassName,a=c.optionClassName;return S.a.createElement(\"span\",{className:\"rdw-suggestion-wrapper\",ref:this.setSuggestionReference,onClick:c.modalHandler.onSuggestionClick,\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-suggestion-popup\"},S.a.createElement(\"span\",null,e),r&&S.a.createElement(\"span\",{className:L()(\"rdw-suggestion-dropdown\",i),contentEditable:\"false\",suppressContentEditableWarning:!0,style:this.state.style,ref:this.setDropdownReference},this.filteredSuggestions.map(function(e,t){return S.a.createElement(\"span\",{key:t,spellCheck:!1,onClick:n.addMention,\"data-index\":t,onMouseEnter:n.onOptionMouseEnter,onMouseLeave:n.onOptionMouseLeave,className:L()(\"rdw-suggestion-option\",a,{\"rdw-suggestion-option-active\":t===o})},e.text)})))}}])&&yo(e.prototype,t),n&&yo(e,n),r}(),e.propTypes={children:f.a.array},t}.bind(this),this.getSuggestionDecorator=function(){return{strategy:p.findSuggestionEntities,component:p.getSuggestionComponent()}};var n=t.separator,o=t.trigger,r=t.getSuggestions,i=t.onChange,a=t.getEditorState,c=t.getWrapperRef,l=t.caseSensitive,s=t.dropdownClassName,u=t.optionClassName,d=t.modalHandler;this.config={separator:n,trigger:o,getSuggestions:r,onChange:i,getEditorState:a,getWrapperRef:c,caseSensitive:l,dropdownClassName:s,optionClassName:u,modalHandler:d}},So=function(e){return[new fo(e.mentionClassName).getMentionDecorator(),new No(e).getSuggestionDecorator()]};n(36);function Eo(e){var c=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,Eo),this.getHashtagComponent=function(){function e(e){var t=e.children,n=t[0].props.text;return S.a.createElement(\"a\",{href:n,className:L()(\"rdw-hashtag-link\",o)},t)}var o=c.className;return e.propTypes={children:f.a.object},e},this.findHashtagEntities=function(e,t){for(var n=e.getText(),o=0,r=0;0<n.length&&0<=o;)if(n[0]===c.hashCharacter?(r=o=0,n=n.substr(c.hashCharacter.length)):0<=(o=n.indexOf(c.separator+c.hashCharacter))&&(n=n.substr(o+(c.separator+c.hashCharacter).length),r+=o+c.separator.length),0<=o){var i=0<=n.indexOf(c.separator)?n.indexOf(c.separator):n.length,a=n.substr(0,i);a&&0<a.length&&(t(r,r+a.length+c.hashCharacter.length),r+=c.hashCharacter.length)}},this.getHashtagDecorator=function(){return{strategy:c.findHashtagEntities,component:c.getHashtagComponent()}},this.className=e.className,this.hashCharacter=e.hashCharacter||\"#\",this.separator=e.separator||\" \"}function Co(e){var t=e.block,n=e.contentState.getEntity(t.getEntityAt(0)).getData(),o=n.src,r=n.height,i=n.width;return S.a.createElement(\"iframe\",{height:r,width:i,src:o,frameBorder:\"0\",allowFullScreen:!0,title:\"Wysiwyg Embedded Content\"})}var Lo=function(e){return new Eo(e).getHashtagDecorator()};Co.propTypes={block:f.a.object,contentState:f.a.object};var ko=Co;n(37);function Do(e){return(Do=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function vo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function wo(e,t){return!t||\"object\"!==Do(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function xo(e){return(xo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Io(e,t){return(Io=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Oo=function(d){var e,t;return t=e=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=wo(this,(e=xo(r)).call.apply(e,[this].concat(n)))).state={hovered:!1},i.setEntityAlignmentLeft=function(){i.setEntityAlignment(\"left\")},i.setEntityAlignmentRight=function(){i.setEntityAlignment(\"right\")},i.setEntityAlignmentCenter=function(){i.setEntityAlignment(\"none\")},i.setEntityAlignment=function(e){var t=i.props,n=t.block,o=t.contentState,r=n.getEntityAt(0);o.mergeEntityData(r,{alignment:e}),d.onChange(E.EditorState.push(d.getEditorState(),o,\"change-block-data\")),i.setState({dummy:!0})},i.toggleHovered=function(){var e=!i.state.hovered;i.setState({hovered:e})},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Io(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"renderAlignmentOptions\",value:function(e){return S.a.createElement(\"div\",{className:L()(\"rdw-image-alignment-options-popup\",{\"rdw-image-alignment-options-popup-right\":\"right\"===e})},S.a.createElement(T,{onClick:this.setEntityAlignmentLeft,className:\"rdw-image-alignment-option\"},\"L\"),S.a.createElement(T,{onClick:this.setEntityAlignmentCenter,className:\"rdw-image-alignment-option\"},\"C\"),S.a.createElement(T,{onClick:this.setEntityAlignmentRight,className:\"rdw-image-alignment-option\"},\"R\"))}},{key:\"render\",value:function(){var e=this.props,t=e.block,n=e.contentState,o=this.state.hovered,r=d.isReadOnly,i=d.isImageAlignmentEnabled,a=n.getEntity(t.getEntityAt(0)).getData(),c=a.src,l=a.alignment,s=a.height,u=a.width,p=a.alt;return S.a.createElement(\"span\",{onMouseEnter:this.toggleHovered,onMouseLeave:this.toggleHovered,className:L()(\"rdw-image-alignment\",{\"rdw-image-left\":\"left\"===l,\"rdw-image-right\":\"right\"===l,\"rdw-image-center\":!l||\"none\"===l})},S.a.createElement(\"span\",{className:\"rdw-image-imagewrapper\"},S.a.createElement(\"img\",{src:c,alt:p,style:{height:s,width:u}}),!r()&&o&&i()?this.renderAlignmentOptions(l):void 0))}}])&&vo(e.prototype,t),n&&vo(e,n),r}(),e.propTypes={block:f.a.object,contentState:f.a.object},t},Ao=function(o,r){return function(e){if(\"function\"==typeof r){var t=r(e,o,o.getEditorState);if(t)return t}if(\"atomic\"===e.getType()){var n=o.getEditorState().getCurrentContent().getEntity(e.getEntityAt(0));if(n&&\"IMAGE\"===n.type)return{component:Oo(o),editable:!1};if(n&&\"EMBEDDED_LINK\"===n.type)return{component:ko,editable:!1}}}},To={options:[\"inline\",\"blockType\",\"fontSize\",\"fontFamily\",\"list\",\"textAlign\",\"colorPicker\",\"link\",\"embedded\",\"emoji\",\"image\",\"remove\",\"history\"],inline:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"bold\",\"italic\",\"underline\",\"strikethrough\",\"monospace\",\"superscript\",\"subscript\"],bold:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuMjM2IDBjMS42NTIgMCAyLjk0LjI5OCAzLjg2Ni44OTMuOTI1LjU5NSAxLjM4OCAxLjQ4NSAxLjM4OCAyLjY2OSAwIC42MDEtLjE3MyAxLjEzOS0uNTE2IDEuNjEtLjM0My40NzQtLjg0NC44My0xLjQ5OSAxLjA2OC44NDMuMTY3IDEuNDc0LjUyMyAxLjg5NSAxLjA3MS40MTkuNTUuNjMgMS4xODMuNjMgMS45MDMgMCAxLjI0NS0uNDQ0IDIuMTg3LTEuMzMgMi44MjUtLjg4Ni42NDEtMi4xNDQuOTYxLTMuNzY5Ljk2MUgwdi0yLjE2N2gxLjQ5NFYyLjE2N0gwVjBoNi4yMzZ6TTQuMzA4IDUuNDQ2aDIuMDI0Yy43NTIgMCAxLjMzLS4xNDMgMS43MzQtLjQzLjQwNS0uMjg1LjYwOC0uNzAxLjYwOC0xLjI1IDAtLjYtLjIwNC0xLjA0NC0uNjEyLTEuMzMtLjQwOC0uMjg2LTEuMDE2LS40MjctMS44MjYtLjQyN0g0LjMwOHYzLjQzN3ptMCAxLjgwNFYxMWgyLjU5M2MuNzQ3IDAgMS4zMTQtLjE1MiAxLjcwNy0uNDUyLjM5LS4zLjU4OC0uNzQ1LjU4OC0xLjMzNCAwLS42MzYtLjE2OC0xLjEyNC0uNS0xLjQ2LS4zMzYtLjMzNS0uODY0LS41MDQtMS41ODItLjUwNEg0LjMwOHoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},italic:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTcgM1YyaDR2MUg5Ljc1M2wtMyAxMEg4djFINHYtMWgxLjI0N2wzLTEwSDd6Ii8+PC9zdmc+\",className:void 0,title:void 0},underline:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTYuMDQ1IDJ2Ljk5Mkw0Ljc4NSAzdjUuMTcyYzAgLjg1OS4yNDMgMS41MTIuNzI3IDEuOTU3czEuMTI0LjY2OCAxLjkxOC42NjhjLjgzNiAwIDEuNTA5LS4yMjEgMi4wMTktLjY2NC41MTEtLjQ0Mi43NjYtMS4wOTYuNzY2LTEuOTYxVjNsLTEuMjYtLjAwOFYySDEzdi45OTJMMTEuNzM5IDN2NS4xNzJjMCAxLjIzNC0uMzk4IDIuMTgxLTEuMTk1IDIuODQtLjc5Ny42NTktMS44MzUuOTg4LTMuMTE0Ljk4OC0xLjI0MiAwLTIuMjQ4LS4zMjktMy4wMTctLjk4OC0uNzY5LS42NTktMS4xNTItMS42MDUtMS4xNTItMi44NFYzTDIgMi45OTJWMmg0LjA0NXpNMiAxM2gxMXYxSDJ6Ii8+PC9zdmc+\",className:void 0,title:void 0},strikethrough:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4wNCA1Ljk1NGg2LjIxNWE3LjQxMiA3LjQxMiAwIDAgMC0uNzk1LS40MzggMTEuOTA3IDExLjkwNyAwIDAgMC0xLjQ0Ny0uNTU3Yy0xLjE4OC0uMzQ4LTEuOTY2LS43MTEtMi4zMzQtMS4wODgtLjM2OC0uMzc3LS41NTItLjc3LS41NTItMS4xODEgMC0uNDk1LjE4Ny0uOTA2LjU2LTEuMjMyLjM4LS4zMzEuODg3LS40OTcgMS41MjMtLjQ5Ny42OCAwIDEuMjY2LjI1NSAxLjc1Ny43NjcuMjk1LjMxNS41ODIuODkxLjg2MSAxLjczbC4xMTcuMDE2LjcwMy4wNS4xLS4wMjRjLjAyOC0uMTUyLjA0Mi0uMjc5LjA0Mi0uMzggMC0uMzM3LS4wMzktLjg1Mi0uMTE3LTEuNTQ0YTkuMzc0IDkuMzc0IDAgMCAwLS4xNzYtLjk5NUM5Ljg4LjM3OSA5LjM4NS4yNDQgOS4wMTcuMTc2IDguMzY1LjA3IDcuODk5LjAxNiA3LjYyLjAxNmMtMS40NSAwLTIuNTQ1LjM1Ny0zLjI4NyAxLjA3MS0uNzQ3LjcyLTEuMTIgMS41ODktMS4xMiAyLjYwNyAwIC41MTEuMTMzIDEuMDQuNCAxLjU4Ni4xMjkuMjUzLjI3LjQ3OC40MjcuNjc0ek04LjI4IDguMTE0Yy41NzUuMjM2Ljk1Ny40MzYgMS4xNDcuNTk5LjQ1MS40MS42NzcuODUyLjY3NyAxLjMyNCAwIC4zODMtLjEzLjc0NS0uMzkzIDEuMDg4LS4yNS4zMzgtLjU5LjU4LTEuMDIuNzI2YTMuNDE2IDMuNDE2IDAgMCAxLTEuMTYzLjIyOGMtLjQwNyAwLS43NzUtLjA2Mi0xLjEwNC0uMTg2YTIuNjk2IDIuNjk2IDAgMCAxLS44NzgtLjQ4IDMuMTMzIDMuMTMzIDAgMCAxLS42Ny0uNzk0IDEuNTI3IDEuNTI3IDAgMCAxLS4xMDQtLjIyNyA1Ny41MjMgNTcuNTIzIDAgMCAwLS4xODgtLjQ3MyAyMS4zNzEgMjEuMzcxIDAgMCAwLS4yNTEtLjU5OWwtLjg1My4wMTd2LjM3MWwtLjAxNy4zMTNhOS45MiA5LjkyIDAgMCAwIDAgLjU3M2MuMDExLjI3LjAxNy43MDkuMDE3IDEuMzE2di4xMWMwIC4wNzkuMDIyLjE0LjA2Ny4xODUuMDgzLjA2OC4yODQuMTQ3LjYwMi4yMzdsMS4xNy4zMzdjLjQ1Mi4xMy45OTYuMTk0IDEuNjMyLjE5NC42ODYgMCAxLjI1Mi0uMDU5IDEuNjk4LS4xNzdhNC42OTQgNC42OTQgMCAwIDAgMS4yOC0uNTU3Yy40MDEtLjI1OS43MDUtLjQ4Ni45MTEtLjY4My4yNjgtLjI3Ni40NjYtLjU2OC41OTQtLjg3OGE0Ljc0IDQuNzQgMCAwIDAgLjM0My0xLjc4OGMwLS4yOTgtLjAyLS41NTctLjA1OC0uNzc2SDguMjgxek0xNC45MTQgNi41N2EuMjYuMjYgMCAwIDAtLjE5My0uMDc2SC4yNjhhLjI2LjI2IDAgMCAwLS4xOTMuMDc2LjI2NC4yNjQgMCAwIDAtLjA3NS4xOTR2LjU0YzAgLjA3OS4wMjUuMTQzLjA3NS4xOTRhLjI2LjI2IDAgMCAwIC4xOTMuMDc2SDE0LjcyYS4yNi4yNiAwIDAgMCAuMTkzLS4wNzYuMjY0LjI2NCAwIDAgMCAuMDc1LS4xOTR2LS41NGEuMjY0LjI2NCAwIDAgMC0uMDc1LS4xOTR6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},monospace:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzQ0NCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS4wMjEgMi45MDZjLjE4NiAxLjIxOS4zNzIgMS41LjM3MiAyLjcxOUMxLjM5MyA2LjM3NSAwIDcuMDMxIDAgNy4wMzF2LjkzOHMxLjM5My42NTYgMS4zOTMgMS40MDZjMCAxLjIxOS0uMTg2IDEuNS0uMzcyIDIuNzE5Qy43NDMgMTQuMDYzIDEuNzY0IDE1IDIuNjkzIDE1aDEuOTV2LTEuODc1cy0xLjY3Mi4xODgtMS42NzItLjkzOGMwLS44NDMuMTg2LS44NDMuMzcyLTIuNzE4LjA5My0uODQ0LS40NjQtMS41LTEuMDIyLTEuOTY5LjU1OC0uNDY5IDEuMTE1LTEuMDMxIDEuMDIyLTEuODc1QzMuMDY0IDMuNzUgMi45NyAzLjc1IDIuOTcgMi45MDZjMC0xLjEyNSAxLjY3Mi0xLjAzMSAxLjY3Mi0xLjAzMVYwaC0xLjk1QzEuNjcgMCAuNzQzLjkzOCAxLjAyIDIuOTA2ek0xMS45NzkgMi45MDZjLS4xODYgMS4yMTktLjM3MiAxLjUtLjM3MiAyLjcxOSAwIC43NSAxLjM5MyAxLjQwNiAxLjM5MyAxLjQwNnYuOTM4cy0xLjM5My42NTYtMS4zOTMgMS40MDZjMCAxLjIxOS4xODYgMS41LjM3MiAyLjcxOS4yNzggMS45NjktLjc0MyAyLjkwNi0xLjY3MiAyLjkwNmgtMS45NXYtMS44NzVzMS42NzIuMTg4IDEuNjcyLS45MzhjMC0uODQzLS4xODYtLjg0My0uMzcyLTIuNzE4LS4wOTMtLjg0NC40NjQtMS41IDEuMDIyLTEuOTY5LS41NTgtLjQ2OS0xLjExNS0xLjAzMS0xLjAyMi0xLjg3NS4xODYtMS44NzUuMzcyLTEuODc1LjM3Mi0yLjcxOSAwLTEuMTI1LTEuNjcyLTEuMDMxLTEuNjcyLTEuMDMxVjBoMS45NWMxLjAyMiAwIDEuOTUuOTM4IDEuNjcyIDIuOTA2eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},superscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzA1IDEwLjE2NUwxMS44NjUgMTVIOS4wNTdsLTMuMTkyLTMuNTM2TDIuNzQ2IDE1SDBsNC41MjMtNC44MzVMLjIxOCA1LjYwM2gyLjc3TDUuOTg2IDguOTEgOS4wMSA1LjYwM2gyLjY0OWwtNC4zNTQgNC41NjJ6bTYuMjM0LTMuMjY5bDEuODc5LTEuMzA2Yy42NC0uNDE2IDEuMDYyLS44MDEgMS4yNjQtMS4xNTcuMjAxLS4zNTYuMzAyLS43MzguMzAyLTEuMTQ4IDAtLjY2OS0uMjM3LTEuMjEtLjcxLTEuNjItLjQ3NC0uNDExLTEuMDk3LS42MTctMS44NjgtLjYxNy0uNzQ0IDAtMS4zNC4yMDgtMS43ODUuNjI0LS40NDcuNDE2LS42NyAxLjA0My0uNjcgMS44ODFoMS40MzZjMC0uNS4wOTQtLjg0Ni4yODEtMS4wMzguMTg4LS4xOTEuNDQ1LS4yODcuNzcyLS4yODdzLjU4NS4wOTcuNzc3LjI5MmMuMTkuMTk1LjI4Ni40MzcuMjg2LjcyNiAwIC4yOS0uMDg5LjU1LS4yNjYuNzg1cy0uNjcuNjI4LTEuNDc5IDEuMTg0Yy0uNjkxLjQ3Ny0xLjYyNy45MjctMS45MDggMS4zNWwuMDE0IDEuNTY5SDE3VjYuODk2aC0zLjQ2MXoiLz48L3N2Zz4=\",className:void 0,title:void 0},subscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLjg2NiAxMS42NDZIOS4wNkw1Ljg2NyA3Ljk0MmwtMy4xMjEgMy43MDRIMGw0LjUyNC01LjA2NEwuMjE4IDEuODA0aDIuNzdsMyAzLjQ2NCAzLjAyMy0zLjQ2NGgyLjY1TDcuMzA2IDYuNTgybDQuNTYgNS4wNjR6bTEuNzI1IDIuMDU4bDEuODI3LTEuMzY4Yy42NC0uNDM1IDEuMDYyLS44NCAxLjI2NC0xLjIxMi4yMDItLjM3Mi4zMDItLjc3My4zMDItMS4yMDIgMC0uNy0uMjM3LTEuMjY2LS43MS0xLjY5Ni0uNDc0LS40MzEtMS4wOTctLjY0Ni0xLjg2OS0uNjQ2LS43NDQgMC0xLjM0LjIxOC0xLjc4NS42NTMtLjQ0Ni40MzYtLjY3IDEuMDkyLS42NyAxLjk3aDEuNDM2YzAtLjUyNC4wOTQtLjg4Ni4yODEtMS4wODcuMTg4LS4yLjQ0NS0uMzAxLjc3Mi0uMzAxcy41ODYuMTAyLjc3Ny4zMDZjLjE5LjIwNC4yODYuNDU4LjI4Ni43NiAwIC4zMDMtLjA4OC41NzctLjI2Ni44MjItLjE3Ny4yNDUtLjY3LjY1OC0xLjQ3OCAxLjI0LS42OTIuNS0xLjYyOC45NzEtMS45MSAxLjQxM0wxMS44NjQgMTVIMTd2LTEuMjk2aC0zLjQxeiIvPjwvc3ZnPg==\",className:void 0,title:void 0}},blockType:{inDropdown:!0,options:[\"Normal\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Blockquote\",\"Code\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontSize:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuOTIxIDMuMTE5YS40MjcuNDI3IDAgMCAwIC4zMzUuMTY0aC45N2EuNDI2LjQyNiAwIDAgMCAuMzA0LS4xMy40NDEuNDQxIDAgMCAwIC4xMjUtLjMxbC4wMDItMi40MWEuNDM0LjQzNCAwIDAgMC0uNDMtLjQzMkguNDNBLjQzNC40MzQgMCAwIDAgMCAuNDR2Mi40MDZjMCAuMjQyLjE5Mi40MzguNDMuNDM4aC45N2MuMTMgMCAuMjU0LS4wNi4zMzUtLjE2NWwuNzMtLjkzSDUuNTR2MTEuMzZjMCAuMjQxLjE5Mi40MzcuNDMuNDM3aDEuNzE3Yy4yMzcgMCAuNDMtLjE5Ni40My0uNDM3VjIuMTg4aDMuMDdsLjczNC45MzF6TTEzLjg5OCAxMS4yNjNhLjQyNS40MjUgMCAwIDAtLjQ4Mi0uMTQ2bC0uNTQ3LjE5NFY5LjYxN2EuNDQyLjQ0MiAwIDAgMC0uMTI2LS4zMS40MjYuNDI2IDAgMCAwLS4zMDQtLjEyN2gtLjQyOWEuNDM0LjQzNCAwIDAgMC0uNDMuNDM3djEuNjk0bC0uNTQ3LS4xOTRhLjQyNS40MjUgMCAwIDAtLjQ4MS4xNDYuNDQ0LjQ0NCAwIDAgMC0uMDE2LjUxMmwxLjMzMiAyLjAxN2EuNDI3LjQyNyAwIDAgMCAuNzEzIDBsMS4zMzMtMi4wMTdhLjQ0NC40NDQgMCAwIDAtLjAxNi0uNTEyeiIvPjwvZz48L3N2Zz4=\",options:[8,9,10,11,12,14,16,18,24,30,36,48,60,72,96],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontFamily:{options:[\"Arial\",\"Georgia\",\"Impact\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},list:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"unordered\",\"ordered\",\"indent\",\"outdent\"],unordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS43MiAzLjQyN2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3LjAxIDEuNzIuMDFDLjc3LjAwOCAwIC43NzUgMCAxLjcxNWMwIC45NC43NzQgMS43MTEgMS43MiAxLjcxMXptMC0yLjYyNWMuNTEgMCAuOTIyLjQxMi45MjIuOTE0YS45Mi45MiAwIDAgMS0xLjg0MiAwIC45Mi45MiAwIDAgMSAuOTItLjkxNHpNMS43MiA4LjcwM2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3IDUuMjg3IDEuNzIgNS4yODdDLjc3IDUuMjg3IDAgNi4wNTIgMCA2Ljk5NXMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjJjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAwIDEtMS44NDIgMGMwLS41MDUuNDE1LS45MTQuOTItLjkxNHpNMS43MiAxMy45ODJjLjk1MSAwIDEuNzIyLS43NjggMS43MjItMS43MDggMC0uOTQzLS43NzQtMS43MDgtMS43MjEtMS43MDgtLjk0NyAwLTEuNzIxLjc2OC0xLjcyMSAxLjcwOHMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjVjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAxIDEtMS44NDIgMCAuOTIuOTIgMCAwIDEgLjkyLS45MTR6TTUuNzQ0IDIuMTE1aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OS40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDcuMzk0aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOThINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OC40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDEyLjY3aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjQuNC40IDAgMCAwIC40MDIuMzk4eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},ordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4yMDIgMS40NjZoOC4xNWMuMzM4IDAgLjYxMi0uMzIyLjYxMi0uNzIgMC0uMzk3LS4yNzQtLjcyLS42MTItLjcyaC04LjE1Yy0uMzM4IDAtLjYxMS4zMjMtLjYxMS43MiAwIC4zOTguMjczLjcyLjYxLjcyek0xMi4zNTIgNS43ODNoLTguMTVjLS4zMzggMC0uNjExLjMyMi0uNjExLjcyIDAgLjM5Ny4yNzMuNzIuNjEuNzJoOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5OC0uMjc0LS43Mi0uNjEyLS43MnpNMTIuMzUyIDExLjU0aC04LjE1Yy0uMzM4IDAtLjYxMS4zMjItLjYxMS43MiAwIC4zOTYuMjczLjcxOS42MS43MTloOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5Ny0uMjc0LS43Mi0uNjEyLS43MnpNLjc2NyAxLjI0OXYxLjgwMmMwIC4xOTUuMTM2LjM0My4zMTUuMzQzLjE3NiAwIC4zMTUtLjE1LjMxNS0uMzQzVi4zNTZjMC0uMTktLjEzMy0uMzM5LS4zMDItLjMzOS0uMTQ4IDAtLjIyMy4xMTgtLjI0Ny4xNTZhLjIyOC4yMjggMCAwIDAtLjAwMy4wMDVMLjU3OS42MjFhLjQ3NC40NzQgMCAwIDAtLjA5OC4yNzNjMCAuMTk0LjEyOC4zNTEuMjg2LjM1NXpNLjM1MiA4LjE5SDEuNTVjLjE1NyAwIC4yODUtLjE2Mi4yODUtLjM2MiAwLS4xOTgtLjEyOC0uMzU5LS4yODUtLjM1OUguNjh2LS4wMDZjMC0uMTA3LjIxLS4yODEuMzc4LS40MjIuMzM2LS4yNzguNzUzLS42MjUuNzUzLTEuMjI2IDAtLjU3LS4zNzYtMS0uODc0LTEtLjQ3NyAwLS44MzYuMzg1LS44MzYuODk3IDAgLjI5Ny4xNjQuNDAyLjMwNS40MDIuMiAwIC4zMjEtLjE3Ni4zMjEtLjM0NiAwLS4xMDYuMDIzLS4yMjguMjA0LS4yMjguMjQzIDAgLjI1LjI1NC4yNS4yODMgMCAuMjI4LS4yNTIuNDQyLS40OTUuNjQ5LS4zMDEuMjU1LS42NDIuNTQ0LS42NDIuOTkydi4zODRjMCAuMjA1LjE1OS4zNDMuMzA4LjM0M3pNMS43NyAxMC41NDNjMC0uNTkyLS4yOTYtLjkzMS0uODE0LS45MzEtLjY4IDAtLjg1OS41Ny0uODU5Ljg3MiAwIC4zNTEuMjIyLjM5LjMxOC4zOS4xODUgMCAuMzEtLjE0OC4zMS0uMzY2IDAtLjA4NC4wMjYtLjE4MS4yMjQtLjE4MS4xNDIgMCAuMi4wMjQuMi4yNjcgMCAuMjM3LS4wNDMuMjYzLS4yMTMuMjYzLS4xNjQgMC0uMjg4LjE1Mi0uMjg4LjM1NCAwIC4yLjEyNS4zNS4yOTEuMzUuMjI1IDAgLjI3LjEwOC4yNy4yODN2LjA3NWMwIC4yOTQtLjA5Ny4zNS0uMjc3LjM1LS4yNDggMC0uMjY3LS4xNS0uMjY3LS4xOTcgMC0uMTc0LS4wOTgtLjM1LS4zMTctLjM1LS4xOTIgMC0uMzA3LjE0MS0uMzA3LjM3OCAwIC40My4zMTMuODg4Ljg5NS44ODguNTY0IDAgLjkwMS0uNC45MDEtMS4wN3YtLjA3NGMwLS4yNzQtLjA3NC0uNTAyLS4yMTQtLjY2Ni4wOTYtLjE2My4xNDgtLjM4LjE0OC0uNjM1eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},indent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS43MTYgMy4yMTFIMTd2MS4xOTdINS43MTZ6TTAgLjAyaDE3djEuMTk3SDB6TTAgMTIuNzgzaDE3djEuMTk3SDB6TTUuNzE2IDkuNTkzSDE3djEuMTk3SDUuNzE2ek01LjcxNiA2LjQwMkgxN3YxLjE5N0g1LjcxNnpNLjE4NyA5LjQ5MUwyLjUyIDcgLjE4NyA0LjUwOXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},outdent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS4zOTYgMy4xOTNoMTAuNTczVjQuMzlINS4zOTZ6TS4wMzkuMDAzaDE1LjkzVjEuMkguMDM5ek0uMDM5IDEyLjc2NmgxNS45M3YxLjE5N0guMDM5ek01LjM5NiA5LjU3NWgxMC41NzN2MS4xOTdINS4zOTZ6TTUuMzk2IDYuMzg0aDEwLjU3M3YxLjE5N0g1LjM5NnpNMi4xODcgNC40OTFMMCA2Ljk4M2wyLjE4NyAyLjQ5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},title:void 0},textAlign:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"left\",\"center\",\"right\",\"justify\"],left:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOC40OTMgMTQuODg3SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4IDEwLjE2MkguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1M2gxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUzek04LjQ5MyA1LjQzNUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOC43MDlILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTJoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},center:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuNTU2IDE0Ljg4N0gzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTggMTAuMTYySC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUzaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6TTExLjU1NiA1LjQzNUgzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTguNzA5SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTJ6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},right:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjE4IDE0Ljg4N0g2LjQ1YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOCAxMC4xNjJILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTNoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1M3pNMTQuNjE4IDUuNDM1SDYuNDVhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4LjcwOUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1MmgxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyeiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},justify:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjIgMTQuODg4SC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgMTAuMTYySC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgNS40MzZILjMyNWEuMzI2LjMyNiAwIDAgMSAwLS42NTJIMTQuNjJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42Mi43MUguMzI1YS4zMjYuMzI2IDAgMCAxIDAtLjY1M0gxNC42MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},title:void 0},colorPicker:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNDA2LjU4NWExLjk5OCAxLjk5OCAwIDAgMC0yLjgyNSAwbC0uNTQuNTRhLjc0MS43NDEgMCAxIDAtMS4wNDggMS4wNDhsLjE3NS4xNzUtNS44MjYgNS44MjUtMi4wMjIgMi4wMjNhLjkxLjkxIDAgMCAwLS4yNjYuNjAybC0uMDA1LjEwOHYuMDAybC0uMDgxIDEuODI5YS4zMDIuMzAyIDAgMCAwIC4zMDIuMzE2aC4wMTNsLjk3LS4wNDQuNTkyLS4wMjYuMjY4LS4wMTJjLjI5Ny0uMDEzLjU3OS0uMTM3Ljc5LS4zNDdsNy43Ny03Ljc3LjE0Ni4xNDRhLjc0Ljc0IDAgMCAwIDEuMDQ4IDBjLjI5LS4yOS4yOS0uNzU5IDAtMS4wNDhsLjU0LS41NGMuNzgtLjc4Ljc4LTIuMDQ0IDAtMi44MjV6TTguNzk1IDcuMzMzbC0yLjczLjUxNSA0LjQ1Mi00LjQ1MiAxLjEwOCAxLjEwNy0yLjgzIDIuODN6TTIuMDggMTMuNjczYy0xLjE0OCAwLTIuMDguMjk1LTIuMDguNjYgMCAuMzYzLjkzMi42NTggMi4wOC42NTggMS4xNSAwIDIuMDgtLjI5NCAyLjA4LS42NTkgMC0uMzY0LS45My0uNjU5LTIuMDgtLjY1OXoiLz48L2c+PC9zdmc+\",className:void 0,component:void 0,popupClassName:void 0,colors:[\"rgb(97,189,109)\",\"rgb(26,188,156)\",\"rgb(84,172,210)\",\"rgb(44,130,201)\",\"rgb(147,101,184)\",\"rgb(71,85,119)\",\"rgb(204,204,204)\",\"rgb(65,168,95)\",\"rgb(0,168,133)\",\"rgb(61,142,185)\",\"rgb(41,105,176)\",\"rgb(85,57,130)\",\"rgb(40,50,78)\",\"rgb(0,0,0)\",\"rgb(247,218,100)\",\"rgb(251,160,38)\",\"rgb(235,107,86)\",\"rgb(226,80,65)\",\"rgb(163,143,132)\",\"rgb(239,239,239)\",\"rgb(255,255,255)\",\"rgb(250,197,28)\",\"rgb(243,121,52)\",\"rgb(209,72,65)\",\"rgb(184,49,47)\",\"rgb(124,112,107)\",\"rgb(209,213,216)\"],title:void 0},link:{inDropdown:!1,className:void 0,component:void 0,popupClassName:void 0,dropdownClassName:void 0,showOpenOptionOnHover:!0,defaultTargetOption:\"_self\",options:[\"link\",\"unlink\"],link:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzLjk2Ny45NUEzLjIyNiAzLjIyNiAwIDAgMCAxMS42Ny4wMDJjLS44NyAwLTEuNjg2LjMzNy0yLjI5Ny45NDhMNy4xMDUgMy4yMThBMy4yNDcgMy4yNDcgMCAwIDAgNi4yNCA2LjI0YTMuMjI1IDMuMjI1IDAgMCAwLTMuMDIyLjg2NUwuOTUgOS4zNzNhMy4yNTMgMy4yNTMgMCAwIDAgMCA0LjU5NCAzLjIyNiAzLjIyNiAwIDAgMCAyLjI5Ny45NDhjLjg3IDAgMS42ODYtLjMzNiAyLjI5OC0uOTQ4TDcuODEyIDExLjdhMy4yNDcgMy4yNDcgMCAwIDAgLjg2NS0zLjAyMyAzLjIyNSAzLjIyNSAwIDAgMCAzLjAyMi0uODY1bDIuMjY4LTIuMjY3YTMuMjUyIDMuMjUyIDAgMCAwIDAtNC41OTV6TTcuMTA1IDEwLjk5M0w0LjgzNyAxMy4yNmEyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NSAyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LS42NTUgMi4yNTIgMi4yNTIgMCAwIDEgMC0zLjE4bDIuMjY4LTIuMjY4YTIuMjMyIDIuMjMyIDAgMCAxIDEuNTktLjY1NWMuNDMgMCAuODQxLjEyIDEuMTk1LjM0M0w0Ljc3MiA5LjQzOGEuNS41IDAgMSAwIC43MDcuNzA3bDEuOTM5LTEuOTM4Yy41NDUuODY4LjQ0MiAyLjAzLS4zMTMgMi43ODV6bTYuMTU1LTYuMTU1bC0yLjI2OCAyLjI2N2EyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NWMtLjQzMSAwLS44NDEtLjEyLTEuMTk1LS4zNDNsMS45MzgtMS45MzhhLjUuNSAwIDEgMC0uNzA3LS43MDdMNy40OTkgNi43MWEyLjI1MiAyLjI1MiAwIDAgMSAuMzEzLTIuNzg1bDIuMjY3LTIuMjY4YTIuMjMzIDIuMjMzIDAgMCAxIDEuNTktLjY1NSAyLjIzMyAyLjIzMyAwIDAgMSAyLjI0NiAyLjI0NWMwIC42MDMtLjIzMiAxLjE2OC0uNjU1IDEuNTl6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=\",className:void 0,title:void 0},unlink:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTMuOTU2IDEuMDM3YTMuNTUgMy41NSAwIDAgMC01LjAxNCAwTDYuNDM2IDMuNTQ0YS41NDUuNTQ1IDAgMSAwIC43Ny43N2wyLjUwOC0yLjUwNmEyLjQzOCAyLjQzOCAwIDAgMSAxLjczNS0uNzE1Yy42NTggMCAxLjI3NS4yNTQgMS43MzYuNzE1LjQ2LjQ2MS43MTUgMS4wNzguNzE1IDEuNzM2IDAgLjY1OC0uMjU0IDEuMjc0LS43MTUgMS43MzVMOS45MDcgOC41NThhMi40NTggMi40NTggMCAwIDEtMy40NzIgMCAuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3MSAzLjUzNCAzLjUzNCAwIDAgMCAyLjUwNyAxLjAzN2MuOTA4IDAgMS44MTYtLjM0NiAyLjUwNy0xLjAzN2wzLjI3OC0zLjI3OGEzLjUyIDMuNTIgMCAwIDAgMS4wMzUtMi41MDdjMC0uOTUtLjM2Ny0xLjg0LTEuMDM1LTIuNTA3eiIvPjxwYXRoIGQ9Ik03LjQgMTEuMDY1bC0yLjEyMiAyLjEyYTIuNDM3IDIuNDM3IDAgMCAxLTEuNzM1LjcxNiAyLjQzNyAyLjQzNyAwIDAgMS0xLjczNi0uNzE1IDIuNDU3IDIuNDU3IDAgMCAxIDAtMy40NzFsMy4wODYtMy4wODZhMi40MzggMi40MzggMCAwIDEgMS43MzUtLjcxNWMuNjU4IDAgMS4yNzUuMjU0IDEuNzM2LjcxNWEuNTQ1LjU0NSAwIDEgMCAuNzcxLS43NzEgMy41NSAzLjU1IDAgMCAwLTUuMDE0IDBMMS4wMzYgOC45NDRBMy41MiAzLjUyIDAgMCAwIDAgMTEuNDVjMCAuOTUuMzY3IDEuODQgMS4wMzUgMi41MDdhMy41MiAzLjUyIDAgMCAwIDIuNTA2IDEuMDM1Yy45NSAwIDEuODQtLjM2OCAyLjUwNy0xLjAzNWwyLjEyMi0yLjEyMWEuNTQ1LjU0NSAwIDAgMC0uNzcxLS43NzF6TTkuMjc0IDEyLjAwMmEuNTQ2LjU0NiAwIDAgMC0uNTQ2LjU0NXYxLjYzN2EuNTQ2LjU0NiAwIDAgMCAxLjA5MSAwdi0xLjYzN2EuNTQ1LjU0NSAwIDAgMC0uNTQ1LS41NDV6TTExLjIzIDExLjYxNmEuNTQ1LjU0NSAwIDEgMC0uNzcyLjc3MmwxLjE1NyAxLjE1NmEuNTQzLjU0MyAwIDAgMCAuNzcxIDAgLjU0NS41NDUgMCAwIDAgMC0uNzdsLTEuMTU2LTEuMTU4ek0xMi41MzcgOS44MkgxMC45YS41NDYuNTQ2IDAgMCAwIDAgMS4wOTFoMS42MzdhLjU0Ni41NDYgMCAwIDAgMC0xLjA5ek00LjkxIDMuNTQ3YS41NDYuNTQ2IDAgMCAwIC41NDUtLjU0NVYxLjM2NmEuNTQ2LjU0NiAwIDAgMC0xLjA5IDB2MS42MzZjMCAuMzAxLjI0NC41NDUuNTQ1LjU0NXpNMi44ODggMy45MzNhLjU0My41NDMgMCAwIDAgLjc3MSAwIC41NDUuNTQ1IDAgMCAwIDAtLjc3MUwyLjUwMiAyLjAwNWEuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3bDEuMTU3IDEuMTU4ek0xLjYyOCA1LjczaDEuNjM2YS41NDYuNTQ2IDAgMCAwIDAtMS4wOTJIMS42MjhhLjU0Ni41NDYgMCAwIDAgMCAxLjA5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},linkCallback:void 0},emoji:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjE1LjcyOSAyMi4wODIgMTcgMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5LjcwOCAyNS4xMDRjLTMuMDIxLTMuMDIyLTcuOTM3LTMuMDIyLTEwLjk1OCAwLTMuMDIxIDMuMDItMy4wMiA3LjkzNiAwIDEwLjk1OCAzLjAyMSAzLjAyIDcuOTM3IDMuMDIgMTAuOTU4LS4wMDEgMy4wMi0zLjAyMSAzLjAyLTcuOTM2IDAtMTAuOTU3em0tLjg0NSAxMC4xMTJhNi41NiA2LjU2IDAgMCAxLTkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAtOS4yNjcgNi41NiA2LjU2IDAgMCAxIDkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAgOS4yNjd6bS03LjUyNC02LjczYS45MDYuOTA2IDAgMSAxIDEuODExIDAgLjkwNi45MDYgMCAwIDEtMS44MTEgMHptNC4xMDYgMGEuOTA2LjkwNiAwIDEgMSAxLjgxMiAwIC45MDYuOTA2IDAgMCAxLTEuODEyIDB6bTIuMTQxIDMuNzA4Yy0uNTYxIDEuMjk4LTEuODc1IDIuMTM3LTMuMzQ4IDIuMTM3LTEuNTA1IDAtMi44MjctLjg0My0zLjM2OS0yLjE0N2EuNDM4LjQzOCAwIDAgMSAuODEtLjMzNmMuNDA1Ljk3NiAxLjQxIDEuNjA3IDIuNTU5IDEuNjA3IDEuMTIzIDAgMi4xMjEtLjYzMSAyLjU0NC0xLjYwOGEuNDM4LjQzOCAwIDAgMSAuODA0LjM0N3oiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,emojis:[\"😀\",\"😁\",\"😂\",\"😃\",\"😉\",\"😋\",\"😎\",\"😍\",\"😗\",\"🤗\",\"🤔\",\"😣\",\"😫\",\"😴\",\"😌\",\"🤓\",\"😛\",\"😜\",\"😠\",\"😇\",\"😷\",\"😈\",\"👻\",\"😺\",\"😸\",\"😹\",\"😻\",\"😼\",\"😽\",\"🙀\",\"🙈\",\"🙉\",\"🙊\",\"👼\",\"👮\",\"🕵\",\"💂\",\"👳\",\"🎅\",\"👸\",\"👰\",\"👲\",\"🙍\",\"🙇\",\"🚶\",\"🏃\",\"💃\",\"⛷\",\"🏂\",\"🏌\",\"🏄\",\"🚣\",\"🏊\",\"⛹\",\"🏋\",\"🚴\",\"👫\",\"💪\",\"👈\",\"👉\",\"👆\",\"🖕\",\"👇\",\"🖖\",\"🤘\",\"🖐\",\"👌\",\"👍\",\"👎\",\"✊\",\"👊\",\"👏\",\"🙌\",\"🙏\",\"🐵\",\"🐶\",\"🐇\",\"🐥\",\"🐸\",\"🐌\",\"🐛\",\"🐜\",\"🐝\",\"🍉\",\"🍄\",\"🍔\",\"🍤\",\"🍨\",\"🍪\",\"🎂\",\"🍰\",\"🍾\",\"🍷\",\"🍸\",\"🍺\",\"🌍\",\"🚑\",\"⏰\",\"🌙\",\"🌝\",\"🌞\",\"⭐\",\"🌟\",\"🌠\",\"🌨\",\"🌩\",\"⛄\",\"🔥\",\"🎄\",\"🎈\",\"🎉\",\"🎊\",\"🎁\",\"🎗\",\"🏀\",\"🏈\",\"🎲\",\"🔇\",\"🔈\",\"📣\",\"🔔\",\"🎵\",\"🎷\",\"💰\",\"🖊\",\"📅\",\"✅\",\"❎\",\"💯\"],title:void 0},embedded:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNzA4IDYuNjE1YS40MzYuNDM2IDAgMCAwLS41NDMuMjkxbC0xLjgzIDYuMDQ1YS40MzYuNDM2IDAgMCAwIC44MzMuMjUyTDcgNy4xNmEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHpNOC45MzEgNi42MTVhLjQzNi40MzYgMCAwIDAtLjU0My4yOTFsLTEuODMgNi4wNDVhLjQzNi40MzYgMCAwIDAgLjgzNC4yNTJsMS44My02LjA0NGEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHoiLz48cGF0aCBkPSJNMTYuNTY0IDBILjQzNkEuNDM2LjQzNiAwIDAgMCAwIC40MzZ2MTYuMTI4YzAgLjI0LjE5NS40MzYuNDM2LjQzNmgxNi4xMjhjLjI0IDAgLjQzNi0uMTk1LjQzNi0uNDM2Vi40MzZBLjQzNi40MzYgMCAwIDAgMTYuNTY0IDB6TTMuNDg3Ljg3MmgxMC4wMjZ2MS43NDNIMy40ODdWLjg3MnptLTIuNjE1IDBoMS43NDN2MS43NDNILjg3MlYuODcyem0xNS4yNTYgMTUuMjU2SC44NzJWMy40ODhoMTUuMjU2djEyLjY0em0wLTEzLjUxM2gtMS43NDNWLjg3MmgxLjc0M3YxLjc0M3oiLz48Y2lyY2xlIGN4PSI5My44NjciIGN5PSIyNDUuMDY0IiByPSIxMy4xMjgiIHRyYW5zZm9ybT0ibWF0cml4KC4wMzMyIDAgMCAuMDMzMiAwIDApIi8+PGNpcmNsZSBjeD0iOTMuODY3IiBjeT0iMzYwLjU5MiIgcj0iMTMuMTI4IiB0cmFuc2Zvcm09Im1hdHJpeCguMDMzMiAwIDAgLjAzMzIgMCAwKSIvPjxwYXRoIGQ9Ik0xNC4yNTQgMTIuNjQxSDEwLjJhLjQzNi40MzYgMCAwIDAgMCAuODcyaDQuMDU0YS40MzYuNDM2IDAgMCAwIDAtLjg3MnoiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,embedCallback:void 0,defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},image:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNzQxIDBILjI2Qy4xMTYgMCAwIC4xMzYgMCAuMzA0djEzLjM5MmMwIC4xNjguMTE2LjMwNC4yNTkuMzA0SDE0Ljc0Yy4xNDMgMCAuMjU5LS4xMzYuMjU5LS4zMDRWLjMwNEMxNSAuMTM2IDE0Ljg4NCAwIDE0Ljc0MSAwem0tLjI1OCAxMy4zOTFILjUxN1YuNjFoMTMuOTY2VjEzLjM5eiIvPjxwYXRoIGQ9Ik00LjEzOCA2LjczOGMuNzk0IDAgMS40NC0uNzYgMS40NC0xLjY5NXMtLjY0Ni0xLjY5NS0xLjQ0LTEuNjk1Yy0uNzk0IDAtMS40NC43Ni0xLjQ0IDEuNjk1IDAgLjkzNC42NDYgMS42OTUgMS40NCAxLjY5NXptMC0yLjc4MWMuNTA5IDAgLjkyMy40ODcuOTIzIDEuMDg2IDAgLjU5OC0uNDE0IDEuMDg2LS45MjMgMS4wODYtLjUwOSAwLS45MjMtLjQ4Ny0uOTIzLTEuMDg2IDAtLjU5OS40MTQtMS4wODYuOTIzLTEuMDg2ek0xLjgxIDEyLjE3NGMuMDYgMCAuMTIyLS4wMjUuMTcxLS4wNzZMNi4yIDcuNzI4bDIuNjY0IDMuMTM0YS4yMzIuMjMyIDAgMCAwIC4zNjYgMCAuMzQzLjM0MyAwIDAgMCAwLS40M0w3Ljk4NyA4Ljk2OWwyLjM3NC0zLjA2IDIuOTEyIDMuMTQyYy4xMDYuMTEzLjI3LjEwNS4zNjYtLjAyYS4zNDMuMzQzIDAgMCAwLS4wMTYtLjQzbC0zLjEwNC0zLjM0N2EuMjQ0LjI0NCAwIDAgMC0uMTg2LS4wOC4yNDUuMjQ1IDAgMCAwLS4xOC4xTDcuNjIyIDguNTM3IDYuMzk0IDcuMDk0YS4yMzIuMjMyIDAgMCAwLS4zNTQtLjAxM2wtNC40IDQuNTZhLjM0My4zNDMgMCAwIDAtLjAyNC40My4yNDMuMjQzIDAgMCAwIC4xOTQuMTAzeiIvPjwvZz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,urlEnabled:!0,uploadEnabled:!0,previewImage:!1,alignmentEnabled:!0,uploadCallback:void 0,inputAccept:\"image/gif,image/jpeg,image/jpg,image/png,image/svg\",alt:{present:!1,mandatory:!1},defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},remove:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOC4xIDE0bDYuNC03LjJjLjYtLjcuNi0xLjgtLjEtMi41bC0yLjctMi43Yy0uMy0uNC0uOC0uNi0xLjMtLjZIOC42Yy0uNSAwLTEgLjItMS40LjZMLjUgOS4yYy0uNi43LS42IDEuOS4xIDIuNWwyLjcgMi43Yy4zLjQuOC42IDEuMy42SDE2di0xSDguMXptLTEuMy0uMXMwLS4xIDAgMGwtMi43LTIuN2MtLjQtLjQtLjQtLjkgMC0xLjNMNy41IDZoLTFsLTMgMy4zYy0uNi43LS42IDEuNy4xIDIuNEw1LjkgMTRINC42Yy0uMiAwLS40LS4xLS42LS4yTDEuMiAxMWMtLjMtLjMtLjMtLjggMC0xLjFMNC43IDZoMS44TDEwIDJoMUw3LjUgNmwzLjEgMy43LTMuNSA0Yy0uMS4xLS4yLjEtLjMuMnoiLz48L3N2Zz4=\",className:void 0,component:void 0,title:void 0},history:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"undo\",\"redo\"],undo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQuODc1YzIuNjcyIDAgNC44NDYtMi4xNDUgNC44NDYtNC43ODEgMC0yLjYzNy0yLjE3NC00Ljc4MS00Ljg0Ni00Ljc4MVY4LjVMMS42MTUgNC4yNSA3IDB2My4xODhjMy44NiAwIDcgMy4wOTggNyA2LjkwNlMxMC44NiAxNyA3IDE3cy03LTMuMDk4LTctNi45MDZoMi4xNTRjMCAyLjYzNiAyLjE3NCA0Ljc4MSA0Ljg0NiA0Ljc4MXoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},redo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNTA0IDEzLjk3N2E0LjQ5NyA0LjQ5NyAwIDAgMS00LjQ5Mi00LjQ5MiA0LjQ5NyA0LjQ5NyAwIDAgMSA0LjQ5Mi00LjQ5M3YyLjk5NWw0Ljk5LTMuOTkzTDYuNTA0IDB2Mi45OTVhNi40OTYgNi40OTYgMCAwIDAtNi40ODggNi40OWMwIDMuNTc4IDIuOTEgNi40OSA2LjQ4OCA2LjQ5YTYuNDk2IDYuNDk2IDAgMCAwIDYuNDg3LTYuNDloLTEuOTk2YTQuNDk3IDQuNDk3IDAgMCAxLTQuNDkxIDQuNDkyeiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\",className:void 0,title:void 0},title:void 0}},zo={en:{\"generic.add\":\"Add\",\"generic.cancel\":\"Cancel\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Block Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Color Picker\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Highlight\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Embedded Link\",\"components.controls.embedded.enterlink\":\"Enter link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Font\",\"components.controls.fontsize.fontsize\":\"Font Size\",\"components.controls.history.history\":\"History\",\"components.controls.history.undo\":\"Undo\",\"components.controls.history.redo\":\"Redo\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"File Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop the file or click to upload\",\"components.controls.inline.bold\":\"Bold\",\"components.controls.inline.italic\":\"Italic\",\"components.controls.inline.underline\":\"Underline\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Link Title\",\"components.controls.link.linkTarget\":\"Link Target\",\"components.controls.link.linkTargetOption\":\"Open link in new window\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"List\",\"components.controls.list.unordered\":\"Unordered\",\"components.controls.list.ordered\":\"Ordered\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Remove\",\"components.controls.textalign.textalign\":\"Text Align\",\"components.controls.textalign.left\":\"Left\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Right\",\"components.controls.textalign.justify\":\"Justify\"},fr:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Annuler\",\"components.controls.blocktype.h1\":\"Titre 1\",\"components.controls.blocktype.h2\":\"Titre 2\",\"components.controls.blocktype.h3\":\"Titre 3\",\"components.controls.blocktype.h4\":\"Titre 4\",\"components.controls.blocktype.h5\":\"Titre 5\",\"components.controls.blocktype.h6\":\"Titre 6\",\"components.controls.blocktype.blockquote\":\"Citation\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Type bloc\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Palette de couleur\",\"components.controls.colorpicker.text\":\"Texte\",\"components.controls.colorpicker.background\":\"Fond\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Lien iFrame\",\"components.controls.embedded.enterlink\":\"Entrer le lien\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Police\",\"components.controls.fontsize.fontsize\":\"Taille de police\",\"components.controls.history.history\":\"Historique\",\"components.controls.history.undo\":\"Précédent\",\"components.controls.history.redo\":\"Suivant\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"Téléchargement\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Glisser une image ou cliquer pour télécharger\",\"components.controls.inline.bold\":\"Gras\",\"components.controls.inline.italic\":\"Italique\",\"components.controls.inline.underline\":\"Souligner\",\"components.controls.inline.strikethrough\":\"Barrer\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Exposant\",\"components.controls.inline.subscript\":\"Indice\",\"components.controls.link.linkTitle\":\"Titre du lien\",\"components.controls.link.linkTarget\":\"Cible du lien\",\"components.controls.link.linkTargetOption\":\"Ouvrir le lien dans une nouvelle fenêtre\",\"components.controls.link.link\":\"Lier\",\"components.controls.link.unlink\":\"Délier\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Désordonnée\",\"components.controls.list.ordered\":\"Ordonnée\",\"components.controls.list.indent\":\"Augmenter le retrait\",\"components.controls.list.outdent\":\"Diminuer le retrait\",\"components.controls.remove.remove\":\"Supprimer\",\"components.controls.textalign.textalign\":\"Alignement du texte\",\"components.controls.textalign.left\":\"Gauche\",\"components.controls.textalign.center\":\"Centre\",\"components.controls.textalign.right\":\"Droite\",\"components.controls.textalign.justify\":\"Justifier\"},zh:{\"generic.add\":\"添加\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"标题1\",\"components.controls.blocktype.h2\":\"标题2\",\"components.controls.blocktype.h3\":\"标题3\",\"components.controls.blocktype.h4\":\"标题4\",\"components.controls.blocktype.h5\":\"标题5\",\"components.controls.blocktype.h6\":\"标题6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"源码\",\"components.controls.blocktype.blocktype\":\"样式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"选色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"内嵌\",\"components.controls.embedded.embeddedlink\":\"内嵌网页\",\"components.controls.embedded.enterlink\":\"输入网页地址\",\"components.controls.emoji.emoji\":\"表情符号\",\"components.controls.fontfamily.fontfamily\":\"字体\",\"components.controls.fontsize.fontsize\":\"字号\",\"components.controls.history.history\":\"历史\",\"components.controls.history.undo\":\"撤销\",\"components.controls.history.redo\":\"恢复\",\"components.controls.image.image\":\"图片\",\"components.controls.image.fileUpload\":\"来自文件\",\"components.controls.image.byURL\":\"在线图片\",\"components.controls.image.dropFileText\":\"点击或者拖拽文件上传\",\"components.controls.inline.bold\":\"粗体\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下划线\",\"components.controls.inline.strikethrough\":\"删除线\",\"components.controls.inline.monospace\":\"等宽字体\",\"components.controls.inline.superscript\":\"上标\",\"components.controls.inline.subscript\":\"下标\",\"components.controls.link.linkTitle\":\"超链接\",\"components.controls.link.linkTarget\":\"输入链接地址\",\"components.controls.link.linkTargetOption\":\"在新窗口中打开链接\",\"components.controls.link.link\":\"链接\",\"components.controls.link.unlink\":\"删除链接\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"项目符号\",\"components.controls.list.ordered\":\"编号\",\"components.controls.list.indent\":\"增加缩进量\",\"components.controls.list.outdent\":\"减少缩进量\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文本对齐\",\"components.controls.textalign.left\":\"文本左对齐\",\"components.controls.textalign.center\":\"居中\",\"components.controls.textalign.right\":\"文本右对齐\",\"components.controls.textalign.justify\":\"两端对齐\"},ru:{\"generic.add\":\"Добавить\",\"generic.cancel\":\"Отменить\",\"components.controls.blocktype.h1\":\"Заголовок 1\",\"components.controls.blocktype.h2\":\"Заголовок 2\",\"components.controls.blocktype.h3\":\"Заголовок 3\",\"components.controls.blocktype.h4\":\"Заголовок 4\",\"components.controls.blocktype.h5\":\"Заголовок 5\",\"components.controls.blocktype.h6\":\"Заголовок 6\",\"components.controls.blocktype.blockquote\":\"Цитата\",\"components.controls.blocktype.code\":\"Код\",\"components.controls.blocktype.blocktype\":\"Форматирование\",\"components.controls.blocktype.normal\":\"Обычный\",\"components.controls.colorpicker.colorpicker\":\"Выбор цвета\",\"components.controls.colorpicker.text\":\"Текст\",\"components.controls.colorpicker.background\":\"Фон\",\"components.controls.embedded.embedded\":\"Встраивание\",\"components.controls.embedded.embeddedlink\":\"Ссылка в iFrame\",\"components.controls.embedded.enterlink\":\"Вставьте ссылку\",\"components.controls.emoji.emoji\":\"Эмодзи\",\"components.controls.fontfamily.fontfamily\":\"Шрифт\",\"components.controls.fontsize.fontsize\":\"Размер шрифта\",\"components.controls.history.history\":\"История\",\"components.controls.history.undo\":\"Отменить\",\"components.controls.history.redo\":\"Вернуть\",\"components.controls.image.image\":\"Изображение\",\"components.controls.image.fileUpload\":\"Файлы\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Переместите в эту область файлы или кликните для загрузки\",\"components.controls.inline.bold\":\"Жирный\",\"components.controls.inline.italic\":\"Курсив\",\"components.controls.inline.underline\":\"Подчеркивание\",\"components.controls.inline.strikethrough\":\"Зачеркивание\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Верхний индекс\",\"components.controls.inline.subscript\":\"Нижний индекс\",\"components.controls.link.linkTitle\":\"Текст\",\"components.controls.link.linkTarget\":\"Адрес ссылки\",\"components.controls.link.linkTargetOption\":\"Открывать в новом окне\",\"components.controls.link.link\":\"Ссылка\",\"components.controls.link.unlink\":\"Убрать ссылку\",\"components.controls.list.list\":\"Список\",\"components.controls.list.unordered\":\"Неупорядоченный\",\"components.controls.list.ordered\":\"Упорядоченный\",\"components.controls.list.indent\":\"Отступ\",\"components.controls.list.outdent\":\"Выступ\",\"components.controls.remove.remove\":\"Удалить\",\"components.controls.textalign.textalign\":\"Выравнивание текста\",\"components.controls.textalign.left\":\"Слева\",\"components.controls.textalign.center\":\"По центру\",\"components.controls.textalign.right\":\"Справа\",\"components.controls.textalign.justify\":\"Выравнить\"},pt:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"Título 1\",\"components.controls.blocktype.h2\":\"Título 2\",\"components.controls.blocktype.h3\":\"Título 3\",\"components.controls.blocktype.h4\":\"Título 4\",\"components.controls.blocktype.h5\":\"Título 5\",\"components.controls.blocktype.h6\":\"Título 6\",\"components.controls.blocktype.blockquote\":\"Citação\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Estilo\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Paleta de cores\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Fundo\",\"components.controls.embedded.embedded\":\"Embarcado\",\"components.controls.embedded.embeddedlink\":\"Link embarcado\",\"components.controls.embedded.enterlink\":\"Coloque o link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonte\",\"components.controls.fontsize.fontsize\":\"Tamanho da Fonte\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Desfazer\",\"components.controls.history.redo\":\"Refazer\",\"components.controls.image.image\":\"Imagem\",\"components.controls.image.fileUpload\":\"Carregar arquivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arraste uma imagem aqui ou clique para carregar\",\"components.controls.inline.bold\":\"Negrito\",\"components.controls.inline.italic\":\"Itálico\",\"components.controls.inline.underline\":\"Sublinhado\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobrescrito\",\"components.controls.inline.subscript\":\"Subscrito\",\"components.controls.link.linkTitle\":\"Título do link\",\"components.controls.link.linkTarget\":\"Alvo do link\",\"components.controls.link.linkTargetOption\":\"Abrir link em outra janela\",\"components.controls.link.link\":\"Adicionar Link\",\"components.controls.link.unlink\":\"Remover link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Sem ordenção\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Aumentar recuo\",\"components.controls.list.outdent\":\"Diminuir recuo\",\"components.controls.remove.remove\":\"Remover\",\"components.controls.textalign.textalign\":\"Alinhamento do texto\",\"components.controls.textalign.left\":\"À Esquerda\",\"components.controls.textalign.center\":\"Centralizado\",\"components.controls.textalign.right\":\"À Direita\",\"components.controls.textalign.justify\":\"Justificado\"},ko:{\"generic.add\":\"입력\",\"generic.cancel\":\"취소\",\"components.controls.blocktype.h1\":\"제목1\",\"components.controls.blocktype.h2\":\"제목2\",\"components.controls.blocktype.h3\":\"제목3\",\"components.controls.blocktype.h4\":\"제목4\",\"components.controls.blocktype.h5\":\"제목5\",\"components.controls.blocktype.h6\":\"제목6\",\"components.controls.blocktype.blockquote\":\"인용\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"블록\",\"components.controls.blocktype.normal\":\"표준\",\"components.controls.colorpicker.colorpicker\":\"색상 선택\",\"components.controls.colorpicker.text\":\"글꼴색\",\"components.controls.colorpicker.background\":\"배경색\",\"components.controls.embedded.embedded\":\"임베드\",\"components.controls.embedded.embeddedlink\":\"임베드 링크\",\"components.controls.embedded.enterlink\":\"주소를 입력하세요\",\"components.controls.emoji.emoji\":\"이모지\",\"components.controls.fontfamily.fontfamily\":\"글꼴\",\"components.controls.fontsize.fontsize\":\"글꼴 크기\",\"components.controls.history.history\":\"히스토리\",\"components.controls.history.undo\":\"실행 취소\",\"components.controls.history.redo\":\"다시 실행\",\"components.controls.image.image\":\"이미지\",\"components.controls.image.fileUpload\":\"파일 업로드\",\"components.controls.image.byURL\":\"주소\",\"components.controls.image.dropFileText\":\"클릭하거나 파일을 드롭하여 업로드하세요\",\"components.controls.inline.bold\":\"굵게\",\"components.controls.inline.italic\":\"기울임꼴\",\"components.controls.inline.underline\":\"밑줄\",\"components.controls.inline.strikethrough\":\"취소선\",\"components.controls.inline.monospace\":\"고정 너비\",\"components.controls.inline.superscript\":\"위 첨자\",\"components.controls.inline.subscript\":\"아래 첨자\",\"components.controls.link.linkTitle\":\"링크 제목\",\"components.controls.link.linkTarget\":\"링크 타겟\",\"components.controls.link.linkTargetOption\":\"새창으로 열기\",\"components.controls.link.link\":\"링크\",\"components.controls.link.unlink\":\"링크 제거\",\"components.controls.list.list\":\"리스트\",\"components.controls.list.unordered\":\"일반 리스트\",\"components.controls.list.ordered\":\"순서 리스트\",\"components.controls.list.indent\":\"들여쓰기\",\"components.controls.list.outdent\":\"내어쓰기\",\"components.controls.remove.remove\":\"삭제\",\"components.controls.textalign.textalign\":\"텍스트 정렬\",\"components.controls.textalign.left\":\"왼쪽\",\"components.controls.textalign.center\":\"중앙\",\"components.controls.textalign.right\":\"오른쪽\",\"components.controls.textalign.justify\":\"양쪽\"},it:{\"generic.add\":\"Aggiungi\",\"generic.cancel\":\"Annulla\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Citazione\",\"components.controls.blocktype.code\":\"Codice\",\"components.controls.blocktype.blocktype\":\"Stili\",\"components.controls.blocktype.normal\":\"Normale\",\"components.controls.colorpicker.colorpicker\":\"Colore testo\",\"components.controls.colorpicker.text\":\"Testo\",\"components.controls.colorpicker.background\":\"Evidenziazione\",\"components.controls.embedded.embedded\":\"Incorpora\",\"components.controls.embedded.embeddedlink\":\"Incorpora link\",\"components.controls.embedded.enterlink\":\"Inserisci link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Carattere\",\"components.controls.fontsize.fontsize\":\"Dimensione carattere\",\"components.controls.history.history\":\"Modifiche\",\"components.controls.history.undo\":\"Annulla\",\"components.controls.history.redo\":\"Ripristina\",\"components.controls.image.image\":\"Immagine\",\"components.controls.image.fileUpload\":\"Carica immagine\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Trascina il file o clicca per caricare\",\"components.controls.inline.bold\":\"Grassetto\",\"components.controls.inline.italic\":\"Corsivo\",\"components.controls.inline.underline\":\"Sottolineato\",\"components.controls.inline.strikethrough\":\"Barrato\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Apice\",\"components.controls.inline.subscript\":\"Pedice\",\"components.controls.link.linkTitle\":\"Testo\",\"components.controls.link.linkTarget\":\"Link\",\"components.controls.link.linkTargetOption\":\"Apri link in una nuova finestra\",\"components.controls.link.link\":\"Inserisci link\",\"components.controls.link.unlink\":\"Rimuovi link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Elenco puntato\",\"components.controls.list.ordered\":\"Elenco numerato\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Rimuovi formattazione\",\"components.controls.textalign.textalign\":\"Allineamento del testo\",\"components.controls.textalign.left\":\"Allinea a sinistra\",\"components.controls.textalign.center\":\"Allinea al centro\",\"components.controls.textalign.right\":\"Allinea a destra\",\"components.controls.textalign.justify\":\"Giustifica\"},nl:{\"generic.add\":\"Toevoegen\",\"generic.cancel\":\"Annuleren\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Blocktype\",\"components.controls.blocktype.normal\":\"Normaal\",\"components.controls.colorpicker.colorpicker\":\"Kleurkiezer\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Achtergrond\",\"components.controls.embedded.embedded\":\"Ingevoegd\",\"components.controls.embedded.embeddedlink\":\"Ingevoegde link\",\"components.controls.embedded.enterlink\":\"Voeg link toe\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Lettertype\",\"components.controls.fontsize.fontsize\":\"Lettergrootte\",\"components.controls.history.history\":\"Geschiedenis\",\"components.controls.history.undo\":\"Ongedaan maken\",\"components.controls.history.redo\":\"Opnieuw\",\"components.controls.image.image\":\"Afbeelding\",\"components.controls.image.fileUpload\":\"Bestand uploaden\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop het bestand hier of klik om te uploaden\",\"components.controls.inline.bold\":\"Dikgedrukt\",\"components.controls.inline.italic\":\"Schuingedrukt\",\"components.controls.inline.underline\":\"Onderstrepen\",\"components.controls.inline.strikethrough\":\"Doorstrepen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Linktitel\",\"components.controls.link.linkTarget\":\"Link bestemming\",\"components.controls.link.linkTargetOption\":\"Open link in een nieuw venster\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"Lijst\",\"components.controls.list.unordered\":\"Ongeordend\",\"components.controls.list.ordered\":\"Geordend\",\"components.controls.list.indent\":\"Inspringen\",\"components.controls.list.outdent\":\"Inspringen verkleinen\",\"components.controls.remove.remove\":\"Verwijderen\",\"components.controls.textalign.textalign\":\"Tekst uitlijnen\",\"components.controls.textalign.left\":\"Links\",\"components.controls.textalign.center\":\"Gecentreerd\",\"components.controls.textalign.right\":\"Rechts\",\"components.controls.textalign.justify\":\"Uitgelijnd\"},de:{\"generic.add\":\"Hinzufügen\",\"generic.cancel\":\"Abbrechen\",\"components.controls.blocktype.h1\":\"Überschrift 1\",\"components.controls.blocktype.h2\":\"Überschrift 2\",\"components.controls.blocktype.h3\":\"Überschrift 3\",\"components.controls.blocktype.h4\":\"Überschrift 4\",\"components.controls.blocktype.h5\":\"Überschrift 5\",\"components.controls.blocktype.h6\":\"Überschrift 6\",\"components.controls.blocktype.blockquote\":\"Zitat\",\"components.controls.blocktype.code\":\"Quellcode\",\"components.controls.blocktype.blocktype\":\"Blocktyp\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farbauswahl\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Hintergrund\",\"components.controls.embedded.embedded\":\"Eingebettet\",\"components.controls.embedded.embeddedlink\":\"Eingebetteter Link\",\"components.controls.embedded.enterlink\":\"Link eingeben\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Schriftart\",\"components.controls.fontsize.fontsize\":\"Schriftgröße\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Zurücknehmen\",\"components.controls.history.redo\":\"Wiederholen\",\"components.controls.image.image\":\"Bild\",\"components.controls.image.fileUpload\":\"Datei-Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Dateien ziehen und ablegen, oder klicken zum Hochladen\",\"components.controls.inline.bold\":\"Fett\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Unterstreichen\",\"components.controls.inline.strikethrough\":\"Durchstreichen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hochgestellt\",\"components.controls.inline.subscript\":\"Tiefgestellt\",\"components.controls.link.linkTitle\":\"Link-Titel\",\"components.controls.link.linkTarget\":\"Link-Ziel\",\"components.controls.link.linkTargetOption\":\"Link in neuem Fenster öffnen\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Aufheben\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Aufzählung\",\"components.controls.list.ordered\":\"Nummerierte Liste\",\"components.controls.list.indent\":\"Einzug vergrößern\",\"components.controls.list.outdent\":\"Einzug reduzieren\",\"components.controls.remove.remove\":\"Entfernen\",\"components.controls.textalign.textalign\":\"Textausrichtung\",\"components.controls.textalign.left\":\"Linksbündig\",\"components.controls.textalign.center\":\"Zentrieren\",\"components.controls.textalign.right\":\"Rechtsbündig\",\"components.controls.textalign.justify\":\"Blocksatz\"},da:{\"generic.add\":\"Tilføj\",\"generic.cancel\":\"Annuller\",\"components.controls.blocktype.h1\":\"Overskrift 1\",\"components.controls.blocktype.h2\":\"Overskrift 2\",\"components.controls.blocktype.h3\":\"Overskrift 3\",\"components.controls.blocktype.h4\":\"Overskrift 4\",\"components.controls.blocktype.h5\":\"Overskrift 5\",\"components.controls.blocktype.h6\":\"Overskrift 6\",\"components.controls.blocktype.blockquote\":\"Blokcitat\",\"components.controls.blocktype.code\":\"Kode\",\"components.controls.blocktype.blocktype\":\"Blok Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farver\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Baggrund\",\"components.controls.embedded.embedded\":\"Indlejre\",\"components.controls.embedded.embeddedlink\":\"Indlejre Link\",\"components.controls.embedded.enterlink\":\"Indtast link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonttype\",\"components.controls.fontsize.fontsize\":\"Fontstørrelser\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Fortryd\",\"components.controls.history.redo\":\"Gendan\",\"components.controls.image.image\":\"Billede\",\"components.controls.image.fileUpload\":\"Filoverførsel\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop filen eller klik for at uploade\",\"components.controls.inline.bold\":\"Fed\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Understrege\",\"components.controls.inline.strikethrough\":\"Gennemstreget\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hævet\",\"components.controls.inline.subscript\":\"Sænket\",\"components.controls.link.linkTitle\":\"Link Titel\",\"components.controls.link.linkTarget\":\"Link Mål\",\"components.controls.link.linkTargetOption\":\"Åbn link i nyt vindue\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Fjern link\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Uordnet\",\"components.controls.list.ordered\":\"Ordnet\",\"components.controls.list.indent\":\"Indrykning\",\"components.controls.list.outdent\":\"Udrykning\",\"components.controls.remove.remove\":\"Fjern\",\"components.controls.textalign.textalign\":\"Tekstjustering\",\"components.controls.textalign.left\":\"Venstre\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Højre\",\"components.controls.textalign.justify\":\"Margener\"},zh_tw:{\"generic.add\":\"新增\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"標題1\",\"components.controls.blocktype.h2\":\"標題2\",\"components.controls.blocktype.h3\":\"標題3\",\"components.controls.blocktype.h4\":\"標題4\",\"components.controls.blocktype.h5\":\"標題5\",\"components.controls.blocktype.h6\":\"標題6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"程式碼\",\"components.controls.blocktype.blocktype\":\"樣式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"選色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"內嵌\",\"components.controls.embedded.embeddedlink\":\"內嵌網頁\",\"components.controls.embedded.enterlink\":\"輸入網頁地址\",\"components.controls.emoji.emoji\":\"表情符號\",\"components.controls.fontfamily.fontfamily\":\"字體\",\"components.controls.fontsize.fontsize\":\"字體大小\",\"components.controls.history.history\":\"歷史紀錄\",\"components.controls.history.undo\":\"復原\",\"components.controls.history.redo\":\"重做\",\"components.controls.image.image\":\"圖片\",\"components.controls.image.fileUpload\":\"檔案上傳\",\"components.controls.image.byURL\":\"網址\",\"components.controls.image.dropFileText\":\"點擊或拖曳檔案上傳\",\"components.controls.inline.bold\":\"粗體\",\"components.controls.inline.italic\":\"斜體\",\"components.controls.inline.underline\":\"底線\",\"components.controls.inline.strikethrough\":\"刪除線\",\"components.controls.inline.monospace\":\"等寬字體\",\"components.controls.inline.superscript\":\"上標\",\"components.controls.inline.subscript\":\"下標\",\"components.controls.link.linkTitle\":\"超連結\",\"components.controls.link.linkTarget\":\"輸入連結位址\",\"components.controls.link.linkTargetOption\":\"在新視窗打開連結\",\"components.controls.link.link\":\"連結\",\"components.controls.link.unlink\":\"刪除連結\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"項目符號\",\"components.controls.list.ordered\":\"編號\",\"components.controls.list.indent\":\"增加縮排\",\"components.controls.list.outdent\":\"減少縮排\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文字對齊\",\"components.controls.textalign.left\":\"文字向左對齊\",\"components.controls.textalign.center\":\"文字置中\",\"components.controls.textalign.right\":\"文字向右對齊\",\"components.controls.textalign.justify\":\"兩端對齊\"},pl:{\"generic.add\":\"Dodaj\",\"generic.cancel\":\"Anuluj\",\"components.controls.blocktype.h1\":\"Nagłówek 1\",\"components.controls.blocktype.h2\":\"Nagłówek 2\",\"components.controls.blocktype.h3\":\"Nagłówek 3\",\"components.controls.blocktype.h4\":\"Nagłówek 4\",\"components.controls.blocktype.h5\":\"Nagłówek 5\",\"components.controls.blocktype.h6\":\"Nagłówek 6\",\"components.controls.blocktype.blockquote\":\"Cytat\",\"components.controls.blocktype.code\":\"Kod\",\"components.controls.blocktype.blocktype\":\"Format\",\"components.controls.blocktype.normal\":\"Normalny\",\"components.controls.colorpicker.colorpicker\":\"Kolor\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Tło\",\"components.controls.embedded.embedded\":\"Osadź\",\"components.controls.embedded.embeddedlink\":\"Osadź odnośnik\",\"components.controls.embedded.enterlink\":\"Wprowadź odnośnik\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Krój czcionki\",\"components.controls.fontsize.fontsize\":\"Rozmiar czcionki\",\"components.controls.history.history\":\"Historia\",\"components.controls.history.undo\":\"Cofnij\",\"components.controls.history.redo\":\"Ponów\",\"components.controls.image.image\":\"Obrazek\",\"components.controls.image.fileUpload\":\"Prześlij plik\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Upuść plik lub kliknij, aby przesłać\",\"components.controls.inline.bold\":\"Pogrubienie\",\"components.controls.inline.italic\":\"Kursywa\",\"components.controls.inline.underline\":\"Podkreślenie\",\"components.controls.inline.strikethrough\":\"Przekreślenie\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Indeks górny\",\"components.controls.inline.subscript\":\"Indeks dolny\",\"components.controls.link.linkTitle\":\"Tytuł odnośnika\",\"components.controls.link.linkTarget\":\"Adres odnośnika\",\"components.controls.link.linkTargetOption\":\"Otwórz odnośnik w nowej karcie\",\"components.controls.link.link\":\"Wstaw odnośnik\",\"components.controls.link.unlink\":\"Usuń odnośnik\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Lista nieuporządkowana\",\"components.controls.list.ordered\":\"Lista uporządkowana\",\"components.controls.list.indent\":\"Zwiększ wcięcie\",\"components.controls.list.outdent\":\"Zmniejsz wcięcie\",\"components.controls.remove.remove\":\"Usuń\",\"components.controls.textalign.textalign\":\"Wyrównaj tekst\",\"components.controls.textalign.left\":\"Do lewej\",\"components.controls.textalign.center\":\"Do środka\",\"components.controls.textalign.right\":\"Do prawej\",\"components.controls.textalign.justify\":\"Wyjustuj\"},es:{\"generic.add\":\"Añadir\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Código\",\"components.controls.blocktype.blocktype\":\"Tipo de bloque\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Seleccionar color\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Subrayado\",\"components.controls.embedded.embedded\":\"Adjuntar\",\"components.controls.embedded.embeddedlink\":\"Adjuntar Link\",\"components.controls.embedded.enterlink\":\"Introducir link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fuente\",\"components.controls.fontsize.fontsize\":\"Tamaño de fuente\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Deshacer\",\"components.controls.history.redo\":\"Rehacer\",\"components.controls.image.image\":\"Imagen\",\"components.controls.image.fileUpload\":\"Subir archivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arrastra el archivo o haz click para subirlo\",\"components.controls.inline.bold\":\"Negrita\",\"components.controls.inline.italic\":\"Cursiva\",\"components.controls.inline.underline\":\"Subrayado\",\"components.controls.inline.strikethrough\":\"Tachado\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobreíndice\",\"components.controls.inline.subscript\":\"Subíndice\",\"components.controls.link.linkTitle\":\"Título del enlace\",\"components.controls.link.linkTarget\":\"Objetivo del enlace\",\"components.controls.link.linkTargetOption\":\"Abrir en nueva ventana\",\"components.controls.link.link\":\"Enlazar\",\"components.controls.link.unlink\":\"Desenlazar\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Desordenada\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Indentada\",\"components.controls.list.outdent\":\"Dentada\",\"components.controls.remove.remove\":\"Eliminar\",\"components.controls.textalign.textalign\":\"Alineación del texto\",\"components.controls.textalign.left\":\"Izquierda\",\"components.controls.textalign.center\":\"Centrado\",\"components.controls.textalign.right\":\"Derecha\",\"components.controls.textalign.justify\":\"Justificado\"},ja:{\"generic.add\":\"追加\",\"generic.cancel\":\"キャンセル\",\"components.controls.blocktype.h1\":\"見出し1\",\"components.controls.blocktype.h2\":\"見出し2\",\"components.controls.blocktype.h3\":\"見出し3\",\"components.controls.blocktype.h4\":\"見出し4\",\"components.controls.blocktype.h5\":\"見出し5\",\"components.controls.blocktype.h6\":\"見出し6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"コード\",\"components.controls.blocktype.blocktype\":\"スタイル\",\"components.controls.blocktype.normal\":\"標準テキスト\",\"components.controls.colorpicker.colorpicker\":\"テキストの色\",\"components.controls.colorpicker.text\":\"テキスト\",\"components.controls.colorpicker.background\":\"ハイライト\",\"components.controls.embedded.embedded\":\"埋め込み\",\"components.controls.embedded.embeddedlink\":\"埋め込みリンク\",\"components.controls.embedded.enterlink\":\"リンクを入力してください\",\"components.controls.emoji.emoji\":\"絵文字\",\"components.controls.fontfamily.fontfamily\":\"フォント\",\"components.controls.fontsize.fontsize\":\"フォントサイズ\",\"components.controls.history.history\":\"履歴\",\"components.controls.history.undo\":\"元に戻す\",\"components.controls.history.redo\":\"やり直し\",\"components.controls.image.image\":\"画像\",\"components.controls.image.fileUpload\":\"ファイルをアップロード\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"ここに画像をドラッグするか、クリックしてください\",\"components.controls.inline.bold\":\"太字\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下線\",\"components.controls.inline.strikethrough\":\"取り消し線\",\"components.controls.inline.monospace\":\"等幅フォント\",\"components.controls.inline.superscript\":\"上付き文字\",\"components.controls.inline.subscript\":\"下付き文字\",\"components.controls.link.linkTitle\":\"リンクタイトル\",\"components.controls.link.linkTarget\":\"リンク対象\",\"components.controls.link.linkTargetOption\":\"新しいウィンドウで開く\",\"components.controls.link.link\":\"リンク\",\"components.controls.link.unlink\":\"リンクを解除\",\"components.controls.list.list\":\"リスト\",\"components.controls.list.unordered\":\"箇条書き\",\"components.controls.list.ordered\":\"番号付き\",\"components.controls.list.indent\":\"インデント増\",\"components.controls.list.outdent\":\"インデント減\",\"components.controls.remove.remove\":\"書式をクリア\",\"components.controls.textalign.textalign\":\"整列\",\"components.controls.textalign.left\":\"左揃え\",\"components.controls.textalign.center\":\"中央揃え\",\"components.controls.textalign.right\":\"右揃え\",\"components.controls.textalign.justify\":\"両端揃え\"}};n(38),n(39);function _o(e){return(_o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Po(){return(Po=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function Uo(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Yo(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Uo(Object(n),!0).forEach(function(e){Fo(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Uo(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function Fo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ro(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function Bo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Qo(e,t){return!t||\"object\"!==_o(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ho(e){return(Ho=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Zo(e,t){return(Zo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Wo=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Qo(this,Ho(r).call(this,e))).onEditorBlur=function(){a.setState({editorFocused:!1})},a.onEditorFocus=function(e){var t=a.props.onFocus;a.setState({editorFocused:!0});var n=a.focusHandler.isEditorFocused();t&&n&&t(e)},a.onEditorMouseDown=function(){a.focusHandler.onEditorMouseDown()},a.keyBindingFn=function(e){if(\"Tab\"!==e.key)return\"ArrowUp\"!==e.key&&\"ArrowDown\"!==e.key||s()&&e.preventDefault(),Object(E.getDefaultKeyBinding)(e);var t=a.props.onTab;if(!t||!t(e)){var n=Object(C.changeDepth)(a.state.editorState,e.shiftKey?-1:1,4);n&&n!==a.state.editorState&&(a.onChange(n),e.preventDefault())}return null},a.onToolbarFocus=function(e){var t=a.props.onFocus;t&&a.focusHandler.isToolbarFocused()&&t(e)},a.onWrapperBlur=function(e){var t=a.props.onBlur;t&&a.focusHandler.isEditorBlur(e)&&t(e,a.getEditorState())},a.onChange=function(e){var t=a.props,n=t.readOnly,o=t.onEditorStateChange;n||\"atomic\"===Object(C.getSelectedBlocksType)(e)&&e.getSelection().isCollapsed||(o&&o(e,a.props.wrapperId),p(a.props,\"editorState\")?a.afterChange(e):a.setState({editorState:e},a.afterChange(e)))},a.setWrapperReference=function(e){a.wrapper=e},a.setEditorReference=function(e){a.props.editorRef&&a.props.editorRef(e),a.editor=e},a.getCompositeDecorator=function(e){var t=[].concat(Ro(a.props.customDecorators),[{strategy:uo,component:po({showOpenOptionOnHover:e.link.showOpenOptionOnHover})}]);return a.props.mention&&t.push.apply(t,Ro(So(Yo({},a.props.mention,{onChange:a.onChange,getEditorState:a.getEditorState,getSuggestions:a.getSuggestions,getWrapperRef:a.getWrapperRef,modalHandler:a.modalHandler})))),a.props.hashtag&&t.push(Lo(a.props.hashtag)),new E.CompositeDecorator(t)},a.getWrapperRef=function(){return a.wrapper},a.getEditorState=function(){return a.state?a.state.editorState:null},a.getSuggestions=function(){return a.props.mention&&a.props.mention.suggestions},a.afterChange=function(o){setTimeout(function(){var e=a.props,t=e.onChange,n=e.onContentStateChange;t&&t(Object(E.convertToRaw)(o.getCurrentContent())),n&&n(Object(E.convertToRaw)(o.getCurrentContent()))})},a.isReadOnly=function(){return a.props.readOnly},a.isImageAlignmentEnabled=function(){return a.state.toolbar.image.alignmentEnabled},a.createEditorState=function(e){var t;if(p(a.props,\"editorState\"))a.props.editorState&&(t=E.EditorState.set(a.props.editorState,{decorator:e}));else if(p(a.props,\"defaultEditorState\"))a.props.defaultEditorState&&(t=E.EditorState.set(a.props.defaultEditorState,{decorator:e}));else if(p(a.props,\"contentState\")){if(a.props.contentState){var n=Object(E.convertFromRaw)(a.props.contentState);t=E.EditorState.createWithContent(n,e),t=E.EditorState.moveSelectionToEnd(t)}}else if(p(a.props,\"defaultContentState\")||p(a.props,\"initialContentState\")){var o=a.props.defaultContentState||a.props.initialContentState;o&&(o=Object(E.convertFromRaw)(o),t=E.EditorState.createWithContent(o,e),t=E.EditorState.moveSelectionToEnd(t))}return t=t||E.EditorState.createEmpty(e)},a.filterEditorProps=function(e){return t=e,n=[\"onChange\",\"onEditorStateChange\",\"onContentStateChange\",\"initialContentState\",\"defaultContentState\",\"contentState\",\"editorState\",\"defaultEditorState\",\"locale\",\"localization\",\"toolbarOnFocus\",\"toolbar\",\"toolbarCustomButtons\",\"toolbarClassName\",\"editorClassName\",\"toolbarHidden\",\"wrapperClassName\",\"toolbarStyle\",\"editorStyle\",\"wrapperStyle\",\"uploadCallback\",\"onFocus\",\"onBlur\",\"onTab\",\"mention\",\"hashtag\",\"ariaLabel\",\"customBlockRenderFunc\",\"customDecorators\",\"handlePastedText\",\"customStyleMap\"],o=Object.keys(t).filter(function(e){return n.indexOf(e)<0}),r={},o&&0<o.length&&o.forEach(function(e){r[e]=t[e]}),r;var t,n,o,r},a.getStyleMap=function(e){return Yo({},Object(C.getCustomStyleMap)(),{},e.customStyleMap)},a.changeEditorState=function(e){var t=Object(E.convertFromRaw)(e),n=a.state.editorState;return n=E.EditorState.push(n,t,\"insert-characters\"),n=E.EditorState.moveSelectionToEnd(n)},a.focusEditor=function(){setTimeout(function(){a.editor.focus()})},a.handleKeyCommand=function(e){var t=a.state,n=t.editorState,o=t.toolbar.inline;if(o&&0<=o.options.indexOf(e)){var r=E.RichUtils.handleKeyCommand(n,e);if(r)return a.onChange(r),!0}return!1},a.handleReturn=function(e){if(s())return!0;var t=a.state.editorState,n=Object(C.handleNewLine)(t,e);return!!n&&(a.onChange(n),!0)},a.handlePastedTextFn=function(e,t){var n=a.state.editorState,o=a.props,r=o.handlePastedText,i=o.stripPastedStyles;return r?r(e,t,n,a.onChange):!i&&function(e,t,n,o){var r=Object(C.getSelectedBlock)(n);if(r&&\"code\"===r.type){var i=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());return o(E.EditorState.push(n,i,\"insert-characters\")),!0}if(t){var a=j()(t),c=n.getCurrentContent();return a.entityMap.forEach(function(e,t){c=c.mergeEntityData(t,e)}),c=E.Modifier.replaceWithFragment(c,n.getSelection(),new N.List(a.contentBlocks)),o(E.EditorState.push(n,c,\"insert-characters\")),!0}return!1}(e,t,n,a.onChange)},a.preventDefault=function(e){\"INPUT\"===e.target.tagName||\"LABEL\"===e.target.tagName||\"TEXTAREA\"===e.target.tagName?a.focusHandler.onInputMouseDown():e.preventDefault()};var t=M(To,e.toolbar),n=e.wrapperId?e.wrapperId:Math.floor(1e4*Math.random());a.wrapperId=\"rdw-wrapper-\".concat(n),a.modalHandler=new i,a.focusHandler=new c,a.blockRendererFn=Ao({isReadOnly:a.isReadOnly,isImageAlignmentEnabled:a.isImageAlignmentEnabled,getEditorState:a.getEditorState,onChange:a.onChange},e.customBlockRenderFunc),a.editorProps=a.filterEditorProps(e),a.customStyleMap=a.getStyleMap(e),a.compositeDecorator=a.getCompositeDecorator(t);var o=a.createEditorState(a.compositeDecorator);return Object(C.extractInlineStyle)(o),a.state={editorState:o,editorFocused:!1,toolbar:t},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Zo(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.modalHandler.init(this.wrapperId)}},{key:\"componentDidUpdate\",value:function(e){if(e!==this.props){var t={},n=this.props,o=n.editorState,r=n.contentState;if(!this.state.toolbar){var i=M(To,i);t.toolbar=i}if(p(this.props,\"editorState\")&&o!==e.editorState)t.editorState=o?E.EditorState.set(o,{decorator:this.compositeDecorator}):E.EditorState.createEmpty(this.compositeDecorator);else if(p(this.props,\"contentState\")&&r!==e.contentState)if(r){var a=this.changeEditorState(r);a&&(t.editorState=a)}else t.editorState=E.EditorState.createEmpty(this.compositeDecorator);e.editorState===o&&e.contentState===r||Object(C.extractInlineStyle)(t.editorState),Object.keys(t).length&&this.setState(t),this.editorProps=this.filterEditorProps(this.props),this.customStyleMap=this.getStyleMap(this.props)}}},{key:\"render\",value:function(){var e=this.state,t=e.editorState,n=e.editorFocused,r=e.toolbar,o=this.props,i=o.locale,a=o.localization,c=a.locale,l=a.translations,s=o.toolbarCustomButtons,u=o.toolbarOnFocus,p=o.toolbarClassName,d=o.toolbarHidden,m=o.editorClassName,f=o.wrapperClassName,g=o.toolbarStyle,y=o.editorStyle,h=o.wrapperStyle,M=o.uploadCallback,b=o.ariaLabel,j={modalHandler:this.modalHandler,editorState:t,onChange:this.onChange,translations:Yo({},zo[i||c],{},l)},N=n||this.focusHandler.isInputFocused()||!u;return S.a.createElement(\"div\",{id:this.wrapperId,className:L()(f,\"rdw-editor-wrapper\"),style:h,onClick:this.modalHandler.onEditorClick,onBlur:this.onWrapperBlur,\"aria-label\":\"rdw-wrapper\"},!d&&S.a.createElement(\"div\",{className:L()(\"rdw-editor-toolbar\",p),style:Yo({visibility:N?\"visible\":\"hidden\"},g),onMouseDown:this.preventDefault,\"aria-label\":\"rdw-toolbar\",\"aria-hidden\":(!n&&u).toString(),onFocus:this.onToolbarFocus},r.options.map(function(e,t){var n=ro[e],o=r[e];return\"image\"===e&&M&&(o.uploadCallback=M),S.a.createElement(n,Po({key:t},j,{config:o}))}),s&&s.map(function(e,t){return S.a.cloneElement(e,Yo({key:t},j))})),S.a.createElement(\"div\",{ref:this.setWrapperReference,className:L()(m,\"rdw-editor-main\"),style:y,onClick:this.focusEditor,onFocus:this.onEditorFocus,onBlur:this.onEditorBlur,onKeyDown:k.onKeyDown,onMouseDown:this.onEditorMouseDown},S.a.createElement(E.Editor,Po({ref:this.setEditorReference,keyBindingFn:this.keyBindingFn,editorState:t,onChange:this.onChange,blockStyleFn:D,customStyleMap:this.getStyleMap(this.props),handleReturn:this.handleReturn,handlePastedText:this.handlePastedTextFn,blockRendererFn:this.blockRendererFn,handleKeyCommand:this.handleKeyCommand,ariaLabel:b||\"rdw-editor\",blockRenderMap:C.blockRenderMap},this.editorProps))))}}])&&Bo(e.prototype,t),n&&Bo(e,n),r}();Wo.propTypes={onChange:f.a.func,onEditorStateChange:f.a.func,onContentStateChange:f.a.func,initialContentState:f.a.object,defaultContentState:f.a.object,contentState:f.a.object,editorState:f.a.object,defaultEditorState:f.a.object,toolbarOnFocus:f.a.bool,spellCheck:f.a.bool,stripPastedStyles:f.a.bool,toolbar:f.a.object,toolbarCustomButtons:f.a.array,toolbarClassName:f.a.string,toolbarHidden:f.a.bool,locale:f.a.string,localization:f.a.object,editorClassName:f.a.string,wrapperClassName:f.a.string,toolbarStyle:f.a.object,editorStyle:f.a.object,wrapperStyle:f.a.object,uploadCallback:f.a.func,onFocus:f.a.func,onBlur:f.a.func,onTab:f.a.func,mention:f.a.object,hashtag:f.a.object,textAlignment:f.a.string,readOnly:f.a.bool,tabIndex:f.a.number,placeholder:f.a.string,ariaLabel:f.a.string,ariaOwneeID:f.a.string,ariaActiveDescendantID:f.a.string,ariaAutoComplete:f.a.string,ariaDescribedBy:f.a.string,ariaExpanded:f.a.string,ariaHasPopup:f.a.string,customBlockRenderFunc:f.a.func,wrapperId:f.a.number,customDecorators:f.a.array,editorRef:f.a.func,handlePastedText:f.a.func},Wo.defaultProps={toolbarOnFocus:!1,toolbarHidden:!1,stripPastedStyles:!1,localization:{locale:\"en\",translations:{}},customDecorators:[]};var Go=Wo;n.d(t,\"Editor\",function(){return Go})}],i.c=c,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=8);function i(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var a,c});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.draftjsToMarkdown=e():t.draftjsToMarkdown=e()}(window,function(){return r={},o.m=n=[function(t,e,n){t.exports=n(1)},function(t,e,n){\"use strict\";function i(t,e){if(t)for(var n in t)!{}.hasOwnProperty.call(t,n)||e(n,t[n])}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.r(e),n.d(e,\"sameStyleAsPrevious\",function(){return d}),n.d(e,\"getStylesAtOffset\",function(){return p}),n.d(e,\"addInlineStyleMarkdown\",function(){return g}),n.d(e,\"addStylePropertyMarkdown\",function(){return T}),n.d(e,\"trimLeadingZeros\",function(){return b}),n.d(e,\"trimTrailingZeros\",function(){return R}),n.d(e,\"getBlockContentMarkdown\",function(){return E}),n.d(e,\"getBlockStyle\",function(){return S}),n.d(e,\"default\",function(){return r});var l={unstyled:\"\",\"header-one\":\"# \",\"header-two\":\"## \",\"header-three\":\"### \",\"header-four\":\"#### \",\"header-five\":\"##### \",\"header-six\":\"###### \",\"unordered-list-item\":\"- \",\"ordered-list-item\":\"1. \",blockquote:\"> \",code:\"    \"};function O(t,e,n,r){var o=t[e];if(\"function\"==typeof r){var c=r(o,n);if(c)return c}return\"MENTION\"===o.type?\"[\".concat(n,\"](\").concat(o.data.url,\")\"):\"LINK\"===o.type?\"[\".concat(n,\"](\").concat(o.data.url,\")\"):\"IMAGE\"===o.type?\"![\".concat(o.data.alt||\"\",\"](\").concat(o.data.src,\")\"):\"EMBEDDED_LINK\"===o.type?'<iframe width=\"'.concat(o.data.width,'\" height=\"').concat(o.data.height,'\" src=\"').concat(o.data.src,'\" frameBorder=\"0\" allowFullScreen />'):n}function y(t,e){var n=[],r=0,o=t.entityRanges.map(function(t){return{offset:t.offset,length:t.length,key:t.key,type:\"ENTITY\"}});return(o=(o=o.concat(function(t,e){var n=[];if(e)for(var r=0,o=0,c=t,a=e.trigger||\"#\",u=e.separator||\" \";0<c.length&&0<=o;)if(c[0]===a?(r=o=0,c=c.substr(a.length)):0<=(o=c.indexOf(u+a))&&(c=c.substr(o+(u+a).length),r+=o+u.length),0<=o){var i=0<=c.indexOf(u)?c.indexOf(u):c.length,f=c.substr(0,i);f&&0<f.length&&n.push({offset:r,length:f.length+a.length,type:\"HASHTAG\"}),r+=a.length}return n}(t.text,e))).sort(function(t,e){return t.offset-e.offset})).forEach(function(t){t.offset>r&&n.push({start:r,end:t.offset-1}),n.push({start:t.offset,end:t.offset+t.length,entityKey:t.key,type:t.type}),r=t.offset+t.length}),r<t.text.length&&n.push({start:r,end:t.text.length}),n}function d(e,t,n){var r=!0;return 0<n&&n<e.length?t.forEach(function(t){r=r&&e[t][n]===e[t][n-1]}):r=!1,r}function p(t,e){var n={};return t.COLOR[e]&&(n.COLOR=t.COLOR[e]),t.BGCOLOR[e]&&(n.BGCOLOR=t.BGCOLOR[e]),t.FONTSIZE[e]&&(n.FONTSIZE=t.FONTSIZE[e]),t.FONTFAMILY[e]&&(n.FONTFAMILY=t.FONTFAMILY[e]),t.SUBSCRIPT[e]&&(n.SUBSCRIPT=!0),t.SUPERSCRIPT[e]&&(n.SUPERSCRIPT=!0),t.CODE[e]&&(n.CODE=!0),t.STRIKETHROUGH[e]&&(n.STRIKETHROUGH=!0),t.UNDERLINE[e]&&(n.UNDERLINE=!0),t.ITALIC[e]&&(n.ITALIC=!0),t.BOLD[e]&&(n.BOLD=!0),n}function h(t,e,n,r){var o,c,a,u,i=[],f=t.text;if(0<f.length)for(var s,l=(c=(o=t).text,a=o.inlineStyleRanges,u={COLOR:new Array(c.length),BGCOLOR:new Array(c.length),FONTSIZE:new Array(c.length),FONTFAMILY:new Array(c.length),SUBSCRIPT:new Array(c.length),SUPERSCRIPT:new Array(c.length),CODE:new Array(c.length),STRIKETHROUGH:new Array(c.length),UNDERLINE:new Array(c.length),ITALIC:new Array(c.length),BOLD:new Array(c.length),length:c.length},a&&0<a.length&&a.forEach(function(t){for(var e=t.offset,n=e+t.length,r=e;r<n;r+=1)0===t.style.indexOf(\"color-\")?u.COLOR[r]=t.style.substring(6):0===t.style.indexOf(\"bgcolor-\")?u.BGCOLOR[r]=t.style.substring(8):0===t.style.indexOf(\"fontsize-\")?u.FONTSIZE[r]=t.style.substring(9):0===t.style.indexOf(\"fontfamily-\")?u.FONTFAMILY[r]=t.style.substring(11):u[t.style]&&(u[t.style][r]=!0)}),u),O=n;O<r;O+=1)O!==n&&d(l,e,O)?(s.text.push(f[O]),s.end=O+1):(s={styles:p(l,O),text:[f[O]],start:O,end:O+1},i.push(s));return i}function g(t,e){return\"BOLD\"===t?\"**\".concat(e,\"**\"):\"ITALIC\"===t?\"*\".concat(e,\"*\"):\"UNDERLINE\"===t?\"__\".concat(e,\"__\"):\"STRIKETHROUGH\"===t?\"~~\".concat(e,\"~~\"):\"CODE\"===t?\"`\".concat(e,\"`\"):\"SUPERSCRIPT\"===t?\"<sup>\".concat(e,\"</sup>\"):\"SUBSCRIPT\"===t?\"<sub>\".concat(e,\"</sub>\"):e}function T(t){var e,n=t.styles,r=t.text,o=(e=r)&&0<e.length?e.map(function(t){switch(t){case\"\\n\":return\"\\\\s\\\\s\\n\";case\"&\":return\"&amp;\";case\"<\":return\"&lt;\";case\">\":return\"&gt;\";default:return t}}).join(\"\"):\"\";if(n&&(n.COLOR||n.BGCOLOR||n.FONTSIZE||n.FONTFAMILY)){var c='style=\"';return n.COLOR&&(c+=\"color: \".concat(n.COLOR,\";\")),n.BGCOLOR&&(c+=\"background-color: \".concat(n.BGCOLOR,\";\")),n.FONTSIZE&&(c+=\"font-size: \".concat(n.FONTSIZE,\"px;\")),n.FONTFAMILY&&(c+=\"font-family: \".concat(n.FONTFAMILY,\";\")),\"<span \".concat(c+='\"',\">\").concat(o,\"</span>\")}return o}function I(c,t,e,n){var r=[],o=h(c,[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"],e.start,e.end),a=\"\";o.forEach(function(t){var e,n,r=h(c,[\"COLOR\",\"BGCOLOR\",\"FONTSIZE\",\"FONTFAMILY\"],t.start,t.end),o=\"\";r.forEach(function(t){o+=T(t)}),a+=(e=t.styles,n=o,i(e,function(t,e){n=g(t,n)}),n)}),r.push(a);var u=r.join(\"\");return\"ENTITY\"===e.type?void 0!==e.entityKey&&null!==e.entityKey&&(u=O(t,e.entityKey,u,n)):\"HASHTAG\"===e.type&&(u=\"[\".concat(u,\"](\").concat(u,\")\")),u}function b(t){if(t){for(var e=t,n=0;n<e.length&&\" \"===t[n];n+=1)e=e.replace(\" \",\"&nbsp;\");return e}return t}function R(t){if(t){for(var e=t,n=e.length-1;0<=n&&\" \"===e[n];--n)e=\"\".concat(e.substring(0,n),\"&nbsp;\").concat(e.substring(n+1));return e}return t}function E(r,o,t,c){if(0<(e=r).entityRanges.length&&(null==(n=e.text)||0===n.length||0===n.trim().length))return O(o,r.entityRanges[0].key,void 0,c);var e,n,a=[],u=y(r,t);return u.forEach(function(t,e){var n=I(r,o,t,c);0===e&&(n=b(n)),e===u.length-1&&(n=R(n)),a.push(n)}),a.join(\"\")}function S(t){var n=\"\";return i(t,function(t,e){n+=\"\".concat(t,\":\").concat(e,\";\")}),n}function v(t,e,n,r,o,c){var a=[];a.push(e[t.type]);var u,i,f,s=E(t,n,r,o);return t.data&&(u=t.data,i=s,s=(f=S(u))?'<span style=\"'.concat(f,'\">').concat(i,\"</span>\"):i),a.push(s),a.push(c&&c.emptyLineBeforeBlock?\"\\n\\n\":\"\\n\"),a.join(\"\")}function r(t,r,o,c){var a=[];if(t){var u=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?f(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},l,{},c&&c.blockTypesMapping&&c.blockTypesMapping),e=t.blocks,i=t.entityMap;e&&0<e.length&&e.forEach(function(t){var e,n=v(t,u,i,r,o,c);\"unordered-list-item\"!==(e=t.type)&&\"ordered-list-item\"!==e||(n=function(t){for(var e=\"\",n=0;n<4*t;n+=1)e+=\" \";return e}(t.depth)+n),a.push(n)})}return a.join(\"\")}}],o.c=r,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=0);function o(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var n,r});","\"use strict\";\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction forwardRef(renderFn, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n  return function getPrototypeOf(it) {\n    return $getPrototypeOf(toObject(it));\n  };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n  return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n  return function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n  };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n  return function seal(it) {\n    return $seal && isObject(it) ? $seal(meta(it)) : it;\n  };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n  return function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n  };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n  return function isFrozen(it) {\n    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n  };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n  return function isSealed(it) {\n    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n  };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n  return function isExtensible(it) {\n    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n  };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n  configurable: true,\n  get: function () {\n    try {\n      return ('' + this).match(nameRE)[1];\n    } catch (e) {\n      return '';\n    }\n  }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n  if (typeof this != 'function' || !isObject(O)) return false;\n  if (!isObject(this.prototype)) return O instanceof this;\n  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n  return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n  var i = -1;\n  var c2 = c;\n  while (++i < 6) {\n    c2 += n * data[i];\n    data[i] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\nvar divide = function (n) {\n  var i = 6;\n  var c = 0;\n  while (--i >= 0) {\n    c += data[i];\n    data[i] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\nvar numToString = function () {\n  var i = 6;\n  var s = '';\n  while (--i >= 0) {\n    if (s !== '' || i === 0 || data[i] !== 0) {\n      var t = String(data[i]);\n      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n    }\n  } return s;\n};\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n  0.00008.toFixed(3) !== '0.000' ||\n  0.9.toFixed(0) !== '1' ||\n  1.255.toFixed(2) !== '1.25' ||\n  1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n  // V8 ~ Android 4.3-\n  $toFixed.call({});\n})), 'Number', {\n  toFixed: function toFixed(fractionDigits) {\n    var x = aNumberValue(this, ERROR);\n    var f = toInteger(fractionDigits);\n    var s = '';\n    var m = ZERO;\n    var e, z, j, k;\n    if (f < 0 || f > 20) throw RangeError(ERROR);\n    // eslint-disable-next-line no-self-compare\n    if (x != x) return 'NaN';\n    if (x <= -1e21 || x >= 1e21) return String(x);\n    if (x < 0) {\n      s = '-';\n      x = -x;\n    }\n    if (x > 1e-21) {\n      e = log(x * pow(2, 69, 1)) - 69;\n      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(0, z);\n        j = f;\n        while (j >= 7) {\n          multiply(1e7, 0);\n          j -= 7;\n        }\n        multiply(pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(1 << 23);\n          j -= 23;\n        }\n        divide(1 << j);\n        multiply(1, 1);\n        divide(2);\n        m = numToString();\n      } else {\n        multiply(0, z);\n        multiply(1 << -e, 0);\n        m = numToString() + repeat.call(ZERO, f);\n      }\n    }\n    if (f > 0) {\n      k = m.length;\n      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n    } else {\n      m = s + m;\n    } return m;\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n  // IE7-\n  return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n  // V8 ~ Android 4.3-\n  $toPrecision.call({});\n})), 'Number', {\n  toPrecision: function toPrecision(precision) {\n    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n  }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n  isSafeInteger: function isSafeInteger(number) {\n    return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n  }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  && Math.floor($acosh(Number.MAX_VALUE)) == 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  && $acosh(Infinity) == Infinity\n), 'Math', {\n  acosh: function acosh(x) {\n    return (x = +x) < 1 ? NaN : x > 94906265.62425156\n      ? Math.log(x) + Math.LN2\n      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n  }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n  atanh: function atanh(x) {\n    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n  }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n  cbrt: function cbrt(x) {\n    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n  }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  clz32: function clz32(x) {\n    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n  }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n  cosh: function cosh(x) {\n    return (exp(x = +x) + exp(-x)) / 2;\n  }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n  return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n  var $abs = Math.abs(x);\n  var $sign = sign(x);\n  var a, result;\n  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n  a = (1 + EPSILON32 / EPSILON) * $abs;\n  result = a - (a - $abs);\n  // eslint-disable-next-line no-self-compare\n  if (result > MAX32 || result != result) return $sign * Infinity;\n  return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n  }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n  imul: function imul(x, y) {\n    var UINT16 = 0xffff;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log10: function log10(x) {\n    return Math.log(x) * Math.LOG10E;\n  }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log2: function log2(x) {\n    return Math.log(x) / Math.LN2;\n  }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n  return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n  sinh: function sinh(x) {\n    return Math.abs(x = +x) < 1\n      ? (expm1(x) - expm1(-x)) / 2\n      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n  }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n  tanh: function tanh(x) {\n    var a = expm1(x = +x);\n    var b = expm1(-x);\n    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n  }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  trunc: function trunc(it) {\n    return (it > 0 ? Math.floor : Math.ceil)(it);\n  }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n  // 21.1.2.2 String.fromCodePoint(...codePoints)\n  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n    var res = [];\n    var aLen = arguments.length;\n    var i = 0;\n    var code;\n    while (aLen > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n      res.push(code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n      );\n    } return res.join('');\n  }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n  // 21.1.2.4 String.raw(callSite, ...substitutions)\n  raw: function raw(callSite) {\n    var tpl = toIObject(callSite.raw);\n    var len = toLength(tpl.length);\n    var aLen = arguments.length;\n    var res = [];\n    var i = 0;\n    while (len > i) {\n      res.push(String(tpl[i++]));\n      if (i < aLen) res.push(String(arguments[i]));\n    } return res.join('');\n  }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n  return function trim() {\n    return $trim(this, 3);\n  };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n  // 21.1.3.3 String.prototype.codePointAt(pos)\n  codePointAt: function codePointAt(pos) {\n    return $at(this, pos);\n  }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = context(this, searchString, ENDS_WITH);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = toLength(that.length);\n    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n    var search = String(searchString);\n    return $endsWith\n      ? $endsWith.call(that, search, end)\n      : that.slice(end - search.length, end) === search;\n  }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n  // 21.1.3.13 String.prototype.repeat(count)\n  repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n  return function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n  return function big() {\n    return createHTML(this, 'big', '', '');\n  };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n  return function blink() {\n    return createHTML(this, 'blink', '', '');\n  };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n  return function bold() {\n    return createHTML(this, 'b', '', '');\n  };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n  return function fixed() {\n    return createHTML(this, 'tt', '', '');\n  };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n  return function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n  return function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n  return function italics() {\n    return createHTML(this, 'i', '', '');\n  };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n  return function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n  return function small() {\n    return createHTML(this, 'small', '', '');\n  };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n  return function strike() {\n    return createHTML(this, 'strike', '', '');\n  };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n  return function sub() {\n    return createHTML(this, 'sub', '', '');\n  };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n  return function sup() {\n    return createHTML(this, 'sup', '', '');\n  };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n  // eslint-disable-next-line no-unused-vars\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O);\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n  toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n  return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n  var d = this;\n  var y = d.getUTCFullYear();\n  var m = d.getUTCMilliseconds();\n  var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n  require('./_redefine')(DateProto, TO_STRING, function toString() {\n    var value = getTime.call(this);\n    // eslint-disable-next-line no-self-compare\n    return value === value ? $toString.call(this) : INVALID_DATE;\n  });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n  if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n  return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n  function F() { /* empty */ }\n  return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n  // 22.1.2.3 Array.of( ...items)\n  of: function of(/* ...args */) {\n    var index = 0;\n    var aLen = arguments.length;\n    var result = new (typeof this == 'function' ? this : Array)(aLen);\n    while (aLen > index) createProperty(result, index, arguments[index++]);\n    result.length = aLen;\n    return result;\n  }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n  join: function join(separator) {\n    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n  if (html) arraySlice.call(html);\n}), 'Array', {\n  slice: function slice(begin, end) {\n    var len = toLength(this.length);\n    var klass = cof(this);\n    end = end === undefined ? len : end;\n    if (klass == 'Array') return arraySlice.call(this, begin, end);\n    var start = toAbsoluteIndex(begin, len);\n    var upTo = toAbsoluteIndex(end, len);\n    var size = toLength(upTo - start);\n    var cloned = new Array(size);\n    var i = 0;\n    for (; i < size; i++) cloned[i] = klass == 'String'\n      ? this.charAt(start + i)\n      : this[start + i];\n    return cloned;\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n  forEach: function forEach(callbackfn /* , thisArg */) {\n    return $forEach(this, callbackfn, arguments[1]);\n  }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments[1]);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? $native.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments[1]);\n  }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n  lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n    // convert -0 to +0\n    if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n    var O = toIObject(this);\n    var length = toLength(O.length);\n    var index = length - 1;\n    if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n    if (index < 0) index = length + index;\n    for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n    return -1;\n  }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n  re2[require('./_wks')('match')] = false;\n  // RegExp constructor can alter flags and IsRegExp works correct with @@match\n  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n  $RegExp = function RegExp(p, f) {\n    var tiRE = this instanceof $RegExp;\n    var piRE = isRegExp(p);\n    var fiU = f === undefined;\n    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n      : inheritIfRequired(CORRECT_NEW\n        ? new Base(piRE && !fiU ? p.source : p, f)\n        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n      , tiRE ? this : proto, $RegExp);\n  };\n  var proxy = function (key) {\n    key in $RegExp || dP($RegExp, key, {\n      configurable: true,\n      get: function () { return Base[key]; },\n      set: function (it) { Base[key] = it; }\n    });\n  };\n  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n  proto.constructor = $RegExp;\n  $RegExp.prototype = proto;\n  require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n  require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n  define(function toString() {\n    var R = anObject(this);\n    return '/'.concat(R.source, '/',\n      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n  });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n  define(function toString() {\n    return $toString.call(this);\n  });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[SEARCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative($search, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n    ''[$SPLIT](/.?/)[LENGTH]\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(this);\n      if (separator === undefined && limit === 0) return [];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) return $split.call(string, separator, limit);\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy[LAST_INDEX];\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n          lastLength = match[0][LENGTH];\n          lastLastIndex = lastIndex;\n          if (output[LENGTH] >= splitLimit) break;\n        }\n        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string[LENGTH]) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n    };\n  // Chakra, V8\n  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n    };\n  } else {\n    internalSplit = $split;\n  }\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = defined(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (SUPPORTS_Y ? 'y' : 'g');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = SUPPORTS_Y ? q : 0;\n        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n        var e;\n        if (\n          z === null ||\n          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.2.3.1 Set.prototype.add(value)\n  add: function add(value) {\n    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n  }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\n\nvar methods = {\n  // 23.3.3.3 WeakMap.prototype.get(key)\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  // 23.3.3.5 WeakMap.prototype.set(key, value)\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      // store frozen objects on internal weakmap shim\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      // store all the rest on native weakmap\n      } return method.call(this, a, b);\n    });\n  });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.4.3.1 WeakSet.prototype.add(value)\n  add: function add(value) {\n    return weak.def(validate(this, WEAK_SET), value, true);\n  }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n  // 24.1.3.1 ArrayBuffer.isView(arg)\n  isView: function isView(it) {\n    return $isView && $isView(it) || isObject(it) && VIEW in it;\n  }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n  slice: function slice(start, end) {\n    if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n    var len = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, len);\n    var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n    var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n    var viewS = new $DataView(this);\n    var viewT = new $DataView(result);\n    var index = 0;\n    while (first < fin) {\n      viewT.setUint8(index++, viewS.getUint8(first++));\n    } return result;\n  }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n  DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n  rApply(function () { /* empty */ });\n}), 'Reflect', {\n  apply: function apply(target, thisArgument, argumentsList) {\n    var T = aFunction(target);\n    var L = anObject(argumentsList);\n    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n  }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n  rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n  construct: function construct(Target, args /* , newTarget */) {\n    aFunction(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      $args.push.apply($args, args);\n      return new (bind.apply(Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : Object.prototype);\n    var result = Function.apply.call(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n  // eslint-disable-next-line no-undef\n  Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    propertyKey = toPrimitive(propertyKey, true);\n    anObject(attributes);\n    try {\n      dP.f(target, propertyKey, attributes);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var desc = gOPD(anObject(target), propertyKey);\n    return desc && !desc.configurable ? false : delete target[propertyKey];\n  }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n  this._t = anObject(iterated); // target\n  this._i = 0;                  // next index\n  var keys = this._k = [];      // keys\n  var key;\n  for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n  var that = this;\n  var keys = that._k;\n  var key;\n  do {\n    if (that._i >= keys.length) return { value: undefined, done: true };\n  } while (!((key = keys[that._i++]) in that._t));\n  return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n  enumerate: function enumerate(target) {\n    return new Enumerate(target);\n  }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var desc, proto;\n  if (anObject(target) === receiver) return target[propertyKey];\n  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n    ? desc.value\n    : desc.get !== undefined\n      ? desc.get.call(receiver)\n      : undefined;\n  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return gOPD.f(anObject(target), propertyKey);\n  }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return getProto(anObject(target));\n  }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible ? $isExtensible(target) : true;\n  }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      if ($preventExtensions) $preventExtensions(target);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDesc = gOPD.f(anObject(target), propertyKey);\n  var existingDescriptor, proto;\n  if (!ownDesc) {\n    if (isObject(proto = getPrototypeOf(target))) {\n      return set(proto, propertyKey, V, receiver);\n    }\n    ownDesc = createDesc(0);\n  }\n  if (has(ownDesc, 'value')) {\n    if (ownDesc.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      dP.f(receiver, propertyKey, existingDescriptor);\n    } else dP.f(receiver, propertyKey, createDesc(0, V));\n    return true;\n  }\n  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    setProto.check(target, proto);\n    try {\n      setProto.set(target, proto);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen, A;\n    aFunction(callbackfn);\n    sourceLen = toLength(O.length);\n    A = arraySpeciesCreate(O, 0);\n    flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n    return A;\n  }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n  var element, spreadable;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      spreadable = false;\n      if (isObject(element)) {\n        spreadable = element[IS_CONCAT_SPREADABLE];\n        spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n      }\n\n      if (spreadable && depth > 0) {\n        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n      } else {\n        if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n  }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n  }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n  return function trimLeft() {\n    return $trim(this, 1);\n  };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n  return function trimRight() {\n    return $trim(this, 2);\n  };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n  entries: function entries(it) {\n    return $entries(it);\n  }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n  return function (fn, time /* , ...args */) {\n    var boundArgs = arguments.length > 2;\n    var args = boundArgs ? slice.call(arguments, 2) : false;\n    return set(boundArgs ? function () {\n      // eslint-disable-next-line no-new-func\n      (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n    } : fn, time);\n  };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n  setTimeout: wrap(global.setTimeout),\n  setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n  setImmediate: $task.set,\n  clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.NotificationsSystem = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _helpers = require(\"../helpers\");\n\nvar _NotificationsContainer = _interopRequireDefault(require(\"./NotificationsContainer\"));\n\nvar _constants = require(\"../constants\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _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\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar NotificationsSystem =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(NotificationsSystem, _Component);\n\n  function NotificationsSystem() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, NotificationsSystem);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(NotificationsSystem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n    _this.state = {\n      windowWidth: window.innerWidth\n    };\n\n    _this._updateWindowWidth = function () {\n      _this.setState({\n        windowWidth: window.innerWidth\n      });\n    };\n\n    _this._renderNotificationsContainers = function () {\n      var _this$props = _this.props,\n          theme = _this$props.theme,\n          filter = _this$props.filter;\n      var windowWidth = _this.state.windowWidth;\n      var positions = (0, _helpers.mapObjectValues)(_constants.POSITIONS);\n      var containers = [];\n      var notifications = _this.props.notifications;\n\n      if (typeof filter === 'function') {\n        notifications = notifications.filter(filter);\n      } // render all notifications in the same container at the top for small screens\n\n\n      if (windowWidth < theme.smallScreenMin) {\n        return _react[\"default\"].createElement(_NotificationsContainer[\"default\"], {\n          key: theme.smallScreenPosition || _constants.POSITIONS.top,\n          position: theme.smallScreenPosition || _constants.POSITIONS.top,\n          theme: theme,\n          notifications: notifications\n        });\n      }\n\n      containers.push(positions.map(function (position) {\n        var notifs = notifications.filter(function (notif) {\n          return position === notif.position;\n        });\n        return _react[\"default\"].createElement(_NotificationsContainer[\"default\"], {\n          key: position,\n          position: position,\n          theme: theme,\n          notifications: notifs\n        });\n      }));\n      return containers;\n    };\n\n    return _this;\n  }\n\n  _createClass(NotificationsSystem, [{\n    key: \"componentDidMount\",\n\n    /**\n     * Add resize listener to update window width when the window is resized\n     * @returns {void}\n     */\n    value: function componentDidMount() {\n      window.addEventListener('resize', this._updateWindowWidth);\n    }\n    /**\n     * Remove resize listener\n     * @returns {void}\n     */\n\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      window.removeEventListener('resize', this._updateWindowWidth);\n    }\n    /**\n     * Update window width\n     * @returns {void}\n     * @private\n     */\n\n  }, {\n    key: \"render\",\n\n    /**\n     * Render\n     * @returns {XML}\n     */\n    value: function render() {\n      var className = this.props.theme.notificationsSystem.className;\n      return _react[\"default\"].createElement(\"div\", {\n        className: className\n      }, this._renderNotificationsContainers());\n    }\n  }]);\n\n  return NotificationsSystem;\n}(_react.Component);\n/**\n * Map state to props\n * @param {Object} state\n * @returns {{notifications: {Array}}}\n */\n\n\nexports.NotificationsSystem = NotificationsSystem;\nNotificationsSystem.propTypes = {\n  notifications: _propTypes[\"default\"].array.isRequired,\n  filter: _propTypes[\"default\"].func,\n  theme: _propTypes[\"default\"].shape({\n    smallScreenMin: _propTypes[\"default\"].number.isRequired,\n    smallScreenPosition: _propTypes[\"default\"].oneOf([_constants.POSITIONS.top, _constants.POSITIONS.bottom]),\n    notificationsSystem: _propTypes[\"default\"].shape({\n      className: _propTypes[\"default\"].string\n    })\n  }).isRequired\n};\nNotificationsSystem.defaultProps = {\n  notifications: []\n};\n\nfunction mapStateToProps(state) {\n  return {\n    notifications: state.notifications\n  };\n}\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps)(NotificationsSystem);\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.NotificationsContainer = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"react-transition-group/TransitionGroup\"));\n\nvar _CSSTransition = _interopRequireDefault(require(\"react-transition-group/CSSTransition\"));\n\nvar _Notification = _interopRequireDefault(require(\"./Notification\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _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\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar NotificationsContainer =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(NotificationsContainer, _Component);\n\n  function NotificationsContainer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, NotificationsContainer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(NotificationsContainer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _this._renderNotifications = function () {\n      var position = _this.props.position;\n      var className = _this.props.theme.notification.className;\n      var _this$props$theme$not = _this.props.theme.notificationsContainer.transition,\n          name = _this$props$theme$not.name,\n          enterTimeout = _this$props$theme$not.enterTimeout,\n          leaveTimeout = _this$props$theme$not.leaveTimeout;\n      var notifications = _this.props.notifications; // when notifications are displayed at the bottom,\n      // we display notifications from bottom to top\n\n      if (position.startsWith('b')) {\n        notifications = notifications.reverse();\n      }\n\n      return notifications.map(function (notification) {\n        return _react[\"default\"].createElement(_CSSTransition[\"default\"], {\n          key: notification.id,\n          classNames: {\n            enter: name.enter,\n            exit: name.leave\n          },\n          timeout: {\n            enter: enterTimeout,\n            exit: leaveTimeout\n          }\n        }, _react[\"default\"].createElement(_Notification[\"default\"], {\n          key: notification.id,\n          notification: notification,\n          className: className\n        }));\n      });\n    };\n\n    return _this;\n  }\n\n  _createClass(NotificationsContainer, [{\n    key: \"render\",\n\n    /**\n     * Render\n     * @returns {XML}\n     */\n    value: function render() {\n      var className = this.props.theme.notificationsContainer.className;\n      var position = this.props.position;\n      return _react[\"default\"].createElement(\"div\", {\n        className: \"\".concat(className.main, \" \").concat(className.position(position))\n      }, _react[\"default\"].createElement(_TransitionGroup[\"default\"], null, this._renderNotifications()));\n    }\n  }]);\n\n  return NotificationsContainer;\n}(_react.Component);\n\nexports.NotificationsContainer = NotificationsContainer;\nNotificationsContainer.propTypes = {\n  notifications: _propTypes[\"default\"].array.isRequired,\n  position: _propTypes[\"default\"].string.isRequired,\n  theme: _propTypes[\"default\"].shape({\n    notificationsContainer: _propTypes[\"default\"].shape({\n      className: _propTypes[\"default\"].shape({\n        main: _propTypes[\"default\"].string.isRequired,\n        position: _propTypes[\"default\"].func.isRequired\n      }).isRequired,\n      transition: _propTypes[\"default\"].shape({\n        name: _propTypes[\"default\"].object.isRequired,\n        enterTimeout: _propTypes[\"default\"].number.isRequired,\n        leaveTimeout: _propTypes[\"default\"].number.isRequired\n      }).isRequired\n    }).isRequired,\n    notification: _propTypes[\"default\"].shape({\n      className: _propTypes[\"default\"].object.isRequired\n    }).isRequired\n  }).isRequired\n};\nNotificationsContainer.defaultProps = {\n  notifications: []\n};\nvar _default = NotificationsContainer;\nexports[\"default\"] = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0, _react.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0, _react.isValidElement)(child)) return;\n    var hasPrev = key in prevChildMapping;\n    var hasNext = key in nextChildMapping;\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.Notification = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _helpers = require(\"../helpers\");\n\nvar _notifications = require(\"../store/notifications\");\n\nvar _constants = require(\"../constants\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _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\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction createTimer(dismissAfter, callback) {\n  if (dismissAfter > 0) {\n    return new _helpers.Timer(dismissAfter, callback);\n  }\n\n  return null;\n}\n\nvar Notification =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(Notification, _Component);\n\n  /**\n   * Init timer\n   * @param {Object} props\n   * @returns {void}\n   */\n  function Notification(props) {\n    var _this;\n\n    _classCallCheck(this, Notification);\n\n    var dismissAfter = props.notification.dismissAfter;\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Notification).call(this, props));\n\n    _this._remove = function () {\n      var _this$props = _this.props,\n          removeNotification = _this$props.removeNotification,\n          id = _this$props.notification.id;\n      removeNotification(id);\n    };\n\n    _this._pauseTimer = function () {\n      var timer = _this.state.timer;\n      timer.pause();\n    };\n\n    _this._resumeTimer = function () {\n      var timer = _this.state.timer;\n      timer.resume();\n    };\n\n    _this._setHTML = function (content) {\n      return {\n        __html: content\n      };\n    };\n\n    _this._renderButtons = function () {\n      var _this$props2 = _this.props,\n          className = _this$props2.className,\n          buttons = _this$props2.notification.buttons;\n      return buttons.map(function (_ref) {\n        var name = _ref.name,\n            onClick = _ref.onClick,\n            primary = _ref.primary;\n        return _react[\"default\"].createElement(\"button\", {\n          key: name,\n          className: className.button,\n          onClick: onClick\n        }, _react[\"default\"].createElement(\"span\", {\n          className: className.buttonText\n        }, primary ? _react[\"default\"].createElement(\"b\", null, name) : name));\n      });\n    };\n\n    _this.state = {\n      timer: createTimer(dismissAfter, _this._remove)\n    };\n    return _this;\n  }\n  /**\n   * Run `onAdd` callback function when component is mounted\n   * @returns {void}\n   */\n\n\n  _createClass(Notification, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var onAdd = this.props.notification.onAdd;\n\n      if (typeof onAdd === 'function') {\n        onAdd();\n      }\n    }\n    /**\n     * Run `onRemove` callback function when component will unmount\n     * @returns {void}\n     */\n\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var onRemove = this.props.notification.onRemove;\n\n      if (typeof onRemove === 'function') {\n        onRemove();\n      }\n    }\n    /**\n     * Update timer\n     * @param {Object} nextProps\n     * @returns {void}\n     */\n\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      var dismissAfter = nextProps.notification.dismissAfter;\n      this.setState({\n        timer: createTimer(dismissAfter, this._remove)\n      });\n    }\n    /**\n     * Remove the notification\n     * @private\n     * @returns {void}\n     */\n\n  }, {\n    key: \"render\",\n\n    /**\n     * Render\n     * @returns {XML}\n     */\n    value: function render() {\n      var _this$props3 = this.props,\n          className = _this$props3.className,\n          _this$props3$notifica = _this$props3.notification,\n          title = _this$props3$notifica.title,\n          message = _this$props3$notifica.message,\n          status = _this$props3$notifica.status,\n          dismissible = _this$props3$notifica.dismissible,\n          closeButton = _this$props3$notifica.closeButton,\n          buttons = _this$props3$notifica.buttons,\n          image = _this$props3$notifica.image,\n          allowHTML = _this$props3$notifica.allowHTML;\n      var timer = this.state.timer;\n      var notificationClass = [className.main, className.status(status), className.buttons(buttons.length), dismissible && !closeButton ? className.dismissible : null].join(' ');\n\n      if (timer) {\n        this._resumeTimer();\n      }\n\n      return _react[\"default\"].createElement(\"div\", {\n        className: className.wrapper,\n        onClick: dismissible && !closeButton ? this._remove : null,\n        onMouseEnter: timer ? this._pauseTimer : null,\n        onMouseLeave: timer ? this._resumeTimer : null\n      }, _react[\"default\"].createElement(\"div\", {\n        className: notificationClass\n      }, image ? _react[\"default\"].createElement(\"div\", {\n        className: className.imageContainer\n      }, _react[\"default\"].createElement(\"span\", {\n        className: className.image,\n        style: {\n          backgroundImage: \"url(\".concat(image, \")\")\n        }\n      })) : _react[\"default\"].createElement(\"span\", {\n        className: className.icon\n      }), _react[\"default\"].createElement(\"div\", {\n        className: className.meta\n      }, title ? allowHTML ? _react[\"default\"].createElement(\"h4\", {\n        className: className.title,\n        dangerouslySetInnerHTML: this._setHTML(title)\n      }) : _react[\"default\"].createElement(\"h4\", {\n        className: className.title\n      }, title) : null, message ? allowHTML ? _react[\"default\"].createElement(\"p\", {\n        className: className.message,\n        dangerouslySetInnerHTML: this._setHTML(message)\n      }) : _react[\"default\"].createElement(\"p\", {\n        className: className.message\n      }, message) : null), dismissible && closeButton ? _react[\"default\"].createElement(\"div\", {\n        className: className.closeButtonContainer\n      }, _react[\"default\"].createElement(\"span\", {\n        className: className.closeButton,\n        onClick: this._remove\n      })) : null, buttons.length ? _react[\"default\"].createElement(\"div\", {\n        className: className.buttons(),\n        onClick: this._remove\n      }, this._renderButtons()) : null));\n    }\n  }]);\n\n  return Notification;\n}(_react.Component);\n\nexports.Notification = Notification;\nNotification.propTypes = {\n  className: _propTypes[\"default\"].shape({\n    main: _propTypes[\"default\"].string.isRequired,\n    wrapper: _propTypes[\"default\"].string.isRequired,\n    meta: _propTypes[\"default\"].string.isRequired,\n    title: _propTypes[\"default\"].string.isRequired,\n    message: _propTypes[\"default\"].string.isRequired,\n    imageContainer: _propTypes[\"default\"].string.isRequired,\n    image: _propTypes[\"default\"].string.isRequired,\n    icon: _propTypes[\"default\"].string.isRequired,\n    status: _propTypes[\"default\"].func.isRequired,\n    dismissible: _propTypes[\"default\"].string.isRequired,\n    closeButtonContainer: _propTypes[\"default\"].string.isRequired,\n    closeButton: _propTypes[\"default\"].string.isRequired,\n    buttons: _propTypes[\"default\"].func.isRequired,\n    button: _propTypes[\"default\"].string.isRequired,\n    buttonText: _propTypes[\"default\"].string.isRequired\n  }).isRequired,\n  notification: _propTypes[\"default\"].shape({\n    id: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]).isRequired,\n    title: _propTypes[\"default\"].string,\n    message: _propTypes[\"default\"].string,\n    image: _propTypes[\"default\"].string,\n    status: _propTypes[\"default\"].string.isRequired,\n    position: _propTypes[\"default\"].oneOf((0, _helpers.mapObjectValues)(_constants.POSITIONS)),\n    dismissAfter: _propTypes[\"default\"].number.isRequired,\n    dismissible: _propTypes[\"default\"].bool.isRequired,\n    onAdd: _propTypes[\"default\"].func,\n    onRemove: _propTypes[\"default\"].func,\n    closeButton: _propTypes[\"default\"].bool.isRequired,\n    buttons: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].shape({\n      name: _propTypes[\"default\"].string.isRequired,\n      onClick: _propTypes[\"default\"].func\n    })).isRequired,\n    allowHTML: _propTypes[\"default\"].bool.isRequired\n  }).isRequired,\n  removeNotification: _propTypes[\"default\"].func.isRequired\n};\n\nvar _default = (0, _reactRedux.connect)(null, {\n  removeNotification: _notifications.removeNotification\n})(Notification);\n\nexports[\"default\"] = _default;","'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(format, subs) {\n    var index = 0;\n    var message =\n      'Warning: ' +\n      (subs.length > 0\n        ? format.replace(/%s/g, function() {\n            return subs[index++];\n          })\n        : format);\n\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n\n    try {\n      // --- Welcome to debugging history ---\n      // This error was thrown as a convenience so that you can use the\n      // stack trace to find the callsite that triggered this warning.\n      throw new Error(message);\n    } catch (e) {}\n  };\n}\n\nmodule.exports = function(member) {\n  printWarning(\n    'Please use `require(\"history\").%s` instead of `require(\"history/%s\")`. ' +\n      'Support for the latter will be removed in the next major release.',\n    [member, member]\n  );\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/history.min.js');\n} else {\n  module.exports = require('./cjs/history.js');\n}\n","\"use strict\";function _interopDefault(t){return t&&\"object\"==typeof t&&\"default\"in t?t.default:t}Object.defineProperty(exports,\"__esModule\",{value:!0});var resolvePathname=_interopDefault(require(\"resolve-pathname\")),valueEqual=_interopDefault(require(\"value-equal\"));require(\"tiny-warning\");var invariant=_interopDefault(require(\"tiny-invariant\"));function _extends(){return(_extends=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a])}return t}).apply(this,arguments)}function addLeadingSlash(t){return\"/\"===t.charAt(0)?t:\"/\"+t}function stripLeadingSlash(t){return\"/\"===t.charAt(0)?t.substr(1):t}function hasBasename(t,n){return 0===t.toLowerCase().indexOf(n.toLowerCase())&&-1!==\"/?#\".indexOf(t.charAt(n.length))}function stripBasename(t,n){return hasBasename(t,n)?t.substr(n.length):t}function stripTrailingSlash(t){return\"/\"===t.charAt(t.length-1)?t.slice(0,-1):t}function parsePath(t){var n=t||\"/\",e=\"\",a=\"\",r=n.indexOf(\"#\");-1!==r&&(a=n.substr(r),n=n.substr(0,r));var o=n.indexOf(\"?\");return-1!==o&&(e=n.substr(o),n=n.substr(0,o)),{pathname:n,search:\"?\"===e?\"\":e,hash:\"#\"===a?\"\":a}}function createPath(t){var n=t.pathname,e=t.search,a=t.hash,r=n||\"/\";return e&&\"?\"!==e&&(r+=\"?\"===e.charAt(0)?e:\"?\"+e),a&&\"#\"!==a&&(r+=\"#\"===a.charAt(0)?a:\"#\"+a),r}function createLocation(t,n,e,a){var r;\"string\"==typeof t?(r=parsePath(t)).state=n:(void 0===(r=_extends({},t)).pathname&&(r.pathname=\"\"),r.search?\"?\"!==r.search.charAt(0)&&(r.search=\"?\"+r.search):r.search=\"\",r.hash?\"#\"!==r.hash.charAt(0)&&(r.hash=\"#\"+r.hash):r.hash=\"\",void 0!==n&&void 0===r.state&&(r.state=n));try{r.pathname=decodeURI(r.pathname)}catch(t){throw t instanceof URIError?new URIError('Pathname \"'+r.pathname+'\" could not be decoded. This is likely caused by an invalid percent-encoding.'):t}return e&&(r.key=e),a?r.pathname?\"/\"!==r.pathname.charAt(0)&&(r.pathname=resolvePathname(r.pathname,a.pathname)):r.pathname=a.pathname:r.pathname||(r.pathname=\"/\"),r}function locationsAreEqual(t,n){return t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash&&t.key===n.key&&valueEqual(t.state,n.state)}function createTransitionManager(){var o=null;var a=[];return{setPrompt:function(t){return o=t,function(){o===t&&(o=null)}},confirmTransitionTo:function(t,n,e,a){if(null!=o){var r=\"function\"==typeof o?o(t,n):o;\"string\"==typeof r?\"function\"==typeof e?e(r,a):a(!0):a(!1!==r)}else a(!0)},appendListener:function(t){var n=!0;function e(){n&&t.apply(void 0,arguments)}return a.push(e),function(){n=!1,a=a.filter(function(t){return t!==e})}},notifyListeners:function(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];a.forEach(function(t){return t.apply(void 0,n)})}}}var canUseDOM=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);function getConfirmation(t,n){n(window.confirm(t))}function supportsHistory(){var t=window.navigator.userAgent;return(-1===t.indexOf(\"Android 2.\")&&-1===t.indexOf(\"Android 4.0\")||-1===t.indexOf(\"Mobile Safari\")||-1!==t.indexOf(\"Chrome\")||-1!==t.indexOf(\"Windows Phone\"))&&(window.history&&\"pushState\"in window.history)}function supportsPopStateOnHashChange(){return-1===window.navigator.userAgent.indexOf(\"Trident\")}function supportsGoWithoutReloadUsingHash(){return-1===window.navigator.userAgent.indexOf(\"Firefox\")}function isExtraneousPopstateEvent(t){return void 0===t.state&&-1===navigator.userAgent.indexOf(\"CriOS\")}var PopStateEvent=\"popstate\",HashChangeEvent=\"hashchange\";function getHistoryState(){try{return window.history.state||{}}catch(t){return{}}}function createBrowserHistory(t){void 0===t&&(t={}),canUseDOM||invariant(!1);var s=window.history,c=supportsHistory(),n=!supportsPopStateOnHashChange(),e=t,a=e.forceRefresh,h=void 0!==a&&a,r=e.getUserConfirmation,u=void 0===r?getConfirmation:r,o=e.keyLength,i=void 0===o?6:o,f=t.basename?stripTrailingSlash(addLeadingSlash(t.basename)):\"\";function l(t){var n=t||{},e=n.key,a=n.state,r=window.location,o=r.pathname+r.search+r.hash;return f&&(o=stripBasename(o,f)),createLocation(o,a,e)}function d(){return Math.random().toString(36).substr(2,i)}var v=createTransitionManager();function p(t){_extends(T,t),T.length=s.length,v.notifyListeners(T.location,T.action)}function g(t){isExtraneousPopstateEvent(t)||w(l(t.state))}function P(){w(l(getHistoryState()))}var m=!1;function w(n){if(m)m=!1,p();else{v.confirmTransitionTo(n,\"POP\",u,function(t){t?p({action:\"POP\",location:n}):function(t){var n=T.location,e=H.indexOf(n.key);-1===e&&(e=0);var a=H.indexOf(t.key);-1===a&&(a=0);var r=e-a;r&&(m=!0,L(r))}(n)})}}var y=l(getHistoryState()),H=[y.key];function x(t){return f+createPath(t)}function L(t){s.go(t)}var O=0;function E(t){1===(O+=t)&&1===t?(window.addEventListener(PopStateEvent,g),n&&window.addEventListener(HashChangeEvent,P)):0===O&&(window.removeEventListener(PopStateEvent,g),n&&window.removeEventListener(HashChangeEvent,P))}var S=!1;var T={length:s.length,action:\"POP\",location:y,createHref:x,push:function(t,n){var i=createLocation(t,n,d(),T.location);v.confirmTransitionTo(i,\"PUSH\",u,function(t){if(t){var n=x(i),e=i.key,a=i.state;if(c)if(s.pushState({key:e,state:a},null,n),h)window.location.href=n;else{var r=H.indexOf(T.location.key),o=H.slice(0,r+1);o.push(i.key),H=o,p({action:\"PUSH\",location:i})}else window.location.href=n}})},replace:function(t,n){var o=\"REPLACE\",i=createLocation(t,n,d(),T.location);v.confirmTransitionTo(i,o,u,function(t){if(t){var n=x(i),e=i.key,a=i.state;if(c)if(s.replaceState({key:e,state:a},null,n),h)window.location.replace(n);else{var r=H.indexOf(T.location.key);-1!==r&&(H[r]=i.key),p({action:o,location:i})}else window.location.replace(n)}})},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(t){void 0===t&&(t=!1);var n=v.setPrompt(t);return S||(E(1),S=!0),function(){return S&&(S=!1,E(-1)),n()}},listen:function(t){var n=v.appendListener(t);return E(1),function(){E(-1),n()}}};return T}var HashChangeEvent$1=\"hashchange\",HashPathCoders={hashbang:{encodePath:function(t){return\"!\"===t.charAt(0)?t:\"!/\"+stripLeadingSlash(t)},decodePath:function(t){return\"!\"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:stripLeadingSlash,decodePath:addLeadingSlash},slash:{encodePath:addLeadingSlash,decodePath:addLeadingSlash}};function stripHash(t){var n=t.indexOf(\"#\");return-1===n?t:t.slice(0,n)}function getHashPath(){var t=window.location.href,n=t.indexOf(\"#\");return-1===n?\"\":t.substring(n+1)}function pushHashPath(t){window.location.hash=t}function replaceHashPath(t){window.location.replace(stripHash(window.location.href)+\"#\"+t)}function createHashHistory(t){void 0===t&&(t={}),canUseDOM||invariant(!1);var n=window.history,e=(supportsGoWithoutReloadUsingHash(),t),a=e.getUserConfirmation,i=void 0===a?getConfirmation:a,r=e.hashType,o=void 0===r?\"slash\":r,s=t.basename?stripTrailingSlash(addLeadingSlash(t.basename)):\"\",c=HashPathCoders[o],h=c.encodePath,u=c.decodePath;function f(){var t=u(getHashPath());return s&&(t=stripBasename(t,s)),createLocation(t)}var l=createTransitionManager();function d(t){_extends(E,t),E.length=n.length,l.notifyListeners(E.location,E.action)}var v=!1,p=null;function g(){var t=getHashPath(),n=h(t);if(t!==n)replaceHashPath(n);else{var e=f(),a=E.location;if(!v&&function(t,n){return t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash}(a,e))return;if(p===createPath(e))return;p=null,function(n){if(v)v=!1,d();else{l.confirmTransitionTo(n,\"POP\",i,function(t){t?d({action:\"POP\",location:n}):function(t){var n=E.location,e=y.lastIndexOf(createPath(n));-1===e&&(e=0);var a=y.lastIndexOf(createPath(t));-1===a&&(a=0);var r=e-a;r&&(v=!0,H(r))}(n)})}}(e)}}var P=getHashPath(),m=h(P);P!==m&&replaceHashPath(m);var w=f(),y=[createPath(w)];function H(t){n.go(t)}var x=0;function L(t){1===(x+=t)&&1===t?window.addEventListener(HashChangeEvent$1,g):0===x&&window.removeEventListener(HashChangeEvent$1,g)}var O=!1;var E={length:n.length,action:\"POP\",location:w,createHref:function(t){var n=document.querySelector(\"base\"),e=\"\";return n&&n.getAttribute(\"href\")&&(e=stripHash(window.location.href)),e+\"#\"+h(s+createPath(t))},push:function(t,n){var o=createLocation(t,void 0,void 0,E.location);l.confirmTransitionTo(o,\"PUSH\",i,function(t){if(t){var n=createPath(o),e=h(s+n);if(getHashPath()!==e){p=n,pushHashPath(e);var a=y.lastIndexOf(createPath(E.location)),r=y.slice(0,a+1);r.push(n),y=r,d({action:\"PUSH\",location:o})}else d()}})},replace:function(t,n){var r=\"REPLACE\",o=createLocation(t,void 0,void 0,E.location);l.confirmTransitionTo(o,r,i,function(t){if(t){var n=createPath(o),e=h(s+n);getHashPath()!==e&&(p=n,replaceHashPath(e));var a=y.indexOf(createPath(E.location));-1!==a&&(y[a]=n),d({action:r,location:o})}})},go:H,goBack:function(){H(-1)},goForward:function(){H(1)},block:function(t){void 0===t&&(t=!1);var n=l.setPrompt(t);return O||(L(1),O=!0),function(){return O&&(O=!1,L(-1)),n()}},listen:function(t){var n=l.appendListener(t);return L(1),function(){L(-1),n()}}};return E}function clamp(t,n,e){return Math.min(Math.max(t,n),e)}function createMemoryHistory(t){void 0===t&&(t={});var n=t,r=n.getUserConfirmation,e=n.initialEntries,a=void 0===e?[\"/\"]:e,o=n.initialIndex,i=void 0===o?0:o,s=n.keyLength,c=void 0===s?6:s,h=createTransitionManager();function u(t){_extends(g,t),g.length=g.entries.length,h.notifyListeners(g.location,g.action)}function f(){return Math.random().toString(36).substr(2,c)}var l=clamp(i,0,a.length-1),d=a.map(function(t){return createLocation(t,void 0,\"string\"==typeof t?f():t.key||f())}),v=createPath;function p(t){var n=clamp(g.index+t,0,g.entries.length-1),e=g.entries[n];h.confirmTransitionTo(e,\"POP\",r,function(t){t?u({action:\"POP\",location:e,index:n}):u()})}var g={length:d.length,action:\"POP\",location:d[l],index:l,entries:d,createHref:v,push:function(t,n){var a=createLocation(t,n,f(),g.location);h.confirmTransitionTo(a,\"PUSH\",r,function(t){if(t){var n=g.index+1,e=g.entries.slice(0);e.length>n?e.splice(n,e.length-n,a):e.push(a),u({action:\"PUSH\",location:a,index:n,entries:e})}})},replace:function(t,n){var e=\"REPLACE\",a=createLocation(t,n,f(),g.location);h.confirmTransitionTo(a,e,r,function(t){t&&(g.entries[g.index]=a,u({action:e,location:a}))})},go:p,goBack:function(){p(-1)},goForward:function(){p(1)},canGo:function(t){var n=g.index+t;return 0<=n&&n<g.entries.length},block:function(t){return void 0===t&&(t=!1),h.setPrompt(t)},listen:function(t){return h.appendListener(t)}};return g}exports.createBrowserHistory=createBrowserHistory,exports.createHashHistory=createHashHistory,exports.createMemoryHistory=createMemoryHistory,exports.createLocation=createLocation,exports.locationsAreEqual=locationsAreEqual,exports.parsePath=parsePath,exports.createPath=createPath;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var map = {\n\t\"./af\": 205,\n\t\"./af.js\": 205,\n\t\"./ar\": 206,\n\t\"./ar-dz\": 207,\n\t\"./ar-dz.js\": 207,\n\t\"./ar-kw\": 208,\n\t\"./ar-kw.js\": 208,\n\t\"./ar-ly\": 209,\n\t\"./ar-ly.js\": 209,\n\t\"./ar-ma\": 210,\n\t\"./ar-ma.js\": 210,\n\t\"./ar-sa\": 211,\n\t\"./ar-sa.js\": 211,\n\t\"./ar-tn\": 212,\n\t\"./ar-tn.js\": 212,\n\t\"./ar.js\": 206,\n\t\"./az\": 213,\n\t\"./az.js\": 213,\n\t\"./be\": 214,\n\t\"./be.js\": 214,\n\t\"./bg\": 215,\n\t\"./bg.js\": 215,\n\t\"./bm\": 216,\n\t\"./bm.js\": 216,\n\t\"./bn\": 217,\n\t\"./bn.js\": 217,\n\t\"./bo\": 218,\n\t\"./bo.js\": 218,\n\t\"./br\": 219,\n\t\"./br.js\": 219,\n\t\"./bs\": 220,\n\t\"./bs.js\": 220,\n\t\"./ca\": 221,\n\t\"./ca.js\": 221,\n\t\"./cs\": 222,\n\t\"./cs.js\": 222,\n\t\"./cv\": 223,\n\t\"./cv.js\": 223,\n\t\"./cy\": 224,\n\t\"./cy.js\": 224,\n\t\"./da\": 225,\n\t\"./da.js\": 225,\n\t\"./de\": 226,\n\t\"./de-at\": 227,\n\t\"./de-at.js\": 227,\n\t\"./de-ch\": 228,\n\t\"./de-ch.js\": 228,\n\t\"./de.js\": 226,\n\t\"./dv\": 229,\n\t\"./dv.js\": 229,\n\t\"./el\": 230,\n\t\"./el.js\": 230,\n\t\"./en-au\": 231,\n\t\"./en-au.js\": 231,\n\t\"./en-ca\": 232,\n\t\"./en-ca.js\": 232,\n\t\"./en-gb\": 233,\n\t\"./en-gb.js\": 233,\n\t\"./en-ie\": 234,\n\t\"./en-ie.js\": 234,\n\t\"./en-il\": 235,\n\t\"./en-il.js\": 235,\n\t\"./en-in\": 236,\n\t\"./en-in.js\": 236,\n\t\"./en-nz\": 237,\n\t\"./en-nz.js\": 237,\n\t\"./en-sg\": 238,\n\t\"./en-sg.js\": 238,\n\t\"./eo\": 239,\n\t\"./eo.js\": 239,\n\t\"./es\": 240,\n\t\"./es-do\": 241,\n\t\"./es-do.js\": 241,\n\t\"./es-us\": 242,\n\t\"./es-us.js\": 242,\n\t\"./es.js\": 240,\n\t\"./et\": 243,\n\t\"./et.js\": 243,\n\t\"./eu\": 244,\n\t\"./eu.js\": 244,\n\t\"./fa\": 245,\n\t\"./fa.js\": 245,\n\t\"./fi\": 246,\n\t\"./fi.js\": 246,\n\t\"./fil\": 247,\n\t\"./fil.js\": 247,\n\t\"./fo\": 248,\n\t\"./fo.js\": 248,\n\t\"./fr\": 249,\n\t\"./fr-ca\": 250,\n\t\"./fr-ca.js\": 250,\n\t\"./fr-ch\": 251,\n\t\"./fr-ch.js\": 251,\n\t\"./fr.js\": 249,\n\t\"./fy\": 252,\n\t\"./fy.js\": 252,\n\t\"./ga\": 253,\n\t\"./ga.js\": 253,\n\t\"./gd\": 254,\n\t\"./gd.js\": 254,\n\t\"./gl\": 255,\n\t\"./gl.js\": 255,\n\t\"./gom-deva\": 256,\n\t\"./gom-deva.js\": 256,\n\t\"./gom-latn\": 257,\n\t\"./gom-latn.js\": 257,\n\t\"./gu\": 258,\n\t\"./gu.js\": 258,\n\t\"./he\": 259,\n\t\"./he.js\": 259,\n\t\"./hi\": 260,\n\t\"./hi.js\": 260,\n\t\"./hr\": 261,\n\t\"./hr.js\": 261,\n\t\"./hu\": 262,\n\t\"./hu.js\": 262,\n\t\"./hy-am\": 263,\n\t\"./hy-am.js\": 263,\n\t\"./id\": 264,\n\t\"./id.js\": 264,\n\t\"./is\": 265,\n\t\"./is.js\": 265,\n\t\"./it\": 266,\n\t\"./it-ch\": 267,\n\t\"./it-ch.js\": 267,\n\t\"./it.js\": 266,\n\t\"./ja\": 268,\n\t\"./ja.js\": 268,\n\t\"./jv\": 269,\n\t\"./jv.js\": 269,\n\t\"./ka\": 270,\n\t\"./ka.js\": 270,\n\t\"./kk\": 271,\n\t\"./kk.js\": 271,\n\t\"./km\": 272,\n\t\"./km.js\": 272,\n\t\"./kn\": 273,\n\t\"./kn.js\": 273,\n\t\"./ko\": 274,\n\t\"./ko.js\": 274,\n\t\"./ku\": 275,\n\t\"./ku.js\": 275,\n\t\"./ky\": 276,\n\t\"./ky.js\": 276,\n\t\"./lb\": 277,\n\t\"./lb.js\": 277,\n\t\"./lo\": 278,\n\t\"./lo.js\": 278,\n\t\"./lt\": 279,\n\t\"./lt.js\": 279,\n\t\"./lv\": 280,\n\t\"./lv.js\": 280,\n\t\"./me\": 281,\n\t\"./me.js\": 281,\n\t\"./mi\": 282,\n\t\"./mi.js\": 282,\n\t\"./mk\": 283,\n\t\"./mk.js\": 283,\n\t\"./ml\": 284,\n\t\"./ml.js\": 284,\n\t\"./mn\": 285,\n\t\"./mn.js\": 285,\n\t\"./mr\": 286,\n\t\"./mr.js\": 286,\n\t\"./ms\": 287,\n\t\"./ms-my\": 288,\n\t\"./ms-my.js\": 288,\n\t\"./ms.js\": 287,\n\t\"./mt\": 289,\n\t\"./mt.js\": 289,\n\t\"./my\": 290,\n\t\"./my.js\": 290,\n\t\"./nb\": 291,\n\t\"./nb.js\": 291,\n\t\"./ne\": 292,\n\t\"./ne.js\": 292,\n\t\"./nl\": 293,\n\t\"./nl-be\": 294,\n\t\"./nl-be.js\": 294,\n\t\"./nl.js\": 293,\n\t\"./nn\": 295,\n\t\"./nn.js\": 295,\n\t\"./oc-lnc\": 296,\n\t\"./oc-lnc.js\": 296,\n\t\"./pa-in\": 297,\n\t\"./pa-in.js\": 297,\n\t\"./pl\": 298,\n\t\"./pl.js\": 298,\n\t\"./pt\": 299,\n\t\"./pt-br\": 300,\n\t\"./pt-br.js\": 300,\n\t\"./pt.js\": 299,\n\t\"./ro\": 301,\n\t\"./ro.js\": 301,\n\t\"./ru\": 302,\n\t\"./ru.js\": 302,\n\t\"./sd\": 303,\n\t\"./sd.js\": 303,\n\t\"./se\": 304,\n\t\"./se.js\": 304,\n\t\"./si\": 305,\n\t\"./si.js\": 305,\n\t\"./sk\": 306,\n\t\"./sk.js\": 306,\n\t\"./sl\": 307,\n\t\"./sl.js\": 307,\n\t\"./sq\": 308,\n\t\"./sq.js\": 308,\n\t\"./sr\": 309,\n\t\"./sr-cyrl\": 310,\n\t\"./sr-cyrl.js\": 310,\n\t\"./sr.js\": 309,\n\t\"./ss\": 311,\n\t\"./ss.js\": 311,\n\t\"./sv\": 312,\n\t\"./sv.js\": 312,\n\t\"./sw\": 313,\n\t\"./sw.js\": 313,\n\t\"./ta\": 314,\n\t\"./ta.js\": 314,\n\t\"./te\": 315,\n\t\"./te.js\": 315,\n\t\"./tet\": 316,\n\t\"./tet.js\": 316,\n\t\"./tg\": 317,\n\t\"./tg.js\": 317,\n\t\"./th\": 318,\n\t\"./th.js\": 318,\n\t\"./tk\": 319,\n\t\"./tk.js\": 319,\n\t\"./tl-ph\": 320,\n\t\"./tl-ph.js\": 320,\n\t\"./tlh\": 321,\n\t\"./tlh.js\": 321,\n\t\"./tr\": 322,\n\t\"./tr.js\": 322,\n\t\"./tzl\": 323,\n\t\"./tzl.js\": 323,\n\t\"./tzm\": 324,\n\t\"./tzm-latn\": 325,\n\t\"./tzm-latn.js\": 325,\n\t\"./tzm.js\": 324,\n\t\"./ug-cn\": 326,\n\t\"./ug-cn.js\": 326,\n\t\"./uk\": 327,\n\t\"./uk.js\": 327,\n\t\"./ur\": 328,\n\t\"./ur.js\": 328,\n\t\"./uz\": 329,\n\t\"./uz-latn\": 330,\n\t\"./uz-latn.js\": 330,\n\t\"./uz.js\": 329,\n\t\"./vi\": 331,\n\t\"./vi.js\": 331,\n\t\"./x-pseudo\": 332,\n\t\"./x-pseudo.js\": 332,\n\t\"./yo\": 333,\n\t\"./yo.js\": 333,\n\t\"./zh-cn\": 334,\n\t\"./zh-cn.js\": 334,\n\t\"./zh-hk\": 335,\n\t\"./zh-hk.js\": 335,\n\t\"./zh-mo\": 336,\n\t\"./zh-mo.js\": 336,\n\t\"./zh-tw\": 337,\n\t\"./zh-tw.js\": 337\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 613;","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n  var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n  ReactPropTypeLocationNames = {\n    prop: 'prop',\n    context: 'context',\n    childContext: 'child context'\n  };\n} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host components.\n   *\n   * To create a new type of `ReactClass`, pass a specification of\n   * your new class to `React.createClass`. The only requirement of your class\n   * specification is that you implement a `render` method.\n   *\n   *   var MyComponent = React.createClass({\n   *     render: function() {\n   *       return <div>Hello World</div>;\n   *     }\n   *   });\n   *\n   * The class specification supports a specific protocol of methods that have\n   * special meaning (e.g. `render`). See `ReactClassInterface` for\n   * more the comprehensive protocol. Any other properties and methods in the\n   * class specification will be available on the prototype.\n   *\n   * @interface ReactClassInterface\n   * @internal\n   */\n  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: 'DEFINE_MANY',\n\n    /**\n     * An object containing properties and methods that should be defined on\n     * the component's constructor instead of its prototype (static methods).\n     *\n     * @type {object}\n     * @optional\n     */\n    statics: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\n    // ==== Definition methods ====\n\n    /**\n     * Invoked when the component is mounted. Values in the mapping will be set on\n     * `this.props` if that prop is not specified (i.e. using an `in` check).\n     *\n     * This method is invoked before `getInitialState` and therefore cannot rely\n     * on `this.state` or use `this.setState`.\n     *\n     * @return {object}\n     * @optional\n     */\n    getDefaultProps: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Invoked once before the component is mounted. The return value will be used\n     * as the initial value of `this.state`.\n     *\n     *   getInitialState: function() {\n     *     return {\n     *       isOn: false,\n     *       fooBaz: new BazFoo()\n     *     }\n     *   }\n     *\n     * @return {object}\n     * @optional\n     */\n    getInitialState: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Uses props from `this.props` and state from `this.state` to render the\n     * structure of the component.\n     *\n     * No guarantees are made about when or how often this method is invoked, so\n     * it must not have side effects.\n     *\n     *   render: function() {\n     *     var name = this.props.name;\n     *     return <div>Hello, {name}!</div>;\n     *   }\n     *\n     * @return {ReactComponent}\n     * @required\n     */\n    render: 'DEFINE_ONCE',\n\n    // ==== Delegate methods ====\n\n    /**\n     * Invoked when the component is initially created and about to be mounted.\n     * This may have side effects, but any external subscriptions or data created\n     * by this method must be cleaned up in `componentWillUnmount`.\n     *\n     * @optional\n     */\n    componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component has been mounted and has a DOM representation.\n     * However, there is no guarantee that the DOM node is in the document.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been mounted (initialized and rendered) for the first time.\n     *\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked before the component receives new props.\n     *\n     * Use this as an opportunity to react to a prop transition by updating the\n     * state using `this.setState`. Current props are accessed via `this.props`.\n     *\n     *   componentWillReceiveProps: function(nextProps, nextContext) {\n     *     this.setState({\n     *       likesIncreasing: nextProps.likeCount > this.props.likeCount\n     *     });\n     *   }\n     *\n     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n     * transition may cause a state change, but the opposite is not true. If you\n     * need it, you are probably looking for `componentWillUpdate`.\n     *\n     * @param {object} nextProps\n     * @optional\n     */\n    componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Invoked while deciding if the component should be updated as a result of\n     * receiving new props, state and/or context.\n     *\n     * Use this as an opportunity to `return false` when you're certain that the\n     * transition to the new props/state/context will not require a component\n     * update.\n     *\n     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n     *     return !equal(nextProps, this.props) ||\n     *       !equal(nextState, this.state) ||\n     *       !equal(nextContext, this.context);\n     *   }\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @return {boolean} True if the component should update.\n     * @optional\n     */\n    shouldComponentUpdate: 'DEFINE_ONCE',\n\n    /**\n     * Invoked when the component is about to update due to a transition from\n     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n     * and `nextContext`.\n     *\n     * Use this as an opportunity to perform preparation before an update occurs.\n     *\n     * NOTE: You **cannot** use `this.setState()` in this method.\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @param {ReactReconcileTransaction} transaction\n     * @optional\n     */\n    componentWillUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component's DOM representation has been updated.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been updated.\n     *\n     * @param {object} prevProps\n     * @param {?object} prevState\n     * @param {?object} prevContext\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component is about to be removed from its parent and have\n     * its DOM representation destroyed.\n     *\n     * Use this as an opportunity to deallocate any external resources.\n     *\n     * NOTE: There is no `componentDidUnmount` since your component will have been\n     * destroyed by that point.\n     *\n     * @optional\n     */\n    componentWillUnmount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillMount`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillReceiveProps`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillUpdate`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n    // ==== Advanced methods ====\n\n    /**\n     * Updates the component's currently mounted DOM representation.\n     *\n     * By default, this implements React's rendering and reconciliation algorithm.\n     * Sophisticated clients may wish to override this.\n     *\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     * @overridable\n     */\n    updateComponent: 'OVERRIDE_BASE'\n  };\n\n  /**\n   * Similar to ReactClassInterface but for static methods.\n   */\n  var ReactClassStaticInterface = {\n    /**\n     * This method is invoked after a component is instantiated and when it\n     * receives new props. Return an object to update state in response to\n     * prop changes. Return null to indicate no change to state.\n     *\n     * If an object is returned, its keys will be merged into the existing state.\n     *\n     * @return {object || null}\n     * @optional\n     */\n    getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n  };\n\n  /**\n   * Mapping from class specification keys to special processing functions.\n   *\n   * Although these are declared like instance properties in the specification\n   * when defining classes using `React.createClass`, they are actually static\n   * and are accessible on the constructor instead of the prototype. Despite\n   * being static, they must be defined outside of the \"statics\" key under\n   * which all other static methods are defined.\n   */\n  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(Constructor, mixins) {\n      if (mixins) {\n        for (var i = 0; i < mixins.length; i++) {\n          mixSpecIntoComponent(Constructor, mixins[i]);\n        }\n      }\n    },\n    childContextTypes: function(Constructor, childContextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, childContextTypes, 'childContext');\n      }\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, contextTypes, 'context');\n      }\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, propTypes, 'prop');\n      }\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function validateTypeDef(Constructor, typeDef, location) {\n    for (var propName in typeDef) {\n      if (typeDef.hasOwnProperty(propName)) {\n        // use a warning instead of an _invariant so components\n        // don't show up in prod but only in __DEV__\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            typeof typeDef[propName] === 'function',\n            '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n              'React.PropTypes.',\n            Constructor.displayName || 'ReactClass',\n            ReactPropTypeLocationNames[location],\n            propName\n          );\n        }\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (process.env.NODE_ENV !== 'production') {\n        var typeofSpec = typeof spec;\n        var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            isMixinValid,\n            \"%s: You're attempting to include a mixin that is either null \" +\n              'or not an object. Check the mixins included by the component, ' +\n              'as well as any mixins they include themselves. ' +\n              'Expected object but got %s.',\n            Constructor.displayName || 'ReactClass',\n            spec === null ? null : typeofSpec\n          );\n        }\n      }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // By handling mixins before any other properties, we ensure the same\n    // chaining order is applied to methods with DEFINE_MANY policy, whether\n    // mixins are listed before or after these methods in the spec.\n    if (spec.hasOwnProperty(MIXINS_KEY)) {\n      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n    }\n\n    for (var name in spec) {\n      if (!spec.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (name === MIXINS_KEY) {\n        // We have already handled mixins in a special case above.\n        continue;\n      }\n\n      var property = spec[name];\n      var isAlreadyDefined = proto.hasOwnProperty(name);\n      validateMethodOverride(isAlreadyDefined, name);\n\n      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n        RESERVED_SPEC_KEYS[name](Constructor, property);\n      } else {\n        // Setup methods on prototype:\n        // The following member methods should not be automatically bound:\n        // 1. Expected ReactClass methods (in the \"interface\").\n        // 2. Overridden methods (that were mixed in).\n        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n        var isFunction = typeof property === 'function';\n        var shouldAutoBind =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          spec.autobind !== false;\n\n        if (shouldAutoBind) {\n          autoBindPairs.push(name, property);\n          proto[name] = property;\n        } else {\n          if (isAlreadyDefined) {\n            var specPolicy = ReactClassInterface[name];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (process.env.NODE_ENV !== 'production') {\n              // Add verbose displayName to the function, which helps when looking\n              // at profiling tools.\n              if (typeof property === 'function' && spec.displayName) {\n                proto[name].displayName = spec.displayName + '_' + name;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isAlreadyDefined = name in Constructor;\n      if (isAlreadyDefined) {\n        var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n          ? ReactClassStaticInterface[name]\n          : null;\n\n        _invariant(\n          specPolicy === 'DEFINE_MANY_MERGED',\n          'ReactClass: You are attempting to define ' +\n            '`%s` on your component more than once. This conflict may be ' +\n            'due to a mixin.',\n          name\n        );\n\n        Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n        return;\n      }\n\n      Constructor[name] = property;\n    }\n  }\n\n  /**\n   * Merge two objects, but throw if both contain the same key.\n   *\n   * @param {object} one The first object, which is mutated.\n   * @param {object} two The second object\n   * @return {object} one after it has been mutated to contain everything in two.\n   */\n  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\n\n  /**\n   * Creates a function that invokes two functions and merges their return values.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\n  }\n\n  /**\n   * Creates a function that invokes two functions and ignores their return vales.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\n  }\n\n  /**\n   * Binds a method to the component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   * @param {function} method Method to be bound.\n   * @return {function} The bound method.\n   */\n  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (process.env.NODE_ENV !== 'production') {\n      boundMethod.__reactBoundContext = component;\n      boundMethod.__reactBoundMethod = method;\n      boundMethod.__reactBoundArguments = null;\n      var componentName = component.constructor.displayName;\n      var _bind = boundMethod.bind;\n      boundMethod.bind = function(newThis) {\n        for (\n          var _len = arguments.length,\n            args = Array(_len > 1 ? _len - 1 : 0),\n            _key = 1;\n          _key < _len;\n          _key++\n        ) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        // User is trying to bind() an autobound method; we effectively will\n        // ignore the value of \"this\" that the user is trying to use, so\n        // let's warn.\n        if (newThis !== component && newThis !== null) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): React component methods may only be bound to the ' +\n                'component instance. See %s',\n              componentName\n            );\n          }\n        } else if (!args.length) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): You are binding a component method to the component. ' +\n                'React does this for you automatically in a high-performance ' +\n                'way, so you can safely remove this call. See %s',\n              componentName\n            );\n          }\n          return boundMethod;\n        }\n        var reboundMethod = _bind.apply(boundMethod, arguments);\n        reboundMethod.__reactBoundContext = component;\n        reboundMethod.__reactBoundMethod = method;\n        reboundMethod.__reactBoundArguments = args;\n        return reboundMethod;\n      };\n    }\n    return boundMethod;\n  }\n\n  /**\n   * Binds all auto-bound methods in a component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   */\n  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\n    for (var i = 0; i < pairs.length; i += 2) {\n      var autoBindKey = pairs[i];\n      var method = pairs[i + 1];\n      component[autoBindKey] = bindAutoBindMethod(component, method);\n    }\n  }\n\n  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\n  };\n\n  /**\n   * Add more to the ReactClass base class. These are all legacy features and\n   * therefore not already part of the modern ReactComponent.\n   */\n  var ReactClassMixin = {\n    /**\n     * TODO: This will be deprecated because state should always keep a consistent\n     * type signature and the only use case for this, is to avoid that.\n     */\n    replaceState: function(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\n    },\n\n    /**\n     * Checks whether or not this composite component is mounted.\n     * @return {boolean} True if mounted, false otherwise.\n     * @protected\n     * @final\n     */\n    isMounted: function() {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this.__didWarnIsMounted,\n          '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n            'subscriptions and pending requests in componentWillUnmount to ' +\n            'prevent memory leaks.',\n          (this.constructor && this.constructor.displayName) ||\n            this.name ||\n            'Component'\n        );\n        this.__didWarnIsMounted = true;\n      }\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this instanceof Constructor,\n          'Something is calling a React component directly. Use a factory or ' +\n            'JSX instead. See: https://fb.me/react-legacyfactory'\n        );\n      }\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn't have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (process.env.NODE_ENV !== 'production') {\n        // We allow auto-mocks to proceed as if they're returning null.\n        if (\n          initialState === undefined &&\n          this.getInitialState._isMockFunction\n        ) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      // This is a tag to indicate that the use of these method names is ok,\n      // since it's used with createClass. If it's not, then it's likely a\n      // mistake so we'll warn you to use the static property, property\n      // initializer or constructor respectively.\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps.isReactClassApproved = {};\n      }\n      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        !Constructor.prototype.componentShouldUpdate,\n        '%s has a method called ' +\n          'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n          'The name is phrased as a question because the function is ' +\n          'expected to return a value.',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.componentWillRecieveProps,\n        '%s has a method called ' +\n          'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n        '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n          'Did you mean UNSAFE_componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nmodule.exports = invariant;","'use strict';\n\nvar React = require('react'),\n\tcreateClass = require('create-react-class'),\n\tDaysView = require('./DaysView'),\n\tMonthsView = require('./MonthsView'),\n\tYearsView = require('./YearsView'),\n\tTimeView = require('./TimeView')\n\t;\n\nvar CalendarContainer = createClass({\n\tviewComponents: {\n\t\tdays: DaysView,\n\t\tmonths: MonthsView,\n\t\tyears: YearsView,\n\t\ttime: TimeView\n\t},\n\n\trender: function() {\n\t\treturn React.createElement( this.viewComponents[ this.props.view ], this.props.viewProps );\n\t}\n});\n\nmodule.exports = CalendarContainer;\n","'use strict';\n\nvar React = require('react'),\n\tcreateClass = require('create-react-class'),\n\tmoment = require('moment')\n\t;\n\nvar DateTimePickerDays = createClass({\n\trender: function() {\n\t\tvar footer = this.renderFooter(),\n\t\t\tdate = this.props.viewDate,\n\t\t\tlocale = date.localeData(),\n\t\t\ttableChildren\n\t\t\t;\n\n\t\ttableChildren = [\n\t\t\tReact.createElement('thead', { key: 'th' }, [\n\t\t\t\tReact.createElement('tr', { key: 'h' }, [\n\t\t\t\t\tReact.createElement('th', { key: 'p', className: 'rdtPrev', onClick: this.props.subtractTime( 1, 'months' )}, React.createElement('span', {}, '‹' )),\n\t\t\t\t\tReact.createElement('th', { key: 's', className: 'rdtSwitch', onClick: this.props.showView( 'months' ), colSpan: 5, 'data-value': this.props.viewDate.month() }, locale.months( date ) + ' ' + date.year() ),\n\t\t\t\t\tReact.createElement('th', { key: 'n', className: 'rdtNext', onClick: this.props.addTime( 1, 'months' )}, React.createElement('span', {}, '›' ))\n\t\t\t\t]),\n\t\t\t\tReact.createElement('tr', { key: 'd'}, this.getDaysOfWeek( locale ).map( function( day, index ) { return React.createElement('th', { key: day + index, className: 'dow'}, day ); }) )\n\t\t\t]),\n\t\t\tReact.createElement('tbody', { key: 'tb' }, this.renderDays())\n\t\t];\n\n\t\tif ( footer )\n\t\t\ttableChildren.push( footer );\n\n\t\treturn React.createElement('div', { className: 'rdtDays' },\n\t\t\tReact.createElement('table', {}, tableChildren )\n\t\t);\n\t},\n\n\t/**\n\t * Get a list of the days of the week\n\t * depending on the current locale\n\t * @return {array} A list with the shortname of the days\n\t */\n\tgetDaysOfWeek: function( locale ) {\n\t\tvar days = locale._weekdaysMin,\n\t\t\tfirst = locale.firstDayOfWeek(),\n\t\t\tdow = [],\n\t\t\ti = 0\n\t\t\t;\n\n\t\tdays.forEach( function( day ) {\n\t\t\tdow[ (7 + ( i++ ) - first) % 7 ] = day;\n\t\t});\n\n\t\treturn dow;\n\t},\n\n\trenderDays: function() {\n\t\tvar date = this.props.viewDate,\n\t\t\tselected = this.props.selectedDate && this.props.selectedDate.clone(),\n\t\t\tprevMonth = date.clone().subtract( 1, 'months' ),\n\t\t\tcurrentYear = date.year(),\n\t\t\tcurrentMonth = date.month(),\n\t\t\tweeks = [],\n\t\t\tdays = [],\n\t\t\trenderer = this.props.renderDay || this.renderDay,\n\t\t\tisValid = this.props.isValidDate || this.alwaysValidDate,\n\t\t\tclasses, isDisabled, dayProps, currentDate\n\t\t\t;\n\n\t\t// Go to the last week of the previous month\n\t\tprevMonth.date( prevMonth.daysInMonth() ).startOf( 'week' );\n\t\tvar lastDay = prevMonth.clone().add( 42, 'd' );\n\n\t\twhile ( prevMonth.isBefore( lastDay ) ) {\n\t\t\tclasses = 'rdtDay';\n\t\t\tcurrentDate = prevMonth.clone();\n\n\t\t\tif ( ( prevMonth.year() === currentYear && prevMonth.month() < currentMonth ) || ( prevMonth.year() < currentYear ) )\n\t\t\t\tclasses += ' rdtOld';\n\t\t\telse if ( ( prevMonth.year() === currentYear && prevMonth.month() > currentMonth ) || ( prevMonth.year() > currentYear ) )\n\t\t\t\tclasses += ' rdtNew';\n\n\t\t\tif ( selected && prevMonth.isSame( selected, 'day' ) )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tif ( prevMonth.isSame( moment(), 'day' ) )\n\t\t\t\tclasses += ' rdtToday';\n\n\t\t\tisDisabled = !isValid( currentDate, selected );\n\t\t\tif ( isDisabled )\n\t\t\t\tclasses += ' rdtDisabled';\n\n\t\t\tdayProps = {\n\t\t\t\tkey: prevMonth.format( 'M_D' ),\n\t\t\t\t'data-value': prevMonth.date(),\n\t\t\t\tclassName: classes\n\t\t\t};\n\n\t\t\tif ( !isDisabled )\n\t\t\t\tdayProps.onClick = this.updateSelectedDate;\n\n\t\t\tdays.push( renderer( dayProps, currentDate, selected ) );\n\n\t\t\tif ( days.length === 7 ) {\n\t\t\t\tweeks.push( React.createElement('tr', { key: prevMonth.format( 'M_D' )}, days ) );\n\t\t\t\tdays = [];\n\t\t\t}\n\n\t\t\tprevMonth.add( 1, 'd' );\n\t\t}\n\n\t\treturn weeks;\n\t},\n\n\tupdateSelectedDate: function( event ) {\n\t\tthis.props.updateSelectedDate( event, true );\n\t},\n\n\trenderDay: function( props, currentDate ) {\n\t\treturn React.createElement('td',  props, currentDate.date() );\n\t},\n\n\trenderFooter: function() {\n\t\tif ( !this.props.timeFormat )\n\t\t\treturn '';\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\n\t\treturn React.createElement('tfoot', { key: 'tf'},\n\t\t\tReact.createElement('tr', {},\n\t\t\t\tReact.createElement('td', { onClick: this.props.showView( 'time' ), colSpan: 7, className: 'rdtTimeToggle' }, date.format( this.props.timeFormat ))\n\t\t\t)\n\t\t);\n\t},\n\n\talwaysValidDate: function() {\n\t\treturn 1;\n\t}\n});\n\nmodule.exports = DateTimePickerDays;\n","'use strict';\n\nvar React = require('react'),\n\tcreateClass = require('create-react-class')\n;\n\nvar DateTimePickerMonths = createClass({\n\trender: function() {\n\t\treturn React.createElement('div', { className: 'rdtMonths' }, [\n\t\t\tReact.createElement('table', { key: 'a' }, React.createElement('thead', {}, React.createElement('tr', {}, [\n\t\t\t\tReact.createElement('th', { key: 'prev', className: 'rdtPrev', onClick: this.props.subtractTime( 1, 'years' )}, React.createElement('span', {}, '‹' )),\n\t\t\t\tReact.createElement('th', { key: 'year', className: 'rdtSwitch', onClick: this.props.showView( 'years' ), colSpan: 2, 'data-value': this.props.viewDate.year() }, this.props.viewDate.year() ),\n\t\t\t\tReact.createElement('th', { key: 'next', className: 'rdtNext', onClick: this.props.addTime( 1, 'years' )}, React.createElement('span', {}, '›' ))\n\t\t\t]))),\n\t\t\tReact.createElement('table', { key: 'months' }, React.createElement('tbody', { key: 'b' }, this.renderMonths()))\n\t\t]);\n\t},\n\n\trenderMonths: function() {\n\t\tvar date = this.props.selectedDate,\n\t\t\tmonth = this.props.viewDate.month(),\n\t\t\tyear = this.props.viewDate.year(),\n\t\t\trows = [],\n\t\t\ti = 0,\n\t\t\tmonths = [],\n\t\t\trenderer = this.props.renderMonth || this.renderMonth,\n\t\t\tisValid = this.props.isValidDate || this.alwaysValidDate,\n\t\t\tclasses, props, currentMonth, isDisabled, noOfDaysInMonth, daysInMonth, validDay,\n\t\t\t// Date is irrelevant because we're only interested in month\n\t\t\tirrelevantDate = 1\n\t\t\t;\n\n\t\twhile (i < 12) {\n\t\t\tclasses = 'rdtMonth';\n\t\t\tcurrentMonth =\n\t\t\t\tthis.props.viewDate.clone().set({ year: year, month: i, date: irrelevantDate });\n\n\t\t\tnoOfDaysInMonth = currentMonth.endOf( 'month' ).format( 'D' );\n\t\t\tdaysInMonth = Array.from({ length: noOfDaysInMonth }, function( e, i ) {\n\t\t\t\treturn i + 1;\n\t\t\t});\n\n\t\t\tvalidDay = daysInMonth.find(function( d ) {\n\t\t\t\tvar day = currentMonth.clone().set( 'date', d );\n\t\t\t\treturn isValid( day );\n\t\t\t});\n\n\t\t\tisDisabled = ( validDay === undefined );\n\n\t\t\tif ( isDisabled )\n\t\t\t\tclasses += ' rdtDisabled';\n\n\t\t\tif ( date && i === date.month() && year === date.year() )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tprops = {\n\t\t\t\tkey: i,\n\t\t\t\t'data-value': i,\n\t\t\t\tclassName: classes\n\t\t\t};\n\n\t\t\tif ( !isDisabled )\n\t\t\t\tprops.onClick = ( this.props.updateOn === 'months' ?\n\t\t\t\t\tthis.updateSelectedMonth : this.props.setDate( 'month' ) );\n\n\t\t\tmonths.push( renderer( props, i, year, date && date.clone() ) );\n\n\t\t\tif ( months.length === 4 ) {\n\t\t\t\trows.push( React.createElement('tr', { key: month + '_' + rows.length }, months ) );\n\t\t\t\tmonths = [];\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedMonth: function( event ) {\n\t\tthis.props.updateSelectedDate( event );\n\t},\n\n\trenderMonth: function( props, month ) {\n\t\tvar localMoment = this.props.viewDate;\n\t\tvar monthStr = localMoment.localeData().monthsShort( localMoment.month( month ) );\n\t\tvar strLength = 3;\n\t\t// Because some months are up to 5 characters long, we want to\n\t\t// use a fixed string length for consistency\n\t\tvar monthStrFixedLength = monthStr.substring( 0, strLength );\n\t\treturn React.createElement('td', props, capitalize( monthStrFixedLength ) );\n\t},\n\n\talwaysValidDate: function() {\n\t\treturn 1;\n\t},\n});\n\nfunction capitalize( str ) {\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\nmodule.exports = DateTimePickerMonths;\n","'use strict';\n\nvar React = require('react'),\n\tcreateClass = require('create-react-class')\n;\n\nvar DateTimePickerYears = createClass({\n\trender: function() {\n\t\tvar year = parseInt( this.props.viewDate.year() / 10, 10 ) * 10;\n\n\t\treturn React.createElement('div', { className: 'rdtYears' }, [\n\t\t\tReact.createElement('table', { key: 'a' }, React.createElement('thead', {}, React.createElement('tr', {}, [\n\t\t\t\tReact.createElement('th', { key: 'prev', className: 'rdtPrev', onClick: this.props.subtractTime( 10, 'years' )}, React.createElement('span', {}, '‹' )),\n\t\t\t\tReact.createElement('th', { key: 'year', className: 'rdtSwitch', onClick: this.props.showView( 'years' ), colSpan: 2 }, year + '-' + ( year + 9 ) ),\n\t\t\t\tReact.createElement('th', { key: 'next', className: 'rdtNext', onClick: this.props.addTime( 10, 'years' )}, React.createElement('span', {}, '›' ))\n\t\t\t]))),\n\t\t\tReact.createElement('table', { key: 'years' }, React.createElement('tbody',  {}, this.renderYears( year )))\n\t\t]);\n\t},\n\n\trenderYears: function( year ) {\n\t\tvar years = [],\n\t\t\ti = -1,\n\t\t\trows = [],\n\t\t\trenderer = this.props.renderYear || this.renderYear,\n\t\t\tselectedDate = this.props.selectedDate,\n\t\t\tisValid = this.props.isValidDate || this.alwaysValidDate,\n\t\t\tclasses, props, currentYear, isDisabled, noOfDaysInYear, daysInYear, validDay,\n\t\t\t// Month and date are irrelevant here because\n\t\t\t// we're only interested in the year\n\t\t\tirrelevantMonth = 0,\n\t\t\tirrelevantDate = 1\n\t\t\t;\n\n\t\tyear--;\n\t\twhile (i < 11) {\n\t\t\tclasses = 'rdtYear';\n\t\t\tcurrentYear = this.props.viewDate.clone().set(\n\t\t\t\t{ year: year, month: irrelevantMonth, date: irrelevantDate } );\n\n\t\t\t// Not sure what 'rdtOld' is for, commenting out for now as it's not working properly\n\t\t\t// if ( i === -1 | i === 10 )\n\t\t\t\t// classes += ' rdtOld';\n\n\t\t\tnoOfDaysInYear = currentYear.endOf( 'year' ).format( 'DDD' );\n\t\t\tdaysInYear = Array.from({ length: noOfDaysInYear }, function( e, i ) {\n\t\t\t\treturn i + 1;\n\t\t\t});\n\n\t\t\tvalidDay = daysInYear.find(function( d ) {\n\t\t\t\tvar day = currentYear.clone().dayOfYear( d );\n\t\t\t\treturn isValid( day );\n\t\t\t});\n\n\t\t\tisDisabled = ( validDay === undefined );\n\n\t\t\tif ( isDisabled )\n\t\t\t\tclasses += ' rdtDisabled';\n\n\t\t\tif ( selectedDate && selectedDate.year() === year )\n\t\t\t\tclasses += ' rdtActive';\n\n\t\t\tprops = {\n\t\t\t\tkey: year,\n\t\t\t\t'data-value': year,\n\t\t\t\tclassName: classes\n\t\t\t};\n\n\t\t\tif ( !isDisabled )\n\t\t\t\tprops.onClick = ( this.props.updateOn === 'years' ?\n\t\t\t\t\tthis.updateSelectedYear : this.props.setDate('year') );\n\n\t\t\tyears.push( renderer( props, year, selectedDate && selectedDate.clone() ));\n\n\t\t\tif ( years.length === 4 ) {\n\t\t\t\trows.push( React.createElement('tr', { key: i }, years ) );\n\t\t\t\tyears = [];\n\t\t\t}\n\n\t\t\tyear++;\n\t\t\ti++;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tupdateSelectedYear: function( event ) {\n\t\tthis.props.updateSelectedDate( event );\n\t},\n\n\trenderYear: function( props, year ) {\n\t\treturn React.createElement('td',  props, year );\n\t},\n\n\talwaysValidDate: function() {\n\t\treturn 1;\n\t},\n});\n\nmodule.exports = DateTimePickerYears;\n","'use strict';\n\nvar React = require('react'),\n\tcreateClass = require('create-react-class'),\n\tassign = require('object-assign')\n\t;\n\nvar DateTimePickerTime = createClass({\n\tgetInitialState: function() {\n\t\treturn this.calculateState( this.props );\n\t},\n\n\tcalculateState: function( props ) {\n\t\tvar date = props.selectedDate || props.viewDate,\n\t\t\tformat = props.timeFormat,\n\t\t\tcounters = []\n\t\t\t;\n\n\t\tif ( format.toLowerCase().indexOf('h') !== -1 ) {\n\t\t\tcounters.push('hours');\n\t\t\tif ( format.indexOf('m') !== -1 ) {\n\t\t\t\tcounters.push('minutes');\n\t\t\t\tif ( format.indexOf('s') !== -1 ) {\n\t\t\t\t\tcounters.push('seconds');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar hours = date.format( 'H' );\n\n\t\tvar daypart = false;\n\t\tif ( this.state !== null && this.props.timeFormat.toLowerCase().indexOf( ' a' ) !== -1 ) {\n\t\t\tif ( this.props.timeFormat.indexOf( ' A' ) !== -1 ) {\n\t\t\t\tdaypart = ( hours >= 12 ) ? 'PM' : 'AM';\n\t\t\t} else {\n\t\t\t\tdaypart = ( hours >= 12 ) ? 'pm' : 'am';\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\thours: hours,\n\t\t\tminutes: date.format( 'mm' ),\n\t\t\tseconds: date.format( 'ss' ),\n\t\t\tmilliseconds: date.format( 'SSS' ),\n\t\t\tdaypart: daypart,\n\t\t\tcounters: counters\n\t\t};\n\t},\n\n\trenderCounter: function( type ) {\n\t\tif ( type !== 'daypart' ) {\n\t\t\tvar value = this.state[ type ];\n\t\t\tif ( type === 'hours' && this.props.timeFormat.toLowerCase().indexOf( ' a' ) !== -1 ) {\n\t\t\t\tvalue = ( value - 1 ) % 12 + 1;\n\n\t\t\t\tif ( value === 0 ) {\n\t\t\t\t\tvalue = 12;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn React.createElement('div', { key: type, className: 'rdtCounter' }, [\n\t\t\t\tReact.createElement('span', { key: 'up', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'increase', type ), onContextMenu: this.disableContextMenu }, '▲' ),\n\t\t\t\tReact.createElement('div', { key: 'c', className: 'rdtCount' }, value ),\n\t\t\t\tReact.createElement('span', { key: 'do', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'decrease', type ), onContextMenu: this.disableContextMenu }, '▼' )\n\t\t\t]);\n\t\t}\n\t\treturn '';\n\t},\n\n\trenderDayPart: function() {\n\t\treturn React.createElement('div', { key: 'dayPart', className: 'rdtCounter' }, [\n\t\t\tReact.createElement('span', { key: 'up', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'toggleDayPart', 'hours'), onContextMenu: this.disableContextMenu }, '▲' ),\n\t\t\tReact.createElement('div', { key: this.state.daypart, className: 'rdtCount' }, this.state.daypart ),\n\t\t\tReact.createElement('span', { key: 'do', className: 'rdtBtn', onMouseDown: this.onStartClicking( 'toggleDayPart', 'hours'), onContextMenu: this.disableContextMenu }, '▼' )\n\t\t]);\n\t},\n\n\trender: function() {\n\t\tvar me = this,\n\t\t\tcounters = []\n\t\t;\n\n\t\tthis.state.counters.forEach( function( c ) {\n\t\t\tif ( counters.length )\n\t\t\t\tcounters.push( React.createElement('div', { key: 'sep' + counters.length, className: 'rdtCounterSeparator' }, ':' ) );\n\t\t\tcounters.push( me.renderCounter( c ) );\n\t\t});\n\n\t\tif ( this.state.daypart !== false ) {\n\t\t\tcounters.push( me.renderDayPart() );\n\t\t}\n\n\t\tif ( this.state.counters.length === 3 && this.props.timeFormat.indexOf( 'S' ) !== -1 ) {\n\t\t\tcounters.push( React.createElement('div', { className: 'rdtCounterSeparator', key: 'sep5' }, ':' ) );\n\t\t\tcounters.push(\n\t\t\t\tReact.createElement('div', { className: 'rdtCounter rdtMilli', key: 'm' },\n\t\t\t\t\tReact.createElement('input', { value: this.state.milliseconds, type: 'text', onChange: this.updateMilli } )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('div', { className: 'rdtTime' },\n\t\t\tReact.createElement('table', {}, [\n\t\t\t\tthis.renderHeader(),\n\t\t\t\tReact.createElement('tbody', { key: 'b'}, React.createElement('tr', {}, React.createElement('td', {},\n\t\t\t\t\tReact.createElement('div', { className: 'rdtCounters' }, counters )\n\t\t\t\t)))\n\t\t\t])\n\t\t);\n\t},\n\n\tcomponentWillMount: function() {\n\t\tvar me = this;\n\t\tme.timeConstraints = {\n\t\t\thours: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 23,\n\t\t\t\tstep: 1\n\t\t\t},\n\t\t\tminutes: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 59,\n\t\t\t\tstep: 1\n\t\t\t},\n\t\t\tseconds: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 59,\n\t\t\t\tstep: 1\n\t\t\t},\n\t\t\tmilliseconds: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 999,\n\t\t\t\tstep: 1\n\t\t\t}\n\t\t};\n\t\t['hours', 'minutes', 'seconds', 'milliseconds'].forEach( function( type ) {\n\t\t\tassign(me.timeConstraints[ type ], me.props.timeConstraints[ type ]);\n\t\t});\n\t\tthis.setState( this.calculateState( this.props ) );\n\t},\n\n\tcomponentWillReceiveProps: function( nextProps ) {\n\t\tthis.setState( this.calculateState( nextProps ) );\n\t},\n\n\tupdateMilli: function( e ) {\n\t\tvar milli = parseInt( e.target.value, 10 );\n\t\tif ( milli === e.target.value && milli >= 0 && milli < 1000 ) {\n\t\t\tthis.props.setTime( 'milliseconds', milli );\n\t\t\tthis.setState( { milliseconds: milli } );\n\t\t}\n\t},\n\n\trenderHeader: function() {\n\t\tif ( !this.props.dateFormat )\n\t\t\treturn null;\n\n\t\tvar date = this.props.selectedDate || this.props.viewDate;\n\t\treturn React.createElement('thead', { key: 'h' }, React.createElement('tr', {},\n\t\t\tReact.createElement('th', { className: 'rdtSwitch', colSpan: 4, onClick: this.props.showView( 'days' ) }, date.format( this.props.dateFormat ) )\n\t\t));\n\t},\n\n\tonStartClicking: function( action, type ) {\n\t\tvar me = this;\n\n\t\treturn function() {\n\t\t\tvar update = {};\n\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\tme.setState( update );\n\n\t\t\tme.timer = setTimeout( function() {\n\t\t\t\tme.increaseTimer = setInterval( function() {\n\t\t\t\t\tupdate[ type ] = me[ action ]( type );\n\t\t\t\t\tme.setState( update );\n\t\t\t\t}, 70);\n\t\t\t}, 500);\n\n\t\t\tme.mouseUpListener = function() {\n\t\t\t\tclearTimeout( me.timer );\n\t\t\t\tclearInterval( me.increaseTimer );\n\t\t\t\tme.props.setTime( type, me.state[ type ] );\n\t\t\t\tdocument.body.removeEventListener( 'mouseup', me.mouseUpListener );\n\t\t\t\tdocument.body.removeEventListener( 'touchend', me.mouseUpListener );\n\t\t\t};\n\n\t\t\tdocument.body.addEventListener( 'mouseup', me.mouseUpListener );\n\t\t\tdocument.body.addEventListener( 'touchend', me.mouseUpListener );\n\t\t};\n\t},\n\n\tdisableContextMenu: function( event ) {\n\t\tevent.preventDefault();\n\t\treturn false;\n\t},\n\n\tpadValues: {\n\t\thours: 1,\n\t\tminutes: 2,\n\t\tseconds: 2,\n\t\tmilliseconds: 3\n\t},\n\n\ttoggleDayPart: function( type ) { // type is always 'hours'\n\t\tvar value = parseInt( this.state[ type ], 10) + 12;\n\t\tif ( value > this.timeConstraints[ type ].max )\n\t\t\tvalue = this.timeConstraints[ type ].min + ( value - ( this.timeConstraints[ type ].max + 1 ) );\n\t\treturn this.pad( type, value );\n\t},\n\n\tincrease: function( type ) {\n\t\tvar value = parseInt( this.state[ type ], 10) + this.timeConstraints[ type ].step;\n\t\tif ( value > this.timeConstraints[ type ].max )\n\t\t\tvalue = this.timeConstraints[ type ].min + ( value - ( this.timeConstraints[ type ].max + 1 ) );\n\t\treturn this.pad( type, value );\n\t},\n\n\tdecrease: function( type ) {\n\t\tvar value = parseInt( this.state[ type ], 10) - this.timeConstraints[ type ].step;\n\t\tif ( value < this.timeConstraints[ type ].min )\n\t\t\tvalue = this.timeConstraints[ type ].max + 1 - ( this.timeConstraints[ type ].min - value );\n\t\treturn this.pad( type, value );\n\t},\n\n\tpad: function( type, value ) {\n\t\tvar str = value + '';\n\t\twhile ( str.length < this.padValues[ type ] )\n\t\t\tstr = '0' + str;\n\t\treturn str;\n\t},\n});\n\nmodule.exports = DateTimePickerTime;\n","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // SVG <use/> elements do not technically reside in the rendered DOM, so\n  // they do not have classList directly, but they offer a link to their\n  // corresponding element, which can have classList. This extra check is for\n  // that case.\n  // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n  // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n  if (current.correspondingElement) {\n    return current.correspondingElement.classList.contains(ignoreClass);\n  }\n\n  return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n  if (current === componentNode) {\n    return true;\n  } // If source=local then this event came from 'somewhere'\n  // inside and should be ignored. We could handle this with\n  // a layered approach, too, but that requires going back to\n  // thinking in terms of Dom node nesting, running counter\n  // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n  while (current.parentNode) {\n    if (isNodeFound(current, componentNode, ignoreClass)) {\n      return true;\n    }\n\n    current = current.parentNode;\n  }\n\n  return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n  return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n  if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n    return;\n  }\n\n  var passive = false;\n  var options = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      passive = true;\n    }\n  });\n\n  var noop = function noop() {};\n\n  window.addEventListener('testPassiveEventSupport', noop, options);\n  window.removeEventListener('testPassiveEventSupport', noop, options);\n  return passive;\n};\n\nfunction autoInc(seed) {\n  if (seed === void 0) {\n    seed = 0;\n  }\n\n  return function () {\n    return ++seed;\n  };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n  var handlerOptions = null;\n  var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n  if (isTouchEvent && passiveEventSupport) {\n    handlerOptions = {\n      passive: !instance.props.preventDefault\n    };\n  }\n\n  return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n  var _class, _temp;\n\n  var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(onClickOutside, _Component);\n\n    function onClickOutside(props) {\n      var _this;\n\n      _this = _Component.call(this, props) || this;\n\n      _this.__outsideClickHandler = function (event) {\n        if (typeof _this.__clickOutsideHandlerProp === 'function') {\n          _this.__clickOutsideHandlerProp(event);\n\n          return;\n        }\n\n        var instance = _this.getInstance();\n\n        if (typeof instance.props.handleClickOutside === 'function') {\n          instance.props.handleClickOutside(event);\n          return;\n        }\n\n        if (typeof instance.handleClickOutside === 'function') {\n          instance.handleClickOutside(event);\n          return;\n        }\n\n        throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n      };\n\n      _this.__getComponentNode = function () {\n        var instance = _this.getInstance();\n\n        if (config && typeof config.setClickOutsideRef === 'function') {\n          return config.setClickOutsideRef()(instance);\n        }\n\n        if (typeof instance.setClickOutsideRef === 'function') {\n          return instance.setClickOutsideRef();\n        }\n\n        return findDOMNode(instance);\n      };\n\n      _this.enableOnClickOutside = function () {\n        if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n          return;\n        }\n\n        if (typeof passiveEventSupport === 'undefined') {\n          passiveEventSupport = testPassiveEventSupport();\n        }\n\n        enabledInstances[_this._uid] = true;\n        var events = _this.props.eventTypes;\n\n        if (!events.forEach) {\n          events = [events];\n        }\n\n        handlersMap[_this._uid] = function (event) {\n          if (_this.componentNode === null) return;\n\n          if (_this.props.preventDefault) {\n            event.preventDefault();\n          }\n\n          if (_this.props.stopPropagation) {\n            event.stopPropagation();\n          }\n\n          if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n          var current = event.target;\n\n          if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n            return;\n          }\n\n          _this.__outsideClickHandler(event);\n        };\n\n        events.forEach(function (eventName) {\n          document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n        });\n      };\n\n      _this.disableOnClickOutside = function () {\n        delete enabledInstances[_this._uid];\n        var fn = handlersMap[_this._uid];\n\n        if (fn && typeof document !== 'undefined') {\n          var events = _this.props.eventTypes;\n\n          if (!events.forEach) {\n            events = [events];\n          }\n\n          events.forEach(function (eventName) {\n            return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n          });\n          delete handlersMap[_this._uid];\n        }\n      };\n\n      _this.getRef = function (ref) {\n        return _this.instanceRef = ref;\n      };\n\n      _this._uid = uid();\n      return _this;\n    }\n    /**\n     * Access the WrappedComponent's instance.\n     */\n\n\n    var _proto = onClickOutside.prototype;\n\n    _proto.getInstance = function getInstance() {\n      if (!WrappedComponent.prototype.isReactComponent) {\n        return this;\n      }\n\n      var ref = this.instanceRef;\n      return ref.getInstance ? ref.getInstance() : ref;\n    };\n\n    /**\n     * Add click listeners to the current document,\n     * linked to this component's state.\n     */\n    _proto.componentDidMount = function componentDidMount() {\n      // If we are in an environment without a DOM such\n      // as shallow rendering or snapshots then we exit\n      // early to prevent any unhandled errors being thrown.\n      if (typeof document === 'undefined' || !document.createElement) {\n        return;\n      }\n\n      var instance = this.getInstance();\n\n      if (config && typeof config.handleClickOutside === 'function') {\n        this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n        if (typeof this.__clickOutsideHandlerProp !== 'function') {\n          throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n        }\n      }\n\n      this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n      if (this.props.disableOnClickOutside) return;\n      this.enableOnClickOutside();\n    };\n\n    _proto.componentDidUpdate = function componentDidUpdate() {\n      this.componentNode = this.__getComponentNode();\n    };\n    /**\n     * Remove all document's event listeners for this component\n     */\n\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.disableOnClickOutside();\n    };\n    /**\n     * Can be called to explicitly enable event listening\n     * for clicks and touches outside of this element.\n     */\n\n\n    /**\n     * Pass-through render\n     */\n    _proto.render = function render() {\n      // eslint-disable-next-line no-unused-vars\n      var _props = this.props,\n          excludeScrollbar = _props.excludeScrollbar,\n          props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n      if (WrappedComponent.prototype.isReactComponent) {\n        props.ref = this.getRef;\n      } else {\n        props.wrappedRef = this.getRef;\n      }\n\n      props.disableOnClickOutside = this.disableOnClickOutside;\n      props.enableOnClickOutside = this.enableOnClickOutside;\n      return createElement(WrappedComponent, props);\n    };\n\n    return onClickOutside;\n  }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n    eventTypes: ['mousedown', 'touchstart'],\n    excludeScrollbar: config && config.excludeScrollbar || false,\n    outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n    preventDefault: false,\n    stopPropagation: false\n  }, _class.getClass = function () {\n    return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n  }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n *   <Fade><div>I appear first</div></Fade>\n *   <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Component);\n\n  function ReplaceTransition() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleEnter = function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _this.handleLifecycle('onEnter', 0, args);\n    };\n\n    _this.handleEntering = function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return _this.handleLifecycle('onEntering', 0, args);\n    };\n\n    _this.handleEntered = function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return _this.handleLifecycle('onEntered', 0, args);\n    };\n\n    _this.handleExit = function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      return _this.handleLifecycle('onExit', 1, args);\n    };\n\n    _this.handleExiting = function () {\n      for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n        args[_key6] = arguments[_key6];\n      }\n\n      return _this.handleLifecycle('onExiting', 1, args);\n    };\n\n    _this.handleExited = function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n\n      return _this.handleLifecycle('onExited', 1, args);\n    };\n\n    return _this;\n  }\n\n  var _proto = ReplaceTransition.prototype;\n\n  _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n    var _child$props;\n\n    var children = this.props.children;\n\n    var child = _react.default.Children.toArray(children)[idx];\n\n    if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n    if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        inProp = _this$props.in,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n    var _React$Children$toArr = _react.default.Children.toArray(children),\n        first = _React$Children$toArr[0],\n        second = _React$Children$toArr[1];\n\n    delete props.onEnter;\n    delete props.onEntering;\n    delete props.onEntered;\n    delete props.onExit;\n    delete props.onExiting;\n    delete props.onExited;\n    return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n      key: 'first',\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onEntered: this.handleEntered\n    }) : _react.default.cloneElement(second, {\n      key: 'second',\n      onEnter: this.handleExit,\n      onEntering: this.handleExiting,\n      onEntered: this.handleExited\n    }));\n  };\n\n  return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  in: _propTypes.default.bool.isRequired,\n  children: function children(props, propName) {\n    if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n    return null;\n  }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar moveBlockInContentState = require(\"./moveBlockInContentState\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat;\nvar AtomicBlockUtils = {\n  insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n    var contentState = editorState.getCurrentContent();\n    var selectionState = editorState.getSelection();\n    var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n    var targetSelection = afterRemoval.getSelectionAfter();\n    var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n    var insertionTarget = afterSplit.getSelectionAfter();\n    var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n    var charData = CharacterMetadata.create({\n      entity: entityKey\n    });\n    var atomicBlockConfig = {\n      key: generateRandomKey(),\n      type: 'atomic',\n      text: character,\n      characterList: List(Repeat(charData, character.length))\n    };\n    var atomicDividerBlockConfig = {\n      key: generateRandomKey(),\n      type: 'unstyled'\n    };\n\n    if (experimentalTreeDataSupport) {\n      atomicBlockConfig = _objectSpread({}, atomicBlockConfig, {\n        nextSibling: atomicDividerBlockConfig.key\n      });\n      atomicDividerBlockConfig = _objectSpread({}, atomicDividerBlockConfig, {\n        prevSibling: atomicBlockConfig.key\n      });\n    }\n\n    var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n    var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n    var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n    var newContent = withAtomicBlock.merge({\n      selectionBefore: selectionState,\n      selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n    });\n    return EditorState.push(editorState, newContent, 'insert-fragment');\n  },\n  moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n    var contentState = editorState.getCurrentContent();\n    var selectionState = editorState.getSelection();\n    var withMovedAtomicBlock;\n\n    if (insertionMode === 'before' || insertionMode === 'after') {\n      var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n      withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n    } else {\n      var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n      var selectionAfterRemoval = afterRemoval.getSelectionAfter();\n\n      var _targetBlock = afterRemoval.getBlockForKey(selectionAfterRemoval.getFocusKey());\n\n      if (selectionAfterRemoval.getStartOffset() === 0) {\n        withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'before');\n      } else if (selectionAfterRemoval.getEndOffset() === _targetBlock.getLength()) {\n        withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'after');\n      } else {\n        var afterSplit = DraftModifier.splitBlock(afterRemoval, selectionAfterRemoval);\n        var selectionAfterSplit = afterSplit.getSelectionAfter();\n\n        var _targetBlock2 = afterSplit.getBlockForKey(selectionAfterSplit.getFocusKey());\n\n        withMovedAtomicBlock = moveBlockInContentState(afterSplit, atomicBlock, _targetBlock2, 'before');\n      }\n    }\n\n    var newContent = withMovedAtomicBlock.merge({\n      selectionBefore: selectionState,\n      selectionAfter: withMovedAtomicBlock.getSelectionAfter().set('hasFocus', true)\n    });\n    return EditorState.push(editorState, newContent, 'move-block');\n  }\n};\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map;\n\nvar ContentStateInlineStyle = {\n  add: function add(contentState, selectionState, inlineStyle) {\n    return modifyInlineStyle(contentState, selectionState, inlineStyle, true);\n  },\n  remove: function remove(contentState, selectionState, inlineStyle) {\n    return modifyInlineStyle(contentState, selectionState, inlineStyle, false);\n  }\n};\n\nfunction modifyInlineStyle(contentState, selectionState, inlineStyle, addOrRemove) {\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var newBlocks = blockMap.skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat(Map([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n    var sliceStart;\n    var sliceEnd;\n\n    if (startKey === endKey) {\n      sliceStart = startOffset;\n      sliceEnd = endOffset;\n    } else {\n      sliceStart = blockKey === startKey ? startOffset : 0;\n      sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n    }\n\n    var chars = block.getCharacterList();\n    var current;\n\n    while (sliceStart < sliceEnd) {\n      current = chars.get(sliceStart);\n      chars = chars.set(sliceStart, addOrRemove ? CharacterMetadata.applyStyle(current, inlineStyle) : CharacterMetadata.removeStyle(current, inlineStyle));\n      sliceStart++;\n    }\n\n    return block.set('characterList', chars);\n  });\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar applyEntityToContentBlock = require(\"./applyEntityToContentBlock\");\n\nvar Immutable = require(\"immutable\");\n\nfunction applyEntityToContentState(contentState, selectionState, entityKey) {\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var newBlocks = blockMap.skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).toOrderedMap().merge(Immutable.OrderedMap([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n    var sliceStart = blockKey === startKey ? startOffset : 0;\n    var sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n    return applyEntityToContentBlock(block, sliceStart, sliceEnd, entityKey);\n  });\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nfunction applyEntityToContentBlock(contentBlock, startArg, end, entityKey) {\n  var start = startArg;\n  var characterList = contentBlock.getCharacterList();\n\n  while (start < end) {\n    characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n    start++;\n  }\n\n  return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEntitySegments = require(\"./DraftEntitySegments\");\n\nvar getRangesForDraftEntity = require(\"./getRangesForDraftEntity\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Given a SelectionState and a removal direction, determine the entire range\n * that should be removed from a ContentState. This is based on any entities\n * within the target, with their `mutability` values taken into account.\n *\n * For instance, if we are attempting to remove part of an \"immutable\" entity\n * range, the entire entity must be removed. The returned `SelectionState`\n * will be adjusted accordingly.\n */\n\n\nfunction getCharacterRemovalRange(entityMap, startBlock, endBlock, selectionState, direction) {\n  var start = selectionState.getStartOffset();\n  var end = selectionState.getEndOffset();\n  var startEntityKey = startBlock.getEntityAt(start);\n  var endEntityKey = endBlock.getEntityAt(end - 1);\n\n  if (!startEntityKey && !endEntityKey) {\n    return selectionState;\n  }\n\n  var newSelectionState = selectionState;\n\n  if (startEntityKey && startEntityKey === endEntityKey) {\n    newSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, true, true);\n  } else if (startEntityKey && endEntityKey) {\n    var startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n    var endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n    newSelectionState = newSelectionState.merge({\n      anchorOffset: startSelectionState.getAnchorOffset(),\n      focusOffset: endSelectionState.getFocusOffset(),\n      isBackward: false\n    });\n  } else if (startEntityKey) {\n    var _startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n\n    newSelectionState = newSelectionState.merge({\n      anchorOffset: _startSelectionState.getStartOffset(),\n      isBackward: false\n    });\n  } else if (endEntityKey) {\n    var _endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n\n    newSelectionState = newSelectionState.merge({\n      focusOffset: _endSelectionState.getEndOffset(),\n      isBackward: false\n    });\n  }\n\n  return newSelectionState;\n}\n\nfunction getEntityRemovalRange(entityMap, block, selectionState, direction, entityKey, isEntireSelectionWithinEntity, isEntityAtStart) {\n  var start = selectionState.getStartOffset();\n  var end = selectionState.getEndOffset();\n\n  var entity = entityMap.__get(entityKey);\n\n  var mutability = entity.getMutability();\n  var sideToConsider = isEntityAtStart ? start : end; // `MUTABLE` entities can just have the specified range of text removed\n  // directly. No adjustments are needed.\n\n  if (mutability === 'MUTABLE') {\n    return selectionState;\n  } // Find the entity range that overlaps with our removal range.\n\n\n  var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n    return sideToConsider <= range.end && sideToConsider >= range.start;\n  });\n  !(entityRanges.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'There should only be one entity range within this removal range.') : invariant(false) : void 0;\n  var entityRange = entityRanges[0]; // For `IMMUTABLE` entity types, we will remove the entire entity range.\n\n  if (mutability === 'IMMUTABLE') {\n    return selectionState.merge({\n      anchorOffset: entityRange.start,\n      focusOffset: entityRange.end,\n      isBackward: false\n    });\n  } // For `SEGMENTED` entity types, determine the appropriate segment to\n  // remove.\n\n\n  if (!isEntireSelectionWithinEntity) {\n    if (isEntityAtStart) {\n      end = entityRange.end;\n    } else {\n      start = entityRange.start;\n    }\n  }\n\n  var removalRange = DraftEntitySegments.getRemovalRange(start, end, block.getText().slice(entityRange.start, entityRange.end), entityRange.start, direction);\n  return selectionState.merge({\n    anchorOffset: removalRange.start,\n    focusOffset: removalRange.end,\n    isBackward: false\n  });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Identify the range to delete from a segmented entity.\n *\n * Rules:\n *\n *  Example: 'John F. Kennedy'\n *\n *   - Deletion from within any non-whitespace (i.e. ['John', 'F.', 'Kennedy'])\n *     will return the range of that text.\n *\n *       'John F. Kennedy' -> 'John F.'\n *                  ^\n *\n *   - Forward deletion of whitespace will remove the following section:\n *\n *       'John F. Kennedy' -> 'John Kennedy'\n *            ^\n *\n *   - Backward deletion of whitespace will remove the previous section:\n *\n *       'John F. Kennedy' -> 'F. Kennedy'\n *            ^\n */\nvar DraftEntitySegments = {\n  getRemovalRange: function getRemovalRange(selectionStart, selectionEnd, text, entityStart, direction) {\n    var segments = text.split(' ');\n    segments = segments.map(function (\n    /*string*/\n    segment,\n    /*number*/\n    ii) {\n      if (direction === 'forward') {\n        if (ii > 0) {\n          return ' ' + segment;\n        }\n      } else if (ii < segments.length - 1) {\n        return segment + ' ';\n      }\n\n      return segment;\n    });\n    var segmentStart = entityStart;\n    var segmentEnd;\n    var segment;\n    var removalStart = null;\n    var removalEnd = null;\n\n    for (var jj = 0; jj < segments.length; jj++) {\n      segment = segments[jj];\n      segmentEnd = segmentStart + segment.length; // Our selection overlaps this segment.\n\n      if (selectionStart < segmentEnd && segmentStart < selectionEnd) {\n        if (removalStart !== null) {\n          removalEnd = segmentEnd;\n        } else {\n          removalStart = segmentStart;\n          removalEnd = segmentEnd;\n        }\n      } else if (removalStart !== null) {\n        break;\n      }\n\n      segmentStart = segmentEnd;\n    }\n\n    var entityEnd = entityStart + text.length;\n    var atStart = removalStart === entityStart;\n    var atEnd = removalEnd === entityEnd;\n\n    if (!atStart && atEnd || atStart && !atEnd) {\n      if (direction === 'forward') {\n        if (removalEnd !== entityEnd) {\n          removalEnd++;\n        }\n      } else if (removalStart !== entityStart) {\n        removalStart--;\n      }\n    }\n\n    return {\n      start: removalStart,\n      end: removalEnd\n    };\n  }\n};\nmodule.exports = DraftEntitySegments;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Obtain the start and end positions of the range that has the\n * specified entity applied to it.\n *\n * Entity keys are applied only to contiguous stretches of text, so this\n * method searches for the first instance of the entity key and returns\n * the subsequent range.\n */\n\n\nfunction getRangesForDraftEntity(block, key) {\n  var ranges = [];\n  block.findEntityRanges(function (c) {\n    return c.getEntity() === key;\n  }, function (start, end) {\n    ranges.push({\n      start: start,\n      end: end\n    });\n  });\n  !!!ranges.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Entity key not found in this range.') : invariant(false) : void 0;\n  return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar List = Immutable.List;\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\n  var mergeBlockData = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'REPLACE_WITH_NEW_DATA';\n  var targetBlock = blockMap.get(targetKey);\n  var text = targetBlock.getText();\n  var chars = targetBlock.getCharacterList();\n  var finalKey = targetKey;\n  var finalOffset = targetOffset + fragmentBlock.getText().length;\n  var data = null;\n\n  switch (mergeBlockData) {\n    case 'MERGE_OLD_DATA_TO_NEW_DATA':\n      data = fragmentBlock.getData().merge(targetBlock.getData());\n      break;\n\n    case 'REPLACE_WITH_NEW_DATA':\n      data = fragmentBlock.getData();\n      break;\n  }\n\n  var type = targetBlock.getType();\n\n  if (text && type === 'unstyled') {\n    type = fragmentBlock.getType();\n  }\n\n  var newBlock = targetBlock.merge({\n    text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n    characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n    type: type,\n    data: data\n  });\n  return contentState.merge({\n    blockMap: blockMap.set(targetKey, newBlock),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: finalKey,\n      anchorOffset: finalOffset,\n      focusKey: finalKey,\n      focusOffset: finalOffset,\n      isBackward: false\n    })\n  });\n};\n/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\n\n\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n  var text = block.getText();\n  var chars = block.getCharacterList(); // Modify head portion of block.\n\n  var headText = text.slice(0, targetOffset);\n  var headCharacters = chars.slice(0, targetOffset);\n  var appendToHead = fragment.first();\n  return block.merge({\n    text: headText + appendToHead.getText(),\n    characterList: headCharacters.concat(appendToHead.getCharacterList()),\n    type: headText ? block.getType() : appendToHead.getType(),\n    data: appendToHead.getData()\n  });\n};\n/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\n\n\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n  // Modify tail portion of block.\n  var text = block.getText();\n  var chars = block.getCharacterList(); // Modify head portion of block.\n\n  var blockSize = text.length;\n  var tailText = text.slice(targetOffset, blockSize);\n  var tailCharacters = chars.slice(targetOffset, blockSize);\n  var prependToTail = fragment.last();\n  return prependToTail.merge({\n    text: prependToTail.getText() + tailText,\n    characterList: prependToTail.getCharacterList().concat(tailCharacters),\n    data: prependToTail.getData()\n  });\n};\n\nvar getRootBlocks = function getRootBlocks(block, blockMap) {\n  var headKey = block.getKey();\n  var rootBlock = block;\n  var rootBlocks = []; // sometimes the fragment head block will not be part of the blockMap itself this can happen when\n  // the fragment head is used to update the target block, however when this does not happen we need\n  // to make sure that we include it on the rootBlocks since the first block of a fragment is always a\n  // fragment root block\n\n  if (blockMap.get(headKey)) {\n    rootBlocks.push(headKey);\n  }\n\n  while (rootBlock && rootBlock.getNextSiblingKey()) {\n    var lastSiblingKey = rootBlock.getNextSiblingKey();\n\n    if (!lastSiblingKey) {\n      break;\n    }\n\n    rootBlocks.push(lastSiblingKey);\n    rootBlock = blockMap.get(lastSiblingKey);\n  }\n\n  return rootBlocks;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockMap, targetBlock, fragmentHeadBlock) {\n  return blockMap.withMutations(function (blockMapState) {\n    var targetKey = targetBlock.getKey();\n    var headKey = fragmentHeadBlock.getKey();\n    var targetNextKey = targetBlock.getNextSiblingKey();\n    var targetParentKey = targetBlock.getParentKey();\n    var fragmentRootBlocks = getRootBlocks(fragmentHeadBlock, blockMap);\n    var lastRootFragmentBlockKey = fragmentRootBlocks[fragmentRootBlocks.length - 1];\n\n    if (blockMapState.get(headKey)) {\n      // update the fragment head when it is part of the blockMap otherwise\n      blockMapState.setIn([targetKey, 'nextSibling'], headKey);\n      blockMapState.setIn([headKey, 'prevSibling'], targetKey);\n    } else {\n      // update the target block that had the fragment head contents merged into it\n      blockMapState.setIn([targetKey, 'nextSibling'], fragmentHeadBlock.getNextSiblingKey());\n      blockMapState.setIn([fragmentHeadBlock.getNextSiblingKey(), 'prevSibling'], targetKey);\n    } // update the last root block fragment\n\n\n    blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey); // update the original target next block\n\n    if (targetNextKey) {\n      blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n    } // update fragment parent links\n\n\n    fragmentRootBlocks.forEach(function (blockKey) {\n      return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n    }); // update targetBlock parent child links\n\n    if (targetParentKey) {\n      var targetParent = blockMap.get(targetParentKey);\n      var originalTargetParentChildKeys = targetParent.getChildKeys();\n      var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n      var insertionIndex = targetBlockIndex + 1;\n      var newChildrenKeysArray = originalTargetParentChildKeys.toArray(); // insert fragment children\n\n      newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n      blockMapState.setIn([targetParentKey, 'children'], List(newChildrenKeysArray));\n    }\n  });\n};\n\nvar insertFragment = function insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset) {\n  var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n  var newBlockArr = [];\n  var fragmentSize = fragment.size;\n  var target = blockMap.get(targetKey);\n  var head = fragment.first();\n  var tail = fragment.last();\n  var finalOffset = tail.getLength();\n  var finalKey = tail.getKey();\n  var shouldNotUpdateFromFragmentBlock = isTreeBasedBlockMap && (!target.getChildKeys().isEmpty() || !head.getChildKeys().isEmpty());\n  blockMap.forEach(function (block, blockKey) {\n    if (blockKey !== targetKey) {\n      newBlockArr.push(block);\n      return;\n    }\n\n    if (shouldNotUpdateFromFragmentBlock) {\n      newBlockArr.push(block);\n    } else {\n      newBlockArr.push(updateHead(block, targetOffset, fragment));\n    } // Insert fragment blocks after the head and before the tail.\n\n\n    fragment // when we are updating the target block with the head fragment block we skip the first fragment\n    // head since its contents have already been merged with the target block otherwise we include\n    // the whole fragment\n    .slice(shouldNotUpdateFromFragmentBlock ? 0 : 1, fragmentSize - 1).forEach(function (fragmentBlock) {\n      return newBlockArr.push(fragmentBlock);\n    }); // update tail\n\n    newBlockArr.push(updateTail(block, targetOffset, fragment));\n  });\n  var updatedBlockMap = BlockMapBuilder.createFromArray(newBlockArr);\n\n  if (isTreeBasedBlockMap) {\n    updatedBlockMap = updateBlockMapLinks(updatedBlockMap, blockMap, target, head);\n  }\n\n  return contentState.merge({\n    blockMap: updatedBlockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: finalKey,\n      anchorOffset: finalOffset,\n      focusKey: finalKey,\n      focusOffset: finalOffset,\n      isBackward: false\n    })\n  });\n};\n\nvar insertFragmentIntoContentState = function insertFragmentIntoContentState(contentState, selectionState, fragmentBlockMap) {\n  var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n  var blockMap = contentState.getBlockMap();\n  var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n  var targetKey = selectionState.getStartKey();\n  var targetOffset = selectionState.getStartOffset();\n  var targetBlock = blockMap.get(targetKey);\n\n  if (targetBlock instanceof ContentBlockNode) {\n    !targetBlock.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should not be called when a container node is selected.') : invariant(false) : void 0;\n  } // When we insert a fragment with a single block we simply update the target block\n  // with the contents of the inserted fragment block\n\n\n  if (fragment.size === 1) {\n    return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset, mergeBlockData);\n  }\n\n  return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar Repeat = Immutable.Repeat;\n\nfunction insertTextIntoContentState(contentState, selectionState, text, characterMetadata) {\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertText` should only be called with a collapsed range.') : invariant(false) : void 0;\n  var len = null;\n\n  if (text != null) {\n    len = text.length;\n  }\n\n  if (len == null || len === 0) {\n    return contentState;\n  }\n\n  var blockMap = contentState.getBlockMap();\n  var key = selectionState.getStartKey();\n  var offset = selectionState.getStartOffset();\n  var block = blockMap.get(key);\n  var blockText = block.getText();\n  var newBlock = block.merge({\n    text: blockText.slice(0, offset) + text + blockText.slice(offset, block.getLength()),\n    characterList: insertIntoList(block.getCharacterList(), Repeat(characterMetadata, len).toList(), offset)\n  });\n  var newOffset = offset + len;\n  return contentState.merge({\n    blockMap: blockMap.set(key, newBlock),\n    selectionAfter: selectionState.merge({\n      anchorOffset: newOffset,\n      focusOffset: newOffset\n    })\n  });\n}\n\nmodule.exports = insertTextIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\n */\n\n\nvar getAncestorsKeys = function getAncestorsKeys(blockKey, blockMap) {\n  var parents = [];\n\n  if (!blockKey) {\n    return parents;\n  }\n\n  var blockNode = blockMap.get(blockKey);\n\n  while (blockNode && blockNode.getParentKey()) {\n    var parentKey = blockNode.getParentKey();\n\n    if (parentKey) {\n      parents.push(parentKey);\n    }\n\n    blockNode = parentKey ? blockMap.get(parentKey) : null;\n  }\n\n  return parents;\n};\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\n */\n\n\nvar getNextDelimitersBlockKeys = function getNextDelimitersBlockKeys(block, blockMap) {\n  var nextDelimiters = [];\n\n  if (!block) {\n    return nextDelimiters;\n  }\n\n  var nextDelimiter = getNextDelimiterBlockKey(block, blockMap);\n\n  while (nextDelimiter && blockMap.get(nextDelimiter)) {\n    var _block = blockMap.get(nextDelimiter);\n\n    nextDelimiters.push(nextDelimiter); // we do not need to keep checking all root node siblings, just the first occurance\n\n    nextDelimiter = _block.getParentKey() ? getNextDelimiterBlockKey(_block, blockMap) : null;\n  }\n\n  return nextDelimiters;\n};\n\nvar getNextValidSibling = function getNextValidSibling(block, blockMap, originalBlockMap) {\n  if (!block) {\n    return null;\n  } // note that we need to make sure we refer to the original block since this\n  // function is called within a withMutations\n\n\n  var nextValidSiblingKey = originalBlockMap.get(block.getKey()).getNextSiblingKey();\n\n  while (nextValidSiblingKey && !blockMap.get(nextValidSiblingKey)) {\n    nextValidSiblingKey = originalBlockMap.get(nextValidSiblingKey).getNextSiblingKey() || null;\n  }\n\n  return nextValidSiblingKey;\n};\n\nvar getPrevValidSibling = function getPrevValidSibling(block, blockMap, originalBlockMap) {\n  if (!block) {\n    return null;\n  } // note that we need to make sure we refer to the original block since this\n  // function is called within a withMutations\n\n\n  var prevValidSiblingKey = originalBlockMap.get(block.getKey()).getPrevSiblingKey();\n\n  while (prevValidSiblingKey && !blockMap.get(prevValidSiblingKey)) {\n    prevValidSiblingKey = originalBlockMap.get(prevValidSiblingKey).getPrevSiblingKey() || null;\n  }\n\n  return prevValidSiblingKey;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, startBlock, endBlock, originalBlockMap) {\n  return blockMap.withMutations(function (blocks) {\n    // update start block if its retained\n    transformBlock(startBlock.getKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update endblock if its retained\n\n    transformBlock(endBlock.getKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update start block parent ancestors\n\n    getAncestorsKeys(startBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n      return transformBlock(parentKey, blocks, function (block) {\n        return block.merge({\n          children: block.getChildKeys().filter(function (key) {\n            return blocks.get(key);\n          }),\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // update start block next - can only happen if startBlock == endBlock\n\n    transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: startBlock.getPrevSiblingKey()\n      });\n    }); // update start block prev\n\n    transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update end block next\n\n    transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update end block prev\n\n    transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: endBlock.getNextSiblingKey()\n      });\n    }); // update end block parent ancestors\n\n    getAncestorsKeys(endBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n      transformBlock(parentKey, blocks, function (block) {\n        return block.merge({\n          children: block.getChildKeys().filter(function (key) {\n            return blocks.get(key);\n          }),\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // update next delimiters all the way to a root delimiter\n\n    getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(function (delimiterKey) {\n      return transformBlock(delimiterKey, blocks, function (block) {\n        return block.merge({\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // if parent (startBlock) was deleted\n\n    if (blockMap.get(startBlock.getKey()) == null && blockMap.get(endBlock.getKey()) != null && endBlock.getParentKey() === startBlock.getKey() && endBlock.getPrevSiblingKey() == null) {\n      var prevSiblingKey = startBlock.getPrevSiblingKey(); // endBlock becomes next sibling of parent's prevSibling\n\n      transformBlock(endBlock.getKey(), blocks, function (block) {\n        return block.merge({\n          prevSibling: prevSiblingKey\n        });\n      });\n      transformBlock(prevSiblingKey, blocks, function (block) {\n        return block.merge({\n          nextSibling: endBlock.getKey()\n        });\n      }); // Update parent for previous parent's children, and children for that parent\n\n      var prevSibling = prevSiblingKey ? blockMap.get(prevSiblingKey) : null;\n      var newParentKey = prevSibling ? prevSibling.getParentKey() : null;\n      startBlock.getChildKeys().forEach(function (childKey) {\n        transformBlock(childKey, blocks, function (block) {\n          return block.merge({\n            parent: newParentKey // set to null if there is no parent\n\n          });\n        });\n      });\n\n      if (newParentKey != null) {\n        var newParent = blockMap.get(newParentKey);\n        transformBlock(newParentKey, blocks, function (block) {\n          return block.merge({\n            children: newParent.getChildKeys().concat(startBlock.getChildKeys())\n          });\n        });\n      } // last child of deleted parent should point to next sibling\n\n\n      transformBlock(startBlock.getChildKeys().find(function (key) {\n        var block = blockMap.get(key);\n        return block.getNextSiblingKey() === null;\n      }), blocks, function (block) {\n        return block.merge({\n          nextSibling: startBlock.getNextSiblingKey()\n        });\n      });\n    }\n  });\n};\n\nvar removeRangeFromContentState = function removeRangeFromContentState(contentState, selectionState) {\n  if (selectionState.isCollapsed()) {\n    return contentState;\n  }\n\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var startBlock = blockMap.get(startKey);\n  var endBlock = blockMap.get(endKey); // we assume that ContentBlockNode and ContentBlocks are not mixed together\n\n  var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode; // used to retain blocks that should not be deleted to avoid orphan children\n\n  var parentAncestors = [];\n\n  if (isExperimentalTreeBlock) {\n    var endBlockchildrenKeys = endBlock.getChildKeys();\n    var endBlockAncestors = getAncestorsKeys(endKey, blockMap); // endBlock has unselected siblings so we can not remove its ancestors parents\n\n    if (endBlock.getNextSiblingKey()) {\n      parentAncestors = parentAncestors.concat(endBlockAncestors);\n    } // endBlock has children so can not remove this block or any of its ancestors\n\n\n    if (!endBlockchildrenKeys.isEmpty()) {\n      parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n    } // we need to retain all ancestors of the next delimiter block\n\n\n    parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n  }\n\n  var characterList;\n\n  if (startBlock === endBlock) {\n    characterList = removeFromList(startBlock.getCharacterList(), startOffset, endOffset);\n  } else {\n    characterList = startBlock.getCharacterList().slice(0, startOffset).concat(endBlock.getCharacterList().slice(endOffset));\n  }\n\n  var modifiedStart = startBlock.merge({\n    text: startBlock.getText().slice(0, startOffset) + endBlock.getText().slice(endOffset),\n    characterList: characterList\n  }); // If cursor (collapsed) is at the start of the first child, delete parent\n  // instead of child\n\n  var shouldDeleteParent = isExperimentalTreeBlock && startOffset === 0 && endOffset === 0 && endBlock.getParentKey() === startKey && endBlock.getPrevSiblingKey() == null;\n  var newBlocks = shouldDeleteParent ? Map([[startKey, null]]) : blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).filter(function (_, k) {\n    return parentAncestors.indexOf(k) === -1;\n  }).concat(Map([[endKey, null]])).map(function (_, k) {\n    return k === startKey ? modifiedStart : null;\n  });\n  var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n    return !!block;\n  }); // Only update tree block pointers if the range is across blocks\n\n  if (isExperimentalTreeBlock && startBlock !== endBlock) {\n    updatedBlockMap = updateBlockMapLinks(updatedBlockMap, startBlock, endBlock, blockMap);\n  }\n\n  return contentState.merge({\n    blockMap: updatedBlockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: startKey,\n      anchorOffset: startOffset,\n      focusKey: startKey,\n      focusOffset: startOffset,\n      isBackward: false\n    })\n  });\n};\n/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\n */\n\n\nvar removeFromList = function removeFromList(targetList, startOffset, endOffset) {\n  if (startOffset === 0) {\n    while (startOffset < endOffset) {\n      targetList = targetList.shift();\n      startOffset++;\n    }\n  } else if (endOffset === targetList.count()) {\n    while (endOffset > startOffset) {\n      targetList = targetList.pop();\n      endOffset--;\n    }\n  } else {\n    var head = targetList.slice(0, startOffset);\n    var tail = targetList.slice(endOffset);\n    targetList = head.concat(tail).toList();\n  }\n\n  return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlock, belowBlock) {\n  return blockMap.withMutations(function (blocks) {\n    var originalBlockKey = originalBlock.getKey();\n    var belowBlockKey = belowBlock.getKey(); // update block parent\n\n    transformBlock(originalBlock.getParentKey(), blocks, function (block) {\n      var parentChildrenList = block.getChildKeys();\n      var insertionIndex = parentChildrenList.indexOf(originalBlockKey) + 1;\n      var newChildrenArray = parentChildrenList.toArray();\n      newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n      return block.merge({\n        children: List(newChildrenArray)\n      });\n    }); // update original next block\n\n    transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: belowBlockKey\n      });\n    }); // update original block\n\n    transformBlock(originalBlockKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: belowBlockKey\n      });\n    }); // update below block\n\n    transformBlock(belowBlockKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalBlockKey\n      });\n    });\n  });\n};\n\nvar splitBlockInContentState = function splitBlockInContentState(contentState, selectionState) {\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Selection range must be collapsed.') : invariant(false) : void 0;\n  var key = selectionState.getAnchorKey();\n  var blockMap = contentState.getBlockMap();\n  var blockToSplit = blockMap.get(key);\n  var text = blockToSplit.getText();\n\n  if (!text) {\n    var blockType = blockToSplit.getType();\n\n    if (blockType === 'unordered-list-item' || blockType === 'ordered-list-item') {\n      return modifyBlockForContentState(contentState, selectionState, function (block) {\n        return block.merge({\n          type: 'unstyled',\n          depth: 0\n        });\n      });\n    }\n  }\n\n  var offset = selectionState.getAnchorOffset();\n  var chars = blockToSplit.getCharacterList();\n  var keyBelow = generateRandomKey();\n  var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n  var blockAbove = blockToSplit.merge({\n    text: text.slice(0, offset),\n    characterList: chars.slice(0, offset)\n  });\n  var blockBelow = blockAbove.merge({\n    key: keyBelow,\n    text: text.slice(offset),\n    characterList: chars.slice(offset),\n    data: Map()\n  });\n  var blocksBefore = blockMap.toSeq().takeUntil(function (v) {\n    return v === blockToSplit;\n  });\n  var blocksAfter = blockMap.toSeq().skipUntil(function (v) {\n    return v === blockToSplit;\n  }).rest();\n  var newBlocks = blocksBefore.concat([[key, blockAbove], [keyBelow, blockBelow]], blocksAfter).toOrderedMap();\n\n  if (isExperimentalTreeBlock) {\n    !blockToSplit.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ContentBlockNode must not have children') : invariant(false) : void 0;\n    newBlocks = updateBlockMapLinks(newBlocks, blockAbove, blockBelow);\n  }\n\n  return contentState.merge({\n    blockMap: newBlocks,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: keyBelow,\n      anchorOffset: 0,\n      focusKey: keyBelow,\n      focusOffset: 0,\n      isBackward: false\n    })\n  });\n};\n\nmodule.exports = splitBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat,\n    Record = Immutable.Record;\n\nvar returnTrue = function returnTrue() {\n  return true;\n};\n\nvar defaultLeafRange = {\n  start: null,\n  end: null\n};\nvar LeafRange = Record(defaultLeafRange);\nvar defaultDecoratorRange = {\n  start: null,\n  end: null,\n  decoratorKey: null,\n  leaves: null\n};\nvar DecoratorRange = Record(defaultDecoratorRange);\nvar BlockTree = {\n  /**\n   * Generate a block tree for a given ContentBlock/decorator pair.\n   */\n  generate: function generate(contentState, block, decorator) {\n    var textLength = block.getLength();\n\n    if (!textLength) {\n      return List.of(new DecoratorRange({\n        start: 0,\n        end: 0,\n        decoratorKey: null,\n        leaves: List.of(new LeafRange({\n          start: 0,\n          end: 0\n        }))\n      }));\n    }\n\n    var leafSets = [];\n    var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n    var chars = block.getCharacterList();\n    findRangesImmutable(decorations, areEqual, returnTrue, function (start, end) {\n      leafSets.push(new DecoratorRange({\n        start: start,\n        end: end,\n        decoratorKey: decorations.get(start),\n        leaves: generateLeaves(chars.slice(start, end).toList(), start)\n      }));\n    });\n    return List(leafSets);\n  },\n  fromJS: function fromJS(_ref) {\n    var leaves = _ref.leaves,\n        other = _objectWithoutPropertiesLoose(_ref, [\"leaves\"]);\n\n    return new DecoratorRange(_objectSpread({}, other, {\n      leaves: leaves != null ? List(Array.isArray(leaves) ? leaves : getOwnObjectValues(leaves)).map(function (leaf) {\n        return LeafRange(leaf);\n      }) : null\n    }));\n  }\n};\n/**\n * Generate LeafRange records for a given character list.\n */\n\nfunction generateLeaves(characters, offset) {\n  var leaves = [];\n  var inlineStyles = characters.map(function (c) {\n    return c.getStyle();\n  }).toList();\n  findRangesImmutable(inlineStyles, areEqual, returnTrue, function (start, end) {\n    leaves.push(new LeafRange({\n      start: start + offset,\n      end: end + offset\n    }));\n  });\n  return List(leaves);\n}\n\nfunction areEqual(a, b) {\n  return a === b;\n}\n\nmodule.exports = BlockTree;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @typechecks\n * \n * @format\n */\n\n/*eslint-disable no-bitwise */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuid() {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    var r = Math.random() * 16 | 0;\n    var v = c == 'x' ? r : r & 0x3 | 0x8;\n    return v.toString(16);\n  });\n}\n\nmodule.exports = uuid;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeBidiService = require(\"fbjs/lib/UnicodeBidiService\");\n\nvar Immutable = require(\"immutable\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar bidiService;\nvar EditorBidiService = {\n  getDirectionMap: function getDirectionMap(content, prevBidiMap) {\n    if (!bidiService) {\n      bidiService = new UnicodeBidiService();\n    } else {\n      bidiService.reset();\n    }\n\n    var blockMap = content.getBlockMap();\n    var nextBidi = blockMap.valueSeq().map(function (block) {\n      return nullthrows(bidiService).getDirection(block.getText());\n    });\n    var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));\n\n    if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {\n      return prevBidiMap;\n    }\n\n    return bidiMap;\n  }\n};\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n *       direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n *   var dir = bidiService.getDirection(para);\n *   ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\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\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n  /**\n   * Stateful class for paragraph direction detection\n   *\n   * @param defaultDir  Default direction of the service\n   */\n  function UnicodeBidiService(defaultDir) {\n    _defineProperty(this, \"_defaultDir\", void 0);\n\n    _defineProperty(this, \"_lastDir\", void 0);\n\n    if (!defaultDir) {\n      defaultDir = UnicodeBidiDirection.getGlobalDir();\n    } else {\n      !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n    }\n\n    this._defaultDir = defaultDir;\n    this.reset();\n  }\n  /**\n   * Reset the internal state\n   *\n   * Instead of creating a new instance, you can just reset() your instance\n   * everytime you start a new loop.\n   */\n\n\n  var _proto = UnicodeBidiService.prototype;\n\n  _proto.reset = function reset() {\n    this._lastDir = this._defaultDir;\n  };\n  /**\n   * Returns the direction of a block of text, and remembers it as the\n   * fall-back direction for the next paragraph.\n   *\n   * @param str  A text block, e.g. paragraph, table cell, tag\n   * @return     The resolved direction\n   */\n\n\n  _proto.getDirection = function getDirection(str) {\n    this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n    return this._lastDir;\n  };\n\n  return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar OrderedMap = Immutable.OrderedMap,\n    List = Immutable.List;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockToBeMoved, originalTargetBlock, insertionMode, isExperimentalTreeBlock) {\n  if (!isExperimentalTreeBlock) {\n    return blockMap;\n  } // possible values of 'insertionMode' are: 'after', 'before'\n\n\n  var isInsertedAfterTarget = insertionMode === 'after';\n  var originalBlockKey = originalBlockToBeMoved.getKey();\n  var originalTargetKey = originalTargetBlock.getKey();\n  var originalParentKey = originalBlockToBeMoved.getParentKey();\n  var originalNextSiblingKey = originalBlockToBeMoved.getNextSiblingKey();\n  var originalPrevSiblingKey = originalBlockToBeMoved.getPrevSiblingKey();\n  var newParentKey = originalTargetBlock.getParentKey();\n  var newNextSiblingKey = isInsertedAfterTarget ? originalTargetBlock.getNextSiblingKey() : originalTargetKey;\n  var newPrevSiblingKey = isInsertedAfterTarget ? originalTargetKey : originalTargetBlock.getPrevSiblingKey();\n  return blockMap.withMutations(function (blocks) {\n    // update old parent\n    transformBlock(originalParentKey, blocks, function (block) {\n      var parentChildrenList = block.getChildKeys();\n      return block.merge({\n        children: parentChildrenList[\"delete\"](parentChildrenList.indexOf(originalBlockKey))\n      });\n    }); // update old prev\n\n    transformBlock(originalPrevSiblingKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: originalNextSiblingKey\n      });\n    }); // update old next\n\n    transformBlock(originalNextSiblingKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalPrevSiblingKey\n      });\n    }); // update new next\n\n    transformBlock(newNextSiblingKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalBlockKey\n      });\n    }); // update new prev\n\n    transformBlock(newPrevSiblingKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: originalBlockKey\n      });\n    }); // update new parent\n\n    transformBlock(newParentKey, blocks, function (block) {\n      var newParentChildrenList = block.getChildKeys();\n      var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n      var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n      var newChildrenArray = newParentChildrenList.toArray();\n      newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n      return block.merge({\n        children: List(newChildrenArray)\n      });\n    }); // update block\n\n    transformBlock(originalBlockKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: newNextSiblingKey,\n        prevSibling: newPrevSiblingKey,\n        parent: newParentKey\n      });\n    });\n  });\n};\n\nvar moveBlockInContentState = function moveBlockInContentState(contentState, blockToBeMoved, targetBlock, insertionMode) {\n  !(insertionMode !== 'replace') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Replacing blocks is not supported.') : invariant(false) : void 0;\n  var targetKey = targetBlock.getKey();\n  var blockKey = blockToBeMoved.getKey();\n  !(blockKey !== targetKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n  var blockMap = contentState.getBlockMap();\n  var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n  var blocksToBeMoved = [blockToBeMoved];\n  var blockMapWithoutBlocksToBeMoved = blockMap[\"delete\"](blockKey);\n\n  if (isExperimentalTreeBlock) {\n    blocksToBeMoved = [];\n    blockMapWithoutBlocksToBeMoved = blockMap.withMutations(function (blocks) {\n      var nextSiblingKey = blockToBeMoved.getNextSiblingKey();\n      var nextDelimiterBlockKey = getNextDelimiterBlockKey(blockToBeMoved, blocks);\n      blocks.toSeq().skipUntil(function (block) {\n        return block.getKey() === blockKey;\n      }).takeWhile(function (block) {\n        var key = block.getKey();\n        var isBlockToBeMoved = key === blockKey;\n        var hasNextSiblingAndIsNotNextSibling = nextSiblingKey && key !== nextSiblingKey;\n        var doesNotHaveNextSiblingAndIsNotDelimiter = !nextSiblingKey && block.getParentKey() && (!nextDelimiterBlockKey || key !== nextDelimiterBlockKey);\n        return !!(isBlockToBeMoved || hasNextSiblingAndIsNotNextSibling || doesNotHaveNextSiblingAndIsNotDelimiter);\n      }).forEach(function (block) {\n        blocksToBeMoved.push(block);\n        blocks[\"delete\"](block.getKey());\n      });\n    });\n  }\n\n  var blocksBefore = blockMapWithoutBlocksToBeMoved.toSeq().takeUntil(function (v) {\n    return v === targetBlock;\n  });\n  var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n    return v === targetBlock;\n  }).skip(1);\n  var slicedBlocks = blocksToBeMoved.map(function (block) {\n    return [block.getKey(), block];\n  });\n  var newBlocks = OrderedMap();\n\n  if (insertionMode === 'before') {\n    var blockBefore = contentState.getBlockBefore(targetKey);\n    !(!blockBefore || blockBefore.getKey() !== blockToBeMoved.getKey()) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n    newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n  } else if (insertionMode === 'after') {\n    var blockAfter = contentState.getBlockAfter(targetKey);\n    !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n    newBlocks = blocksBefore.concat([[targetKey, targetBlock]].concat(slicedBlocks), blocksAfter).toOrderedMap();\n  }\n\n  return contentState.merge({\n    blockMap: updateBlockMapLinks(newBlocks, blockToBeMoved, targetBlock, insertionMode, isExperimentalTreeBlock),\n    selectionBefore: contentState.getSelectionAfter(),\n    selectionAfter: contentState.getSelectionAfter().merge({\n      anchorKey: blockKey,\n      focusKey: blockKey\n    })\n  });\n};\n\nmodule.exports = moveBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\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\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\nvar DELIMITER = '.';\n/**\n * A CompositeDraftDecorator traverses through a list of DraftDecorator\n * instances to identify sections of a ContentBlock that should be rendered\n * in a \"decorated\" manner. For example, hashtags, mentions, and links may\n * be intended to stand out visually, be rendered as anchors, etc.\n *\n * The list of decorators supplied to the constructor will be used in the\n * order they are provided. This allows the caller to specify a priority for\n * string matching, in case of match collisions among decorators.\n *\n * For instance, I may have a link with a `#` in its text. Though this section\n * of text may match our hashtag decorator, it should not be treated as a\n * hashtag. I should therefore list my link DraftDecorator\n * before my hashtag DraftDecorator when constructing this composite\n * decorator instance.\n *\n * Thus, when a collision like this is encountered, the earlier match is\n * preserved and the new match is discarded.\n */\n\nvar CompositeDraftDecorator =\n/*#__PURE__*/\nfunction () {\n  function CompositeDraftDecorator(decorators) {\n    _defineProperty(this, \"_decorators\", void 0);\n\n    // Copy the decorator array, since we use this array order to determine\n    // precedence of decoration matching. If the array is mutated externally,\n    // we don't want to be affected here.\n    this._decorators = decorators.slice();\n  }\n\n  var _proto = CompositeDraftDecorator.prototype;\n\n  _proto.getDecorations = function getDecorations(block, contentState) {\n    var decorations = Array(block.getText().length).fill(null);\n\n    this._decorators.forEach(function (\n    /*object*/\n    decorator,\n    /*number*/\n    ii) {\n      var counter = 0;\n      var strategy = decorator.strategy;\n\n      var callback = function callback(\n      /*number*/\n      start,\n      /*number*/\n      end) {\n        // Find out if any of our matching range is already occupied\n        // by another decorator. If so, discard the match. Otherwise, store\n        // the component key for rendering.\n        if (canOccupySlice(decorations, start, end)) {\n          occupySlice(decorations, start, end, ii + DELIMITER + counter);\n          counter++;\n        }\n      };\n\n      strategy(block, callback, contentState);\n    });\n\n    return List(decorations);\n  };\n\n  _proto.getComponentForKey = function getComponentForKey(key) {\n    var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n    return this._decorators[componentKey].component;\n  };\n\n  _proto.getPropsForKey = function getPropsForKey(key) {\n    var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n    return this._decorators[componentKey].props;\n  };\n\n  return CompositeDraftDecorator;\n}();\n/**\n * Determine whether we can occupy the specified slice of the decorations\n * array.\n */\n\n\nfunction canOccupySlice(decorations, start, end) {\n  for (var ii = start; ii < end; ii++) {\n    if (decorations[ii] != null) {\n      return false;\n    }\n  }\n\n  return true;\n}\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\n */\n\n\nfunction occupySlice(targetArr, start, end, componentKey) {\n  for (var ii = start; ii < end; ii++) {\n    targetArr[ii] = componentKey;\n  }\n}\n\nmodule.exports = CompositeDraftDecorator;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @preventMunge\n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditorCompositionHandler = require(\"./DraftEditorCompositionHandler\");\n\nvar DraftEditorContents = require(\"./DraftEditorContents.react\");\n\nvar DraftEditorDragHandler = require(\"./DraftEditorDragHandler\");\n\nvar DraftEditorEditHandler = require(\"./DraftEditorEditHandler\");\n\nvar flushControlled = require(\"./DraftEditorFlushControlled\");\n\nvar DraftEditorPlaceholder = require(\"./DraftEditorPlaceholder.react\");\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar gkx = require(\"./gkx\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE'); // IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\n\nvar allowSpellCheck = !isIE; // Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\n\nvar handlerMap = {\n  edit: DraftEditorEditHandler,\n  composite: DraftEditorCompositionHandler,\n  drag: DraftEditorDragHandler,\n  cut: null,\n  render: null\n};\nvar didInitODS = false;\n\nvar UpdateDraftEditorFlags =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(UpdateDraftEditorFlags, _React$Component);\n\n  function UpdateDraftEditorFlags() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = UpdateDraftEditorFlags.prototype;\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._update();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._update();\n  };\n\n  _proto._update = function _update() {\n    var editor = this.props.editor;\n    /**\n     * Sometimes a render triggers a 'focus' or other event, and that will\n     * schedule a second render pass.\n     * In order to make sure the second render pass gets the latest editor\n     * state, we update it here.\n     * Example:\n     * render #1\n     * +\n     * |\n     * | cWU -> Nothing ... latestEditorState = STALE_STATE :(\n     * |\n     * | render -> this.props.editorState = FRESH_STATE\n     * | +         *and* set latestEditorState = FRESH_STATE\n     *   |\n     * | |\n     * | +--> triggers 'focus' event, calling 'handleFocus' with latestEditorState\n     * |                                                +\n     * |                                                |\n     * +>cdU -> latestEditorState = FRESH_STATE         | the 'handleFocus' call schedules render #2\n     *                                                  | with latestEditorState, which is FRESH_STATE\n     *                                                  |\n     * render #2 <--------------------------------------+\n     * +\n     * |\n     * | cwU -> nothing updates\n     * |\n     * | render -> this.props.editorState = FRESH_STATE which was passed in above\n     * |\n     * +>cdU fires and resets latestEditorState = FRESH_STATE\n     * ---\n     * Note that if we don't set latestEditorState in 'render' in the above\n     * diagram, then STALE_STATE gets passed to render #2.\n     */\n\n    editor._latestEditorState = this.props.editorState;\n    /**\n     * The reason we set this 'blockSelectEvents' flag is that  IE will fire a\n     * 'selectionChange' event when we programmatically change the selection,\n     * meaning it would trigger a new select event while we are in the middle\n     * of updating.\n     * We found that the 'selection.addRange' was what triggered the stray\n     * selectionchange event in IE.\n     * To be clear - we have not been able to reproduce specific bugs related\n     * to this stray selection event, but have recorded logs that some\n     * conditions do cause it to get bumped into during editOnSelect.\n     */\n\n    editor._blockSelectEvents = true;\n  };\n\n  return UpdateDraftEditorFlags;\n}(React.Component);\n/**\n * `DraftEditor` is the root editor component. It composes a `contentEditable`\n * div, and provides a wide variety of useful function props for managing the\n * state of the editor. See `DraftEditorProps` for details.\n */\n\n\nvar DraftEditor =\n/*#__PURE__*/\nfunction (_React$Component2) {\n  _inheritsLoose(DraftEditor, _React$Component2);\n\n  /**\n   * Define proxies that can route events to the current handler.\n   */\n  function DraftEditor(props) {\n    var _this;\n\n    _this = _React$Component2.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"_blockSelectEvents\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_clipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_dragCount\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_internalDrag\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_editorKey\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_placeholderAccessibilityID\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_latestEditorState\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_latestCommittedEditorState\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_pendingStateFromBeforeInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onBeforeInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onBlur\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCharacterData\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCompositionEnd\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCompositionStart\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCopy\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCut\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragOver\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDrop\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onFocus\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyPress\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyUp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onMouseDown\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onMouseUp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onPaste\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSelect\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"editor\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"editorContainer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"focus\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"blur\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"setMode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"setClipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"getClipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"getEditorKey\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"update\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_handleEditorContainerRef\", function (node) {\n      _this.editorContainer = node; // Instead of having a direct ref on the child, we'll grab it here.\n      // This is safe as long as the rendered structure is static (which it is).\n      // This lets the child support ref={props.editorRef} without merging refs.\n\n      _this.editor = node !== null ? node.firstChild : null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"focus\", function (scrollPosition) {\n      var editorState = _this.props.editorState;\n      var alreadyHasFocus = editorState.getSelection().getHasFocus();\n      var editorNode = _this.editor;\n\n      if (!editorNode) {\n        // once in a while people call 'focus' in a setTimeout, and the node has\n        // been deleted, so it can be null in that case.\n        return;\n      }\n\n      var scrollParent = Style.getScrollParent(editorNode);\n\n      var _ref = scrollPosition || getScrollPosition(scrollParent),\n          x = _ref.x,\n          y = _ref.y;\n\n      !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n      editorNode.focus(); // Restore scroll position\n\n      if (scrollParent === window) {\n        window.scrollTo(x, y);\n      } else {\n        Scroll.setTop(scrollParent, y);\n      } // On Chrome and Safari, calling focus on contenteditable focuses the\n      // cursor at the first character. This is something you don't expect when\n      // you're clicking on an input element but not directly on a character.\n      // Put the cursor back where it was before the blur.\n\n\n      if (!alreadyHasFocus) {\n        _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n      var editorNode = _this.editor;\n\n      if (!editorNode) {\n        return;\n      }\n\n      !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n      editorNode.blur();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setMode\", function (mode) {\n      var _this$props = _this.props,\n          onPaste = _this$props.onPaste,\n          onCut = _this$props.onCut,\n          onCopy = _this$props.onCopy;\n\n      var editHandler = _objectSpread({}, handlerMap.edit);\n\n      if (onPaste) {\n        /* $FlowFixMe(>=0.117.0 site=www,mobile) This comment suppresses an error found\n         * when Flow v0.117 was deployed. To see the error delete this comment\n         * and run Flow. */\n        editHandler.onPaste = onPaste;\n      }\n\n      if (onCut) {\n        editHandler.onCut = onCut;\n      }\n\n      if (onCopy) {\n        editHandler.onCopy = onCopy;\n      }\n\n      var handler = _objectSpread({}, handlerMap, {\n        edit: editHandler\n      });\n\n      _this._handler = handler[mode];\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", function () {\n      _this.setMode('edit');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", function (scrollPosition) {\n      _this.setState({\n        contentsKey: _this.state.contentsKey + 1\n      }, function () {\n        _this.focus(scrollPosition);\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setClipboard\", function (clipboard) {\n      _this._clipboard = clipboard;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getClipboard\", function () {\n      return _this._clipboard;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"update\", function (editorState) {\n      _this._latestEditorState = editorState;\n\n      _this.props.onChange(editorState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function () {\n      _this._dragCount++;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function () {\n      _this._dragCount--;\n\n      if (_this._dragCount === 0) {\n        _this.exitCurrentMode();\n      }\n    });\n\n    _this._blockSelectEvents = false;\n    _this._clipboard = null;\n    _this._handler = null;\n    _this._dragCount = 0;\n    _this._editorKey = props.editorKey || generateRandomKey();\n    _this._placeholderAccessibilityID = 'placeholder-' + _this._editorKey;\n    _this._latestEditorState = props.editorState;\n    _this._latestCommittedEditorState = props.editorState;\n    _this._onBeforeInput = _this._buildHandler('onBeforeInput');\n    _this._onBlur = _this._buildHandler('onBlur');\n    _this._onCharacterData = _this._buildHandler('onCharacterData');\n    _this._onCompositionEnd = _this._buildHandler('onCompositionEnd');\n    _this._onCompositionStart = _this._buildHandler('onCompositionStart');\n    _this._onCopy = _this._buildHandler('onCopy');\n    _this._onCut = _this._buildHandler('onCut');\n    _this._onDragEnd = _this._buildHandler('onDragEnd');\n    _this._onDragOver = _this._buildHandler('onDragOver');\n    _this._onDragStart = _this._buildHandler('onDragStart');\n    _this._onDrop = _this._buildHandler('onDrop');\n    _this._onInput = _this._buildHandler('onInput');\n    _this._onFocus = _this._buildHandler('onFocus');\n    _this._onKeyDown = _this._buildHandler('onKeyDown');\n    _this._onKeyPress = _this._buildHandler('onKeyPress');\n    _this._onKeyUp = _this._buildHandler('onKeyUp');\n    _this._onMouseDown = _this._buildHandler('onMouseDown');\n    _this._onMouseUp = _this._buildHandler('onMouseUp');\n    _this._onPaste = _this._buildHandler('onPaste');\n    _this._onSelect = _this._buildHandler('onSelect');\n\n    _this.getEditorKey = function () {\n      return _this._editorKey;\n    };\n\n    if (process.env.NODE_ENV !== \"production\") {\n      ['onDownArrow', 'onEscape', 'onLeftArrow', 'onRightArrow', 'onTab', 'onUpArrow'].forEach(function (propName) {\n        if (props.hasOwnProperty(propName)) {\n          // eslint-disable-next-line no-console\n          console.warn(\"Supplying an `\".concat(propName, \"` prop to `DraftEditor` has \") + 'been deprecated. If your handler needs access to the keyboard ' + 'event, supply a custom `keyBindingFn` prop that falls back to ' + 'the default one (eg. https://is.gd/wHKQ3W).');\n        }\n      });\n    } // See `restoreEditorDOM()`.\n\n\n    _this.state = {\n      contentsKey: 0\n    };\n    return _this;\n  }\n  /**\n   * Build a method that will pass the event to the specified handler method.\n   * This allows us to look up the correct handler function for the current\n   * editor mode, if any has been specified.\n   */\n\n\n  var _proto2 = DraftEditor.prototype;\n\n  _proto2._buildHandler = function _buildHandler(eventName) {\n    var _this2 = this;\n\n    // Wrap event handlers in `flushControlled`. In sync mode, this is\n    // effectively a no-op. In async mode, this ensures all updates scheduled\n    // inside the handler are flushed before React yields to the browser.\n    return function (e) {\n      if (!_this2.props.readOnly) {\n        var method = _this2._handler && _this2._handler[eventName];\n\n        if (method) {\n          if (flushControlled) {\n            flushControlled(function () {\n              return method(_this2, e);\n            });\n          } else {\n            method(_this2, e);\n          }\n        }\n      }\n    };\n  };\n\n  _proto2._showPlaceholder = function _showPlaceholder() {\n    return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n  };\n\n  _proto2._renderPlaceholder = function _renderPlaceholder() {\n    if (this._showPlaceholder()) {\n      var placeHolderProps = {\n        text: nullthrows(this.props.placeholder),\n        editorState: this.props.editorState,\n        textAlignment: this.props.textAlignment,\n        accessibilityID: this._placeholderAccessibilityID\n      };\n      /* $FlowFixMe(>=0.112.0 site=www,mobile) This comment suppresses an error\n       * found when Flow v0.112 was deployed. To see the error delete this\n       * comment and run Flow. */\n\n      return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n    }\n\n    return null;\n  };\n\n  _proto2.render = function render() {\n    var _this$props2 = this.props,\n        blockRenderMap = _this$props2.blockRenderMap,\n        blockRendererFn = _this$props2.blockRendererFn,\n        blockStyleFn = _this$props2.blockStyleFn,\n        customStyleFn = _this$props2.customStyleFn,\n        customStyleMap = _this$props2.customStyleMap,\n        editorState = _this$props2.editorState,\n        preventScroll = _this$props2.preventScroll,\n        readOnly = _this$props2.readOnly,\n        textAlignment = _this$props2.textAlignment,\n        textDirectionality = _this$props2.textDirectionality;\n    var rootClass = cx({\n      'DraftEditor/root': true,\n      'DraftEditor/alignLeft': textAlignment === 'left',\n      'DraftEditor/alignRight': textAlignment === 'right',\n      'DraftEditor/alignCenter': textAlignment === 'center'\n    });\n    var contentStyle = {\n      outline: 'none',\n      // fix parent-draggable Safari bug. #1326\n      userSelect: 'text',\n      WebkitUserSelect: 'text',\n      whiteSpace: 'pre-wrap',\n      wordWrap: 'break-word'\n    }; // The aria-expanded and aria-haspopup properties should only be rendered\n    // for a combobox.\n\n    /* $FlowFixMe(>=0.68.0 site=www,mobile) This comment suppresses an error\n     * found when Flow v0.68 was deployed. To see the error delete this comment\n     * and run Flow. */\n\n    var ariaRole = this.props.role || 'textbox';\n    var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n    var editorContentsProps = {\n      blockRenderMap: blockRenderMap,\n      blockRendererFn: blockRendererFn,\n      blockStyleFn: blockStyleFn,\n      customStyleMap: _objectSpread({}, DefaultDraftInlineStyle, customStyleMap),\n      customStyleFn: customStyleFn,\n      editorKey: this._editorKey,\n      editorState: editorState,\n      preventScroll: preventScroll,\n      textDirectionality: textDirectionality\n    };\n    return React.createElement(\"div\", {\n      className: rootClass\n    }, this._renderPlaceholder(), React.createElement(\"div\", {\n      className: cx('DraftEditor/editorContainer'),\n      ref: this._handleEditorContainerRef\n    }, React.createElement(\"div\", {\n      \"aria-activedescendant\": readOnly ? null : this.props.ariaActiveDescendantID,\n      \"aria-autocomplete\": readOnly ? null : this.props.ariaAutoComplete,\n      \"aria-controls\": readOnly ? null : this.props.ariaControls,\n      \"aria-describedby\": this.props.ariaDescribedBy || this._placeholderAccessibilityID,\n      \"aria-expanded\": readOnly ? null : ariaExpanded,\n      \"aria-label\": this.props.ariaLabel,\n      \"aria-labelledby\": this.props.ariaLabelledBy,\n      \"aria-multiline\": this.props.ariaMultiline,\n      \"aria-owns\": readOnly ? null : this.props.ariaOwneeID,\n      autoCapitalize: this.props.autoCapitalize,\n      autoComplete: this.props.autoComplete,\n      autoCorrect: this.props.autoCorrect,\n      className: cx({\n        // Chrome's built-in translation feature mutates the DOM in ways\n        // that Draft doesn't expect (ex: adding <font> tags inside\n        // DraftEditorLeaf spans) and causes problems. We add notranslate\n        // here which makes its autotranslation skip over this subtree.\n        notranslate: !readOnly,\n        'public/DraftEditor/content': true\n      }),\n      contentEditable: !readOnly,\n      \"data-testid\": this.props.webDriverTestID,\n      onBeforeInput: this._onBeforeInput,\n      onBlur: this._onBlur,\n      onCompositionEnd: this._onCompositionEnd,\n      onCompositionStart: this._onCompositionStart,\n      onCopy: this._onCopy,\n      onCut: this._onCut,\n      onDragEnd: this._onDragEnd,\n      onDragEnter: this.onDragEnter,\n      onDragLeave: this.onDragLeave,\n      onDragOver: this._onDragOver,\n      onDragStart: this._onDragStart,\n      onDrop: this._onDrop,\n      onFocus: this._onFocus,\n      onInput: this._onInput,\n      onKeyDown: this._onKeyDown,\n      onKeyPress: this._onKeyPress,\n      onKeyUp: this._onKeyUp,\n      onMouseUp: this._onMouseUp,\n      onPaste: this._onPaste,\n      onSelect: this._onSelect,\n      ref: this.props.editorRef,\n      role: readOnly ? null : ariaRole,\n      spellCheck: allowSpellCheck && this.props.spellCheck,\n      style: contentStyle,\n      suppressContentEditableWarning: true,\n      tabIndex: this.props.tabIndex\n    }, React.createElement(UpdateDraftEditorFlags, {\n      editor: this,\n      editorState: editorState\n    }), React.createElement(DraftEditorContents, _extends({}, editorContentsProps, {\n      key: 'contents' + this.state.contentsKey\n    })))));\n  };\n\n  _proto2.componentDidMount = function componentDidMount() {\n    this._blockSelectEvents = false;\n\n    if (!didInitODS && gkx('draft_ods_enabled')) {\n      didInitODS = true;\n      DraftEffects.initODS();\n    }\n\n    this.setMode('edit');\n    /**\n     * IE has a hardcoded \"feature\" that attempts to convert link text into\n     * anchors in contentEditable DOM. This breaks the editor's expectations of\n     * the DOM, and control is lost. Disable it to make IE behave.\n     * See: http://blogs.msdn.com/b/ieinternals/archive/2010/09/15/\n     * ie9-beta-minor-change-list.aspx\n     */\n\n    if (isIE) {\n      // editor can be null after mounting\n      // https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback\n      if (!this.editor) {\n        global.execCommand('AutoUrlDetect', false, false);\n      } else {\n        this.editor.ownerDocument.execCommand('AutoUrlDetect', false, false);\n      }\n    }\n  };\n\n  _proto2.componentDidUpdate = function componentDidUpdate() {\n    this._blockSelectEvents = false;\n    this._latestEditorState = this.props.editorState;\n    this._latestCommittedEditorState = this.props.editorState;\n  }\n  /**\n   * Used via `this.focus()`.\n   *\n   * Force focus back onto the editor node.\n   *\n   * We attempt to preserve scroll position when focusing. You can also pass\n   * a specified scroll position (for cases like `cut` behavior where it should\n   * be restored to a known position).\n   */\n  ;\n\n  return DraftEditor;\n}(React.Component);\n\n_defineProperty(DraftEditor, \"defaultProps\", {\n  blockRenderMap: DefaultDraftBlockRenderMap,\n  blockRendererFn: function blockRendererFn() {\n    return null;\n  },\n  blockStyleFn: function blockStyleFn() {\n    return '';\n  },\n  keyBindingFn: getDefaultKeyBinding,\n  readOnly: false,\n  spellCheck: false,\n  stripPastedStyles: false\n});\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DOMObserver = require(\"./DOMObserver\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar editOnSelect = require(\"./editOnSelect\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Millisecond delay to allow `compositionstart` to fire again upon\n * `compositionend`.\n *\n * This is used for Korean input to ensure that typing can continue without\n * the editor trying to render too quickly. More specifically, Safari 7.1+\n * triggers `compositionstart` a little slower than Chrome/FF, which\n * leads to composed characters being resolved and re-render occurring\n * sooner than we want.\n */\n\n\nvar RESOLVE_DELAY = 20;\n/**\n * A handful of variables used to track the current composition and its\n * resolution status. These exist at the module level because it is not\n * possible to have compositions occurring in multiple editors simultaneously,\n * and it simplifies state management with respect to the DraftEditor component.\n */\n\nvar resolved = false;\nvar stillComposing = false;\nvar domObserver = null;\n\nfunction startDOMObserver(editor) {\n  if (!domObserver) {\n    domObserver = new DOMObserver(getContentEditableContainer(editor));\n    domObserver.start();\n  }\n}\n\nvar DraftEditorCompositionHandler = {\n  /**\n   * A `compositionstart` event has fired while we're still in composition\n   * mode. Continue the current composition session to prevent a re-render.\n   */\n  onCompositionStart: function onCompositionStart(editor) {\n    stillComposing = true;\n    startDOMObserver(editor);\n  },\n\n  /**\n   * Attempt to end the current composition session.\n   *\n   * Defer handling because browser will still insert the chars into active\n   * element after `compositionend`. If a `compositionstart` event fires\n   * before `resolveComposition` executes, our composition session will\n   * continue.\n   *\n   * The `resolved` flag is useful because certain IME interfaces fire the\n   * `compositionend` event multiple times, thus queueing up multiple attempts\n   * at handling the composition. Since handling the same composition event\n   * twice could break the DOM, we only use the first event. Example: Arabic\n   * Google Input Tools on Windows 8.1 fires `compositionend` three times.\n   */\n  onCompositionEnd: function onCompositionEnd(editor) {\n    resolved = false;\n    stillComposing = false;\n    setTimeout(function () {\n      if (!resolved) {\n        DraftEditorCompositionHandler.resolveComposition(editor);\n      }\n    }, RESOLVE_DELAY);\n  },\n  onSelect: editOnSelect,\n\n  /**\n   * In Safari, keydown events may fire when committing compositions. If\n   * the arrow keys are used to commit, prevent default so that the cursor\n   * doesn't move, otherwise it will jump back noticeably on re-render.\n   */\n  onKeyDown: function onKeyDown(editor, e) {\n    if (!stillComposing) {\n      // If a keydown event is received after compositionend but before the\n      // 20ms timer expires (ex: type option-E then backspace, or type A then\n      // backspace in 2-Set Korean), we should immediately resolve the\n      // composition and reinterpret the key press in edit mode.\n      DraftEditorCompositionHandler.resolveComposition(editor);\n\n      editor._onKeyDown(e);\n\n      return;\n    }\n\n    if (e.which === Keys.RIGHT || e.which === Keys.LEFT) {\n      e.preventDefault();\n    }\n  },\n\n  /**\n   * Keypress events may fire when committing compositions. In Firefox,\n   * pressing RETURN commits the composition and inserts extra newline\n   * characters that we do not want. `preventDefault` allows the composition\n   * to be committed while preventing the extra characters.\n   */\n  onKeyPress: function onKeyPress(editor, e) {\n    if (e.which === Keys.RETURN) {\n      e.preventDefault();\n    }\n  },\n\n  /**\n   * Attempt to insert composed characters into the document.\n   *\n   * If we are still in a composition session, do nothing. Otherwise, insert\n   * the characters into the document and terminate the composition session.\n   *\n   * If no characters were composed -- for instance, the user\n   * deleted all composed characters and committed nothing new --\n   * force a re-render. We also re-render when the composition occurs\n   * at the beginning of a leaf, to ensure that if the browser has\n   * created a new text node for the composition, we will discard it.\n   *\n   * Resetting innerHTML will move focus to the beginning of the editor,\n   * so we update to force it back to the correct place.\n   */\n  resolveComposition: function resolveComposition(editor) {\n    if (stillComposing) {\n      return;\n    }\n\n    var mutations = nullthrows(domObserver).stopAndFlushMutations();\n    domObserver = null;\n    resolved = true;\n    var editorState = EditorState.set(editor._latestEditorState, {\n      inCompositionMode: false\n    });\n    editor.exitCurrentMode();\n\n    if (!mutations.size) {\n      editor.update(editorState);\n      return;\n    } // TODO, check if Facebook still needs this flag or if it could be removed.\n    // Since there can be multiple mutations providing a `composedChars` doesn't\n    // apply well on this new model.\n    // if (\n    //   gkx('draft_handlebeforeinput_composed_text') &&\n    //   editor.props.handleBeforeInput &&\n    //   isEventHandled(\n    //     editor.props.handleBeforeInput(\n    //       composedChars,\n    //       editorState,\n    //       event.timeStamp,\n    //     ),\n    //   )\n    // ) {\n    //   return;\n    // }\n\n\n    var contentState = editorState.getCurrentContent();\n    mutations.forEach(function (composedChars, offsetKey) {\n      var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n          blockKey = _DraftOffsetKey$decod.blockKey,\n          decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n          leafKey = _DraftOffsetKey$decod.leafKey;\n\n      var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n          start = _editorState$getBlock.start,\n          end = _editorState$getBlock.end;\n\n      var replacementRange = editorState.getSelection().merge({\n        anchorKey: blockKey,\n        focusKey: blockKey,\n        anchorOffset: start,\n        focusOffset: end,\n        isBackward: false\n      });\n      var entityKey = getEntityKeyForSelection(contentState, replacementRange);\n      var currentStyle = contentState.getBlockForKey(blockKey).getInlineStyleAt(start);\n      contentState = DraftModifier.replaceText(contentState, replacementRange, composedChars, currentStyle, entityKey); // We need to update the editorState so the leaf node ranges are properly\n      // updated and multiple mutations are correctly applied.\n\n      editorState = EditorState.set(editorState, {\n        currentContent: contentState\n      });\n    }); // When we apply the text changes to the ContentState, the selection always\n    // goes to the end of the field, but it should just stay where it is\n    // after compositionEnd.\n\n    var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n    var compositionEndSelectionState = documentSelection.selectionState;\n    editor.restoreEditorDOM();\n    var editorStateWithUpdatedSelection = EditorState.acceptSelection(editorState, compositionEndSelectionState);\n    editor.update(EditorState.push(editorStateWithUpdatedSelection, contentState, 'insert-characters'));\n  }\n};\nmodule.exports = DraftEditorCompositionHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\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\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar Map = Immutable.Map;\n// Heavily based on Prosemirror's DOMObserver https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\nvar DOM_OBSERVER_OPTIONS = {\n  subtree: true,\n  characterData: true,\n  childList: true,\n  characterDataOldValue: false,\n  attributes: false\n}; // IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\n\nvar USE_CHAR_DATA = UserAgent.isBrowser('IE <= 11');\n\nvar DOMObserver =\n/*#__PURE__*/\nfunction () {\n  function DOMObserver(container) {\n    var _this = this;\n\n    _defineProperty(this, \"observer\", void 0);\n\n    _defineProperty(this, \"container\", void 0);\n\n    _defineProperty(this, \"mutations\", void 0);\n\n    _defineProperty(this, \"onCharData\", void 0);\n\n    this.container = container;\n    this.mutations = Map();\n    var containerWindow = getWindowForNode(container);\n\n    if (containerWindow.MutationObserver && !USE_CHAR_DATA) {\n      this.observer = new containerWindow.MutationObserver(function (mutations) {\n        return _this.registerMutations(mutations);\n      });\n    } else {\n      this.onCharData = function (e) {\n        !(e.target instanceof Node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected target to be an instance of Node') : invariant(false) : void 0;\n\n        _this.registerMutation({\n          type: 'characterData',\n          target: e.target\n        });\n      };\n    }\n  }\n\n  var _proto = DOMObserver.prototype;\n\n  _proto.start = function start() {\n    if (this.observer) {\n      this.observer.observe(this.container, DOM_OBSERVER_OPTIONS);\n    } else {\n      /* $FlowFixMe(>=0.68.0 site=www,mobile) This event type is not defined\n       * by Flow's standard library */\n      this.container.addEventListener('DOMCharacterDataModified', this.onCharData);\n    }\n  };\n\n  _proto.stopAndFlushMutations = function stopAndFlushMutations() {\n    var observer = this.observer;\n\n    if (observer) {\n      this.registerMutations(observer.takeRecords());\n      observer.disconnect();\n    } else {\n      /* $FlowFixMe(>=0.68.0 site=www,mobile) This event type is not defined\n       * by Flow's standard library */\n      this.container.removeEventListener('DOMCharacterDataModified', this.onCharData);\n    }\n\n    var mutations = this.mutations;\n    this.mutations = Map();\n    return mutations;\n  };\n\n  _proto.registerMutations = function registerMutations(mutations) {\n    for (var i = 0; i < mutations.length; i++) {\n      this.registerMutation(mutations[i]);\n    }\n  };\n\n  _proto.getMutationTextContent = function getMutationTextContent(mutation) {\n    var type = mutation.type,\n        target = mutation.target,\n        removedNodes = mutation.removedNodes;\n\n    if (type === 'characterData') {\n      // When `textContent` is '', there is a race condition that makes\n      // getting the offsetKey from the target not possible.\n      // These events are also followed by a `childList`, which is the one\n      // we are able to retrieve the offsetKey and apply the '' text.\n      if (target.textContent !== '') {\n        // IE 11 considers the enter keypress that concludes the composition\n        // as an input char. This strips that newline character so the draft\n        // state does not receive spurious newlines.\n        if (USE_CHAR_DATA) {\n          return target.textContent.replace('\\n', '');\n        }\n\n        return target.textContent;\n      }\n    } else if (type === 'childList') {\n      if (removedNodes && removedNodes.length) {\n        // `characterData` events won't happen or are ignored when\n        // removing the last character of a leaf node, what happens\n        // instead is a `childList` event with a `removedNodes` array.\n        // For this case the textContent should be '' and\n        // `DraftModifier.replaceText` will make sure the content is\n        // updated properly.\n        return '';\n      } else if (target.textContent !== '') {\n        // Typing Chinese in an empty block in MS Edge results in a\n        // `childList` event with non-empty textContent.\n        // See https://github.com/facebook/draft-js/issues/2082\n        return target.textContent;\n      }\n    }\n\n    return null;\n  };\n\n  _proto.registerMutation = function registerMutation(mutation) {\n    var textContent = this.getMutationTextContent(mutation);\n\n    if (textContent != null) {\n      var offsetKey = nullthrows(findAncestorOffsetKey(mutation.target));\n      this.mutations = this.mutations.set(offsetKey, textContent);\n    }\n  };\n\n  return DOMObserver;\n}();\n\nmodule.exports = DOMObserver;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n  'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n  return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n  if (!version) {\n    return {\n      major: '',\n      minor: ''\n    };\n  }\n\n  var parts = version.split('.');\n  return {\n    major: parts[0],\n    minor: parts[1]\n  };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n  browserArchitecture: results.cpu.architecture || UNKNOWN,\n  browserFullVersion: results.browser.version || UNKNOWN,\n  browserMinorVersion: browserVersionData.minor || UNKNOWN,\n  browserName: results.browser.name || UNKNOWN,\n  browserVersion: results.browser.major || UNKNOWN,\n  deviceName: results.device.model || UNKNOWN,\n  engineName: results.engine.name || UNKNOWN,\n  engineVersion: results.engine.version || UNKNOWN,\n  platformArchitecture: results.cpu.architecture || UNKNOWN,\n  platformName: convertPlatformName(results.os.name) || UNKNOWN,\n  platformVersion: results.os.version || UNKNOWN,\n  platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/*!\n * UAParser.js v0.7.21\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman <f@faisalman.com>\n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '0.7.21',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major', // deprecated\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded';\n\n\n    ///////////\n    // Helper\n    //////////\n\n\n    var util = {\n        extend : function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        has : function (str1, str2) {\n          if (typeof str1 === \"string\") {\n            return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n          } else {\n            return false;\n          }\n        },\n        lowerize : function (str) {\n            return str.toLowerCase();\n        },\n        major : function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n        },\n        trim : function (str) {\n          return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n        }\n    };\n\n\n    ///////////////\n    // Map helper\n    //////////////\n\n\n    var mapper = {\n\n        rgx : function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length == 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length == 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length == 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        str : function (str, map) {\n\n            for (var i in map) {\n                // check if array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (util.has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (util.has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return str;\n        }\n    };\n\n\n    ///////////////\n    // String map\n    //////////////\n\n\n    var maps = {\n\n        browser : {\n            oldsafari : {\n                version : {\n                    '1.0'   : '/8',\n                    '1.2'   : '/1',\n                    '1.3'   : '/3',\n                    '2.0'   : '/412',\n                    '2.0.2' : '/416',\n                    '2.0.3' : '/417',\n                    '2.0.4' : '/419',\n                    '?'     : '/'\n                }\n            }\n        },\n\n        device : {\n            amazon : {\n                model : {\n                    'Fire Phone' : ['SD', 'KF']\n                }\n            },\n            sprint : {\n                model : {\n                    'Evo Shift 4G' : '7373KT'\n                },\n                vendor : {\n                    'HTC'       : 'APA',\n                    'Sprint'    : 'Sprint'\n                }\n            }\n        },\n\n        os : {\n            windows : {\n                version : {\n                    'ME'        : '4.90',\n                    'NT 3.11'   : 'NT3.51',\n                    'NT 4.0'    : 'NT4.0',\n                    '2000'      : 'NT 5.0',\n                    'XP'        : ['NT 5.1', 'NT 5.2'],\n                    'Vista'     : 'NT 6.0',\n                    '7'         : 'NT 6.1',\n                    '8'         : 'NT 6.2',\n                    '8.1'       : 'NT 6.3',\n                    '10'        : ['NT 6.4', 'NT 10.0'],\n                    'RT'        : 'ARM'\n                }\n            }\n        }\n    };\n\n\n    //////////////\n    // Regex map\n    /////////////\n\n\n    var regexes = {\n\n        browser : [[\n\n            // Presto based\n            /(opera\\smini)\\/([\\w\\.-]+)/i,                                       // Opera Mini\n            /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i,                      // Opera Mobi/Tablet\n            /(opera).+version\\/([\\w\\.]+)/i,                                     // Opera > 9.80\n            /(opera)[\\/\\s]+([\\w\\.]+)/i                                          // Opera < 9.80\n            ], [NAME, VERSION], [\n\n            /(opios)[\\/\\s]+([\\w\\.]+)/i                                          // Opera mini on iphone >= 8.0\n            ], [[NAME, 'Opera Mini'], VERSION], [\n\n            /\\s(opr)\\/([\\w\\.]+)/i                                               // Opera Webkit\n            ], [[NAME, 'Opera'], VERSION], [\n\n            // Mixed\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n            // Trident based\n            /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Avant/IEMobile/SlimBrowser\n            /(bidubrowser|baidubrowser)[\\/\\s]?([\\w\\.]+)/i,                      // Baidu Browser\n            /(?:ms|\\()(ie)\\s([\\w\\.]+)/i,                                        // Internet Explorer\n\n            // Webkit/KHTML based\n            /(rekonq)\\/([\\w\\.]*)/i,                                             // Rekonq\n            /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i\n                                                                                // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            ], [NAME, VERSION], [\n\n            /(konqueror)\\/([\\w\\.]+)/i                                           // Konqueror\n            ], [[NAME, 'Konqueror'], VERSION], [\n\n            /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i                         // IE11\n            ], [[NAME, 'IE'], VERSION], [\n\n            /(edge|edgios|edga|edg)\\/((\\d+)?[\\w\\.]+)/i                          // Microsoft Edge\n            ], [[NAME, 'Edge'], VERSION], [\n\n            /(yabrowser)\\/([\\w\\.]+)/i                                           // Yandex\n            ], [[NAME, 'Yandex'], VERSION], [\n\n            /(Avast)\\/([\\w\\.]+)/i                                               // Avast Secure Browser\n            ], [[NAME, 'Avast Secure Browser'], VERSION], [\n\n            /(AVG)\\/([\\w\\.]+)/i                                                 // AVG Secure Browser\n            ], [[NAME, 'AVG Secure Browser'], VERSION], [\n\n            /(puffin)\\/([\\w\\.]+)/i                                              // Puffin\n            ], [[NAME, 'Puffin'], VERSION], [\n\n            /(focus)\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [[NAME, 'Firefox Focus'], VERSION], [\n\n            /(opt)\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [[NAME, 'Opera Touch'], VERSION], [\n\n            /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i         // UCBrowser\n            ], [[NAME, 'UCBrowser'], VERSION], [\n\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\n            ], [[NAME, /_/g, ' '], VERSION], [\n\n            /(windowswechat qbcore)\\/([\\w\\.]+)/i                                // WeChat Desktop for Windows Built-in Browser\n            ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [\n\n            /(micromessenger)\\/([\\w\\.]+)/i                                      // WeChat\n            ], [[NAME, 'WeChat'], VERSION], [\n\n            /(brave)\\/([\\w\\.]+)/i                                               // Brave browser\n            ], [[NAME, 'Brave'], VERSION], [\n\n            /(qqbrowserlite)\\/([\\w\\.]+)/i                                       // QQBrowserLite\n            ], [NAME, VERSION], [\n\n            /(QQ)\\/([\\d\\.]+)/i                                                  // QQ, aka ShouQ\n            ], [NAME, VERSION], [\n\n            /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i                                    // QQBrowser\n            ], [NAME, VERSION], [\n\n            /(baiduboxapp)[\\/\\s]?([\\w\\.]+)/i                                    // Baidu App\n            ], [NAME, VERSION], [\n\n            /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i                                   // 2345 Browser\n            ], [NAME, VERSION], [\n\n            /(MetaSr)[\\/\\s]?([\\w\\.]+)/i                                         // SouGouBrowser\n            ], [NAME], [\n\n            /(LBBROWSER)/i                                                      // LieBao Browser\n            ], [NAME], [\n\n            /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i                                   // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI Browser']], [\n\n            /;fbav\\/([\\w\\.]+);/i                                                // Facebook App for iOS & Android\n            ], [VERSION, [NAME, 'Facebook']], [\n\n            /safari\\s(line)\\/([\\w\\.]+)/i,                                       // Line App for iOS\n            /android.+(line)\\/([\\w\\.]+)\\/iab/i                                  // Line App for Android\n            ], [NAME, VERSION], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i                                 // Chrome Headless\n            ], [VERSION, [NAME, 'Chrome Headless']], [\n\n            /\\swv\\).+(chrome)\\/([\\w\\.]+)/i                                      // Chrome WebView\n            ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n            /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [                // Oculus / Samsung Browser\n\n            /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i        // Android Browser\n            ], [VERSION, [NAME, 'Android Browser']], [\n\n            /(sailfishbrowser)\\/([\\w\\.]+)/i                                     // Sailfish Browser\n            ], [[NAME, 'Sailfish Browser'], VERSION], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n                                                                                // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /(dolfin)\\/([\\w\\.]+)/i                                              // Dolphin\n            ], [[NAME, 'Dolphin'], VERSION], [\n\n            /(qihu|qhbrowser|qihoobrowser|360browser)/i                         // 360\n            ], [[NAME, '360 Browser']], [\n\n            /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i                             // Chrome for Android/iOS\n            ], [[NAME, 'Chrome'], VERSION], [\n\n            /(coast)\\/([\\w\\.]+)/i                                               // Opera Coast\n            ], [[NAME, 'Opera Coast'], VERSION], [\n\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, 'Firefox']], [\n\n            /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i                       // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n\n            /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i                    // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n\n            /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i  // Google Search Appliance on iOS\n            ], [[NAME, 'GSA'], VERSION], [\n\n            /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i                     // Safari < 3.0\n            ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape)\\/([\\w\\.-]+)/i                                 // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i,                          // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n            /(links)\\s\\(([\\w\\.]+)/i,                                            // Links\n            /(gobrowser)\\/?([\\w\\.]*)/i,                                         // GoBrowser\n            /(ice\\s?browser)\\/v?([\\w\\._]+)/i,                                   // ICE Browser\n            /(mosaic)[\\/\\s]([\\w\\.]+)/i                                          // Mosaic\n            ], [NAME, VERSION]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i                     // AMD64\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, util.lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows\\s(ce|mobile);\\sppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i                           // PowerPC\n            ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, util.lowerize]]\n        ],\n\n        device : [[\n\n            /\\((ipad|playbook);[\\w\\s\\),;-]+(rim|apple)/i                        // iPad/PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/                                  // iPad\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n            /(apple\\s{0,1}tv)/i                                                 // Apple TV\n            ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [\n\n            /(archos)\\s(gamepad2?)/i,                                           // Archos\n            /(hp).+(touchpad)/i,                                                // HP TouchPad\n            /(hp).+(tablet)/i,                                                  // HP Tablet\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /\\s(nook)[\\w\\s]+build\\/(\\w+)/i,                                     // Nook\n            /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i                                  // Dell Streak\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(kf[A-z]+)\\sbuild\\/.+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n            /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i                         // Fire Phone\n            ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n            /android.+aft([bms])\\sbuild/i                                       // Fire TV\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n            /\\((ip[honed|\\s\\w*]+);.+(apple)/i                                   // iPod/iPhone\n            ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n            /\\((ip[honed|\\s\\w*]+);/i                                            // iPod/iPhone\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n            /(blackberry)[\\s-]?(\\w+)/i,                                         // BlackBerry\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n                                                                                // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n            /(hp)\\s([\\w\\s]+\\w)/i,                                               // HP iPAQ\n            /(asus)-?(\\w+)/i                                                    // Asus\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /\\(bb10;\\s(\\w+)/i                                                   // BlackBerry 10\n            ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n                                                                                // Asus Tablets\n            /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone|p00c)/i\n            ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n            /(sony)\\s(tablet\\s[ps])\\sbuild\\//i,                                  // Sony\n            /(sony)?(?:sgp.+)\\sbuild\\//i\n            ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n            /android.+\\s([c-g]\\d{4}|so[-l]\\w+)(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n            /\\s(ouya)\\s/i,                                                      // Ouya\n            /(nintendo)\\s([wids3u]+)/i                                          // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n            /android.+;\\s(shield)\\sbuild/i                                      // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n            /(playstation\\s[34portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n            /(sprint\\s(\\w+))/i                                                  // Sprint Phones\n            ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n            /(htc)[;_\\s-]+([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i,                        // HTC\n            /(zte)-(\\w*)/i,                                                     // ZTE\n            /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n                                                                                // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            /(nexus\\s9)/i                                                       // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n            /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n            /(nexus\\s6p|vog-l29|ane-lx1|eml-l29)/i                              // Huawei\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n            /android.+(bah2?-a?[lw]\\d{2})/i                                     // Huawei MediaPad\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n\n            /(microsoft);\\s(lumia[\\s\\w]+)/i                                     // Microsoft Lumia\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i                                   // Microsoft Xbox\n            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n                                                                                // Motorola\n            /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n            /mot[\\s-]?(\\w*)/i,\n            /(XT\\d{3,4}) build\\//i,\n            /(nexus\\s6)/i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n            /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i            // HbbTV devices\n            ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n            /\\(dtv[\\);].+(aquos)/i                                              // Sharp\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n            /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n            /((SM-T\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [                  // Samsung\n            /smart-tv.+(samsung)/i\n            ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n            /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n            /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n            /sec-((sgh\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n            /sie-(\\w*)/i                                                        // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n            /(maemo|nokia).*(n900|lumia\\s\\d+)/i,                                // Nokia\n            /(nokia)[\\s_-]?([\\w-]*)/i\n            ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n            /android[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i                   // Acer\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            /android.+([vl]k\\-?\\d{3})\\s+build/i                                 // LG Tablet\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n            /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i                     // LG Tablet\n            ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n            /(lg) netcast\\.tv/i                                                 // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nexus\\s[45])/i,                                                   // LG\n            /lg[e;\\s\\/-]+(\\w*)/i,\n            /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n            /(lenovo)\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+))/i             // Lenovo tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /android.+(ideatab[a-z0-9\\-\\s]+)/i                                  // Lenovo\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n            /(lenovo)[_\\s-]?([\\w-]+)/i\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /linux;.+((jolla));/i                                               // Jolla\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /((pebble))app\\/[\\d\\.]+\\s/i                                         // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n            /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i                            // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n\n            /android.+;\\s(glass)\\s\\d/i                                          // Google Glass\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n            /android.+;\\s(pixel c)[\\s)]/i                                       // Google Pixel C\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n            /android.+;\\s(pixel( [23])?( xl)?)[\\s)]/i                              // Google Pixel\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n            /android.+;\\s(\\w+)\\s+build\\/hm\\1/i,                                 // Xiaomi Hongmi 'numeric' models\n            /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i,               // Xiaomi Hongmi\n            /android.+(mi[\\s\\-_]*(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i,    \n                                                                                // Xiaomi Mi\n            /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i       // Redmi Phones\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n            /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i            // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n            /android.+;\\s(m[1-5]\\snote)\\sbuild/i                                // Meizu\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n            /(mz)-([\\w-]{2,})/i\n            ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+a000(1)\\s+build/i,                                        // OnePlus\n            /android.+oneplus\\s(a\\d{4})[\\s)]/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i                            // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n            /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i                      // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i                         // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i     // Barnes & Noble Tablet\n            ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i                           // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n            /android.+;\\s(k88)\\sbuild/i                                         // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i                         // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i                              // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i                         // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n            /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n            /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i        // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i                            // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i                    // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [                    // Voice Xtreme Phones\n\n            /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i                     // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+;\\s(PH-1)\\s/i\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [                // Essential PH-1\n\n            /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i          // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i          // Le Pan Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i                         // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i                // Trinity Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*TU_(1491)\\s+build/i                               // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n            /android.+(KS(.+))\\s+build/i                                        // Amazon Kindle Tablets\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n            /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i                      // Gigaset Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /\\s(tablet|tab)[;\\/]/i,                                             // Unidentifiable Tablet\n            /\\s(mobile)(?:[;\\/]|\\ssafari)/i                                     // Unidentifiable Mobile\n            ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n            /[\\s\\/\\(](smart-?tv)[;\\)]/i                                         // SmartTV\n            ], [[TYPE, SMARTTV]], [\n\n            /(android[\\w\\.\\s\\-]{0,9});.+build/i                                 // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+\\sedge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, 'EdgeHTML']], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,     \n                                                                                // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n            /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,                          // KHTML/Tasman/Links\n            /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i                                      // iCab\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9}).+(gecko)/i                                       // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows based\n            /microsoft\\s(windows)\\s(vista|xp)/i                                 // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows)\\snt\\s6\\.2;\\s(arm)/i,                                     // Windows RT\n            /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i,                   // Windows Phone\n            /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n            ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n            /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n            ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n            // Mobile/Embedded OS\n            /\\((bb)(10);/i                                                      // BlackBerry 10\n            ], [[NAME, 'BlackBerry'], VERSION], [\n            /(blackberry)\\w*\\/?([\\w\\.]*)/i,                                     // Blackberry\n            /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i,                                    // Tizen/KaiOS\n            /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i\n                                                                                // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n            ], [NAME, VERSION], [\n            /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i                  // Symbian\n            ], [[NAME, 'Symbian'], VERSION], [\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME], [\n            /mozilla.+\\(mobile;.+gecko.+firefox/i                               // Firefox OS\n            ], [[NAME, 'Firefox OS'], VERSION], [\n\n            // Console\n            /(nintendo|playstation)\\s([wids34portablevu]+)/i,                   // Nintendo/Playstation\n\n            // GNU/Linux based\n            /(mint)[\\/\\s\\(]?(\\w*)/i,                                            // Mint\n            /(mageia|vectorlinux)[;\\s]/i,                                       // Mageia/VectorLinux\n            /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n                                                                                // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n                                                                                // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n            /(hurd|linux)\\s?([\\w\\.]*)/i,                                        // Hurd/Linux\n            /(gnu)\\s?([\\w\\.]*)/i                                                // GNU\n            ], [NAME, VERSION], [\n\n            /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i                                       // Chromium OS\n            ], [[NAME, 'Chromium OS'], VERSION],[\n\n            // Solaris\n            /(sunos)\\s?([\\w\\.\\d]*)/i                                            // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n\n            // BSD based\n            /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i                    // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n            ], [NAME, VERSION],[\n\n            /(haiku)\\s(\\w+)/i                                                   // Haiku\n            ], [NAME, VERSION],[\n\n            /cfnetwork\\/.+darwin/i,\n            /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i             // iOS\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n            /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n            /(macintosh|mac(?=_powerpc)\\s)/i                                    // Mac OS\n            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n            // Other\n            /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i,                             // Solaris\n            /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i,                                // AIX\n            /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n                                                                                // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n            /(unix)\\s?([\\w\\.]*)/i                                               // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n\n    /////////////////\n    // Constructor\n    ////////////////\n    var UAParser = function (uastring, extensions) {\n\n        if (typeof uastring === 'object') {\n            extensions = uastring;\n            uastring = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(uastring, extensions).getResult();\n        }\n\n        var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n        var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n        this.getBrowser = function () {\n            var browser = { name: undefined, version: undefined };\n            mapper.rgx.call(browser, ua, rgxmap.browser);\n            browser.major = util.major(browser.version); // deprecated\n            return browser;\n        };\n        this.getCPU = function () {\n            var cpu = { architecture: undefined };\n            mapper.rgx.call(cpu, ua, rgxmap.cpu);\n            return cpu;\n        };\n        this.getDevice = function () {\n            var device = { vendor: undefined, model: undefined, type: undefined };\n            mapper.rgx.call(device, ua, rgxmap.device);\n            return device;\n        };\n        this.getEngine = function () {\n            var engine = { name: undefined, version: undefined };\n            mapper.rgx.call(engine, ua, rgxmap.engine);\n            return engine;\n        };\n        this.getOS = function () {\n            var os = { name: undefined, version: undefined };\n            mapper.rgx.call(os, ua, rgxmap.os);\n            return os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return ua;\n        };\n        this.setUA = function (uastring) {\n            ua = uastring;\n            return this;\n        };\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER = {\n        NAME    : NAME,\n        MAJOR   : MAJOR, // deprecated\n        VERSION : VERSION\n    };\n    UAParser.CPU = {\n        ARCHITECTURE : ARCHITECTURE\n    };\n    UAParser.DEVICE = {\n        MODEL   : MODEL,\n        VENDOR  : VENDOR,\n        TYPE    : TYPE,\n        CONSOLE : CONSOLE,\n        MOBILE  : MOBILE,\n        SMARTTV : SMARTTV,\n        TABLET  : TABLET,\n        WEARABLE: WEARABLE,\n        EMBEDDED: EMBEDDED\n    };\n    UAParser.ENGINE = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n    UAParser.OS = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n\n    ///////////\n    // Export\n    //////////\n\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === 'function' && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (window) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = window && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (uastring) {\n            parser.setUA(uastring);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n  var expressions = range.split(orRegex);\n\n  if (expressions.length > 1) {\n    return expressions.some(function (range) {\n      return VersionRange.contains(range, version);\n    });\n  } else {\n    range = expressions[0].trim();\n    return checkRangeExpression(range, version);\n  }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n  var expressions = range.split(rangeRegex);\n  !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n  if (expressions.length === 1) {\n    return checkSimpleExpression(expressions[0], version);\n  } else {\n    var startVersion = expressions[0],\n        endVersion = expressions[1];\n    !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n    return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n  }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n  range = range.trim();\n\n  if (range === '') {\n    return true;\n  }\n\n  var versionComponents = version.split(componentRegex);\n\n  var _getModifierAndCompon = getModifierAndComponents(range),\n      modifier = _getModifierAndCompon.modifier,\n      rangeComponents = _getModifierAndCompon.rangeComponents;\n\n  switch (modifier) {\n    case '<':\n      return checkLessThan(versionComponents, rangeComponents);\n\n    case '<=':\n      return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n    case '>=':\n      return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n    case '>':\n      return checkGreaterThan(versionComponents, rangeComponents);\n\n    case '~':\n    case '~>':\n      return checkApproximateVersion(versionComponents, rangeComponents);\n\n    default:\n      return checkEqual(versionComponents, rangeComponents);\n  }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n  return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n  var result = compareComponents(a, b);\n  return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n  return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n  var result = compareComponents(a, b);\n  return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n  return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n  var lowerBound = b.slice();\n  var upperBound = b.slice();\n\n  if (upperBound.length > 1) {\n    upperBound.pop();\n  }\n\n  var lastIndex = upperBound.length - 1;\n  var numeric = parseInt(upperBound[lastIndex], 10);\n\n  if (isNumber(numeric)) {\n    upperBound[lastIndex] = numeric + 1 + '';\n  }\n\n  return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n  var rangeComponents = range.split(componentRegex);\n  var matches = rangeComponents[0].match(modifierRegex);\n  !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n  return {\n    modifier: matches[1],\n    rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n  };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n  return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n  return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n  for (var i = array.length; i < length; i++) {\n    array[i] = '0';\n  }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n *   in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n *   and all of its successors in `a`\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {array<array<string>>}\n */\n\n\nfunction normalizeVersions(a, b) {\n  a = a.slice();\n  b = b.slice();\n  zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n  for (var i = 0; i < b.length; i++) {\n    var matches = b[i].match(/^[x*]$/i);\n\n    if (matches) {\n      b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n      if (matches[0] === '*' && i === b.length - 1) {\n        for (var j = i; j < a.length; j++) {\n          a[j] = '0';\n        }\n      }\n    }\n  }\n\n  zeroPad(b, a.length);\n  return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n  var aPrefix = a.match(numericRegex)[1];\n  var bPrefix = b.match(numericRegex)[1];\n  var aNumeric = parseInt(aPrefix, 10);\n  var bNumeric = parseInt(bPrefix, 10);\n\n  if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n    return compare(aNumeric, bNumeric);\n  } else {\n    return compare(a, b);\n  }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n  !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n  if (a > b) {\n    return 1;\n  } else if (a < b) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n  var _normalizeVersions = normalizeVersions(a, b),\n      aNormalized = _normalizeVersions[0],\n      bNormalized = _normalizeVersions[1];\n\n  for (var i = 0; i < bNormalized.length; i++) {\n    var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n    if (result) {\n      return result;\n    }\n  }\n\n  return 0;\n}\n\nvar VersionRange = {\n  /**\n   * Checks whether `version` satisfies the `range` specification.\n   *\n   * We support a subset of the expressions defined in\n   * https://www.npmjs.org/doc/misc/semver.html:\n   *\n   *    version   Must match version exactly\n   *    =version  Same as just version\n   *    >version  Must be greater than version\n   *    >=version Must be greater than or equal to version\n   *    <version  Must be less than version\n   *    <=version Must be less than or equal to version\n   *    ~version  Must be at least version, but less than the next significant\n   *              revision above version:\n   *              \"~1.2.3\" is equivalent to \">= 1.2.3 and < 1.3\"\n   *    ~>version Equivalent to ~version\n   *    1.2.x     Must match \"1.2.x\", where \"x\" is a wildcard that matches\n   *              anything\n   *    1.2.*     Similar to \"1.2.x\", but \"*\" in the trailing position is a\n   *              \"greedy\" wildcard, so will match any number of additional\n   *              components:\n   *              \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n   *    *         Any version\n   *    \"\"        (Empty string) Same as *\n   *    v1 - v2   Equivalent to \">= v1 and <= v2\"\n   *    r1 || r2  Passes if either r1 or r2 are satisfied\n   *\n   * @param {string} range\n   * @param {string} version\n   * @returns {boolean}\n   */\n  contains: function contains(range, version) {\n    return checkOrExpression(range.trim(), version.trim());\n  }\n};\nmodule.exports = VersionRange;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n *  - the property value\n *  - the property name\n *  - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n  if (!object) {\n    return null;\n  }\n\n  var result = {};\n\n  for (var name in object) {\n    if (hasOwnProperty.call(object, name)) {\n      result[name] = callback.call(context, object[name], name, object);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n  var cache = {};\n  return function (string) {\n    if (!cache.hasOwnProperty(string)) {\n      cache[string] = callback.call(this, string);\n    }\n\n    return cache[string];\n  };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nmodule.exports = experimentalTreeDataSupport ? require(\"./DraftEditorContentsExperimental.react\") : require(\"./DraftEditorContents-core.react\");","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorContents.react.js for tree nodes\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlockNode = require(\"./DraftEditorBlockNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\nvar DraftEditorContentsExperimental =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorContentsExperimental, _React$Component);\n\n  function DraftEditorContentsExperimental() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorContentsExperimental.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var prevEditorState = this.props.editorState;\n    var nextEditorState = nextProps.editorState;\n    var prevDirectionMap = prevEditorState.getDirectionMap();\n    var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n    if (prevDirectionMap !== nextDirectionMap) {\n      return true;\n    }\n\n    var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n    var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n    if (didHaveFocus !== nowHasFocus) {\n      return true;\n    }\n\n    var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n    var wasComposing = prevEditorState.isInCompositionMode();\n    var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n    // rendered state, there's nothing new to be done.\n\n    if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n      return false;\n    }\n\n    var prevContent = prevEditorState.getCurrentContent();\n    var nextContent = nextEditorState.getCurrentContent();\n    var prevDecorator = prevEditorState.getDecorator();\n    var nextDecorator = nextEditorState.getDecorator();\n    return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        blockRenderMap = _this$props.blockRenderMap,\n        blockRendererFn = _this$props.blockRendererFn,\n        blockStyleFn = _this$props.blockStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        customStyleFn = _this$props.customStyleFn,\n        editorState = _this$props.editorState,\n        editorKey = _this$props.editorKey,\n        textDirectionality = _this$props.textDirectionality;\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var forceSelection = editorState.mustForceSelection();\n    var decorator = editorState.getDecorator();\n    var directionMap = nullthrows(editorState.getDirectionMap());\n    var blocksAsArray = content.getBlocksAsArray();\n    var rootBlock = blocksAsArray[0];\n    var processedBlocks = [];\n    var nodeBlock = rootBlock;\n\n    while (nodeBlock) {\n      var blockKey = nodeBlock.getKey();\n      var blockProps = {\n        blockRenderMap: blockRenderMap,\n        blockRendererFn: blockRendererFn,\n        blockStyleFn: blockStyleFn,\n        contentState: content,\n        customStyleFn: customStyleFn,\n        customStyleMap: customStyleMap,\n        decorator: decorator,\n        editorKey: editorKey,\n        editorState: editorState,\n        forceSelection: forceSelection,\n        selection: selection,\n        block: nodeBlock,\n        direction: textDirectionality ? textDirectionality : directionMap.get(blockKey),\n        tree: editorState.getBlockTree(blockKey)\n      };\n      var configForType = blockRenderMap.get(nodeBlock.getType()) || blockRenderMap.get('unstyled');\n      var wrapperTemplate = configForType.wrapper;\n      processedBlocks.push({\n        /* $FlowFixMe(>=0.112.0 site=www,mobile) This comment suppresses an\n         * error found when Flow v0.112 was deployed. To see the error delete\n         * this comment and run Flow. */\n        block: React.createElement(DraftEditorBlockNode, _extends({\n          key: blockKey\n        }, blockProps)),\n        wrapperTemplate: wrapperTemplate,\n        key: blockKey,\n        offsetKey: DraftOffsetKey.encode(blockKey, 0, 0)\n      });\n      var nextBlockKey = nodeBlock.getNextSiblingKey();\n      nodeBlock = nextBlockKey ? content.getBlockForKey(nextBlockKey) : null;\n    } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n    var outputBlocks = [];\n\n    for (var ii = 0; ii < processedBlocks.length;) {\n      var info = processedBlocks[ii];\n\n      if (info.wrapperTemplate) {\n        var blocks = [];\n\n        do {\n          blocks.push(processedBlocks[ii].block);\n          ii++;\n        } while (ii < processedBlocks.length && processedBlocks[ii].wrapperTemplate === info.wrapperTemplate);\n\n        var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n          key: info.key + '-wrap',\n          'data-offset-key': info.offsetKey\n        }, blocks);\n        outputBlocks.push(wrapperElement);\n      } else {\n        outputBlocks.push(info.block);\n        ii++;\n      }\n    }\n\n    return React.createElement(\"div\", {\n      \"data-contents\": \"true\"\n    }, outputBlocks);\n  };\n\n  return DraftEditorContentsExperimental;\n}(React.Component);\n\nmodule.exports = DraftEditorContentsExperimental;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorBlock.react.js and DraftEditorContents.react.js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar DraftEditorNode = require(\"./DraftEditorNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar SCROLL_BUFFER = 10;\nvar List = Immutable.List; // we should harden up the bellow flow types to make them more strict\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n  return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * We will use this helper to identify blocks that need to be wrapped but have siblings that\n * also share the same wrapper element, this way we can do the wrapping once the last sibling\n * is added.\n */\n\n\nvar shouldNotAddWrapperElement = function shouldNotAddWrapperElement(block, contentState) {\n  var nextSiblingKey = block.getNextSiblingKey();\n  return nextSiblingKey ? contentState.getBlockForKey(nextSiblingKey).getType() === block.getType() : false;\n};\n\nvar applyWrapperElementToSiblings = function applyWrapperElementToSiblings(wrapperTemplate, Element, nodes) {\n  var wrappedSiblings = []; // we check back until we find a sibling that does not have same wrapper\n\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = nodes.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var sibling = _step.value;\n\n      if (sibling.type !== Element) {\n        break;\n      }\n\n      wrappedSiblings.push(sibling);\n    } // we now should remove from acc the wrappedSiblings and add them back under same wrap\n\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n        _iterator[\"return\"]();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n\n  nodes.splice(nodes.indexOf(wrappedSiblings[0]), wrappedSiblings.length + 1);\n  var childrenIs = wrappedSiblings.reverse();\n  var key = childrenIs[0].key;\n  nodes.push(React.cloneElement(wrapperTemplate, {\n    key: \"\".concat(key, \"-wrap\"),\n    'data-offset-key': DraftOffsetKey.encode(key, 0, 0)\n  }, childrenIs));\n  return nodes;\n};\n\nvar getDraftRenderConfig = function getDraftRenderConfig(block, blockRenderMap) {\n  var configForType = blockRenderMap.get(block.getType()) || blockRenderMap.get('unstyled');\n  var wrapperTemplate = configForType.wrapper;\n  var Element = configForType.element || blockRenderMap.get('unstyled').element;\n  return {\n    Element: Element,\n    wrapperTemplate: wrapperTemplate\n  };\n};\n\nvar getCustomRenderConfig = function getCustomRenderConfig(block, blockRendererFn) {\n  var customRenderer = blockRendererFn(block);\n\n  if (!customRenderer) {\n    return {};\n  }\n\n  var CustomComponent = customRenderer.component,\n      customProps = customRenderer.props,\n      customEditable = customRenderer.editable;\n  return {\n    CustomComponent: CustomComponent,\n    customProps: customProps,\n    customEditable: customEditable\n  };\n};\n\nvar getElementPropsConfig = function getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, ref) {\n  var elementProps = {\n    'data-block': true,\n    'data-editor': editorKey,\n    'data-offset-key': offsetKey,\n    key: block.getKey(),\n    ref: ref\n  };\n  var customClass = blockStyleFn(block);\n\n  if (customClass) {\n    elementProps.className = customClass;\n  }\n\n  if (customConfig.customEditable !== undefined) {\n    elementProps = _objectSpread({}, elementProps, {\n      contentEditable: customConfig.customEditable,\n      suppressContentEditableWarning: true\n    });\n  }\n\n  return elementProps;\n};\n\nvar DraftEditorBlockNode =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorBlockNode, _React$Component);\n\n  function DraftEditorBlockNode() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", React.createRef());\n\n    return _this;\n  }\n\n  var _proto = DraftEditorBlockNode.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var _this$props = this.props,\n        block = _this$props.block,\n        direction = _this$props.direction,\n        tree = _this$props.tree;\n    var isContainerNode = !block.getChildKeys().isEmpty();\n    var blockHasChanged = block !== nextProps.block || tree !== nextProps.tree || direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection; // if we have children at this stage we always re-render container nodes\n    // else if its a root node we avoid re-rendering by checking for block updates\n\n    return isContainerNode || blockHasChanged;\n  }\n  /**\n   * When a block is mounted and overlaps the selection state, we need to make\n   * sure that the cursor is visible to match native behavior. This may not\n   * be the case if the user has pressed `RETURN` or pasted some content, since\n   * programatically creating these new blocks and setting the DOM selection\n   * will miss out on the browser natively scrolling to that position.\n   *\n   * To replicate native behavior, if the block overlaps the selection state\n   * on mount, force the scroll position. Check the scroll state of the scroll\n   * parent, and adjust it to align the entire block to the bottom of the\n   * scroll parent.\n   */\n  ;\n\n  _proto.componentDidMount = function componentDidMount() {\n    var selection = this.props.selection;\n    var endKey = selection.getEndKey();\n\n    if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n      return;\n    }\n\n    var blockNode = this.wrapperRef.current;\n\n    if (!blockNode) {\n      // This Block Node was rendered without a wrapper element.\n      return;\n    }\n\n    var scrollParent = Style.getScrollParent(blockNode);\n    var scrollPosition = getScrollPosition(scrollParent);\n    var scrollDelta;\n\n    if (scrollParent === window) {\n      var nodePosition = getElementPosition(blockNode);\n      var nodeBottom = nodePosition.y + nodePosition.height;\n      var viewportHeight = getViewportDimensions().height;\n      scrollDelta = nodeBottom - viewportHeight;\n\n      if (scrollDelta > 0) {\n        window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n      }\n    } else {\n      !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n      var htmlBlockNode = blockNode;\n      var blockBottom = htmlBlockNode.offsetHeight + htmlBlockNode.offsetTop;\n      var scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n      scrollDelta = blockBottom - scrollBottom;\n\n      if (scrollDelta > 0) {\n        Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n      }\n    }\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props2 = this.props,\n        block = _this$props2.block,\n        blockRenderMap = _this$props2.blockRenderMap,\n        blockRendererFn = _this$props2.blockRendererFn,\n        blockStyleFn = _this$props2.blockStyleFn,\n        contentState = _this$props2.contentState,\n        decorator = _this$props2.decorator,\n        editorKey = _this$props2.editorKey,\n        editorState = _this$props2.editorState,\n        customStyleFn = _this$props2.customStyleFn,\n        customStyleMap = _this$props2.customStyleMap,\n        direction = _this$props2.direction,\n        forceSelection = _this$props2.forceSelection,\n        selection = _this$props2.selection,\n        tree = _this$props2.tree;\n    var children = null;\n\n    if (block.children.size) {\n      children = block.children.reduce(function (acc, key) {\n        var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n        var child = contentState.getBlockForKey(key);\n        var customConfig = getCustomRenderConfig(child, blockRendererFn);\n        var Component = customConfig.CustomComponent || DraftEditorBlockNode;\n\n        var _getDraftRenderConfig = getDraftRenderConfig(child, blockRenderMap),\n            Element = _getDraftRenderConfig.Element,\n            wrapperTemplate = _getDraftRenderConfig.wrapperTemplate;\n\n        var elementProps = getElementPropsConfig(child, editorKey, offsetKey, blockStyleFn, customConfig, null);\n\n        var childProps = _objectSpread({}, _this2.props, {\n          tree: editorState.getBlockTree(key),\n          blockProps: customConfig.customProps,\n          offsetKey: offsetKey,\n          block: child\n        });\n\n        acc.push(React.createElement(Element, elementProps, React.createElement(Component, childProps)));\n\n        if (!wrapperTemplate || shouldNotAddWrapperElement(child, contentState)) {\n          return acc;\n        } // if we are here it means we are the last block\n        // that has a wrapperTemplate so we should wrap itself\n        // and all other previous siblings that share the same wrapper\n\n\n        applyWrapperElementToSiblings(wrapperTemplate, Element, acc);\n        return acc;\n      }, []);\n    }\n\n    var blockKey = block.getKey();\n    var offsetKey = DraftOffsetKey.encode(blockKey, 0, 0);\n    var customConfig = getCustomRenderConfig(block, blockRendererFn);\n    var Component = customConfig.CustomComponent;\n    var blockNode = Component != null ? React.createElement(Component, _extends({}, this.props, {\n      tree: editorState.getBlockTree(blockKey),\n      blockProps: customConfig.customProps,\n      offsetKey: offsetKey,\n      block: block\n    })) : React.createElement(DraftEditorNode, {\n      block: block,\n      children: children,\n      contentState: contentState,\n      customStyleFn: customStyleFn,\n      customStyleMap: customStyleMap,\n      decorator: decorator,\n      direction: direction,\n      forceSelection: forceSelection,\n      hasSelection: isBlockOnSelectionEdge(selection, blockKey),\n      selection: selection,\n      tree: tree\n    });\n\n    if (block.getParentKey()) {\n      return blockNode;\n    }\n\n    var _getDraftRenderConfig2 = getDraftRenderConfig(block, blockRenderMap),\n        Element = _getDraftRenderConfig2.Element;\n\n    var elementProps = getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, this.wrapperRef); // root block nodes needs to be wrapped\n\n    return React.createElement(Element, elementProps, blockNode);\n  };\n\n  return DraftEditorBlockNode;\n}(React.Component);\n\nmodule.exports = DraftEditorBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorDecoratedLeaves = require(\"./DraftEditorDecoratedLeaves.react\");\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar List = Immutable.List;\n\nvar DraftEditorNode =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorNode, _React$Component);\n\n  function DraftEditorNode() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorNode.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        block = _this$props.block,\n        contentState = _this$props.contentState,\n        customStyleFn = _this$props.customStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        decorator = _this$props.decorator,\n        direction = _this$props.direction,\n        forceSelection = _this$props.forceSelection,\n        hasSelection = _this$props.hasSelection,\n        selection = _this$props.selection,\n        tree = _this$props.tree;\n    var blockKey = block.getKey();\n    var text = block.getText();\n    var lastLeafSet = tree.size - 1;\n    var children = this.props.children || tree.map(function (leafSet, ii) {\n      var decoratorKey = leafSet.get('decoratorKey');\n      var leavesForLeafSet = leafSet.get('leaves');\n      var lastLeaf = leavesForLeafSet.size - 1;\n      var Leaves = leavesForLeafSet.map(function (leaf, jj) {\n        var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n        var start = leaf.get('start');\n        var end = leaf.get('end');\n        return React.createElement(DraftEditorLeaf, {\n          key: offsetKey,\n          offsetKey: offsetKey,\n          block: block,\n          start: start,\n          selection: hasSelection ? selection : null,\n          forceSelection: forceSelection,\n          text: text.slice(start, end),\n          styleSet: block.getInlineStyleAt(start),\n          customStyleMap: customStyleMap,\n          customStyleFn: customStyleFn,\n          isLast: decoratorKey === lastLeafSet && jj === lastLeaf\n        });\n      }).toArray();\n\n      if (!decoratorKey || !decorator) {\n        return Leaves;\n      }\n\n      return React.createElement(DraftEditorDecoratedLeaves, {\n        block: block,\n        children: Leaves,\n        contentState: contentState,\n        decorator: decorator,\n        decoratorKey: decoratorKey,\n        direction: direction,\n        leafSet: leafSet,\n        text: text,\n        key: ii\n      });\n    }).toArray();\n    return React.createElement(\"div\", {\n      \"data-offset-key\": DraftOffsetKey.encode(blockKey, 0, 0),\n      className: cx({\n        'public/DraftStyleDefault/block': true,\n        'public/DraftStyleDefault/ltr': direction === 'LTR',\n        'public/DraftStyleDefault/rtl': direction === 'RTL'\n      })\n    }, children);\n  };\n\n  return DraftEditorNode;\n}(React.Component);\n\nmodule.exports = DraftEditorNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar DraftEditorDecoratedLeaves =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorDecoratedLeaves, _React$Component);\n\n  function DraftEditorDecoratedLeaves() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorDecoratedLeaves.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        block = _this$props.block,\n        children = _this$props.children,\n        contentState = _this$props.contentState,\n        decorator = _this$props.decorator,\n        decoratorKey = _this$props.decoratorKey,\n        direction = _this$props.direction,\n        leafSet = _this$props.leafSet,\n        text = _this$props.text;\n    var blockKey = block.getKey();\n    var leavesForLeafSet = leafSet.get('leaves');\n    var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n    var decoratorProps = decorator.getPropsForKey(decoratorKey);\n    var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, parseInt(decoratorKey, 10), 0);\n    var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n    // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n    var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), direction);\n    return React.createElement(DecoratorComponent, _extends({}, decoratorProps, {\n      contentState: contentState,\n      decoratedText: decoratedText,\n      dir: dir,\n      key: decoratorOffsetKey,\n      entityKey: block.getEntityAt(leafSet.get('start')),\n      offsetKey: decoratorOffsetKey\n    }), children);\n  };\n\n  return DraftEditorDecoratedLeaves;\n}(React.Component);\n\nmodule.exports = DraftEditorDecoratedLeaves;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\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\nvar React = require(\"react\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\"); // In IE, spans with <br> tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\n\n\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n/**\n * Check whether the node should be considered a newline.\n */\n\nfunction isNewline(node) {\n  return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\n/**\n * Placeholder elements for empty text content.\n *\n * What is this `data-text` attribute, anyway? It turns out that we need to\n * put an attribute on the lowest-level text node in order to preserve correct\n * spellcheck handling. If the <span> is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the <span> has an attribute, this appears not to happen.\n * See http://jsfiddle.net/9khdavod/ for the failure case, and\n * http://jsfiddle.net/7pg143f7/ for the fixed case.\n */\n\n\nvar NEWLINE_A = function NEWLINE_A(ref) {\n  return useNewlineChar ? React.createElement(\"span\", {\n    key: \"A\",\n    \"data-text\": \"true\",\n    ref: ref\n  }, '\\n') : React.createElement(\"br\", {\n    key: \"A\",\n    \"data-text\": \"true\",\n    ref: ref\n  });\n};\n\nvar NEWLINE_B = function NEWLINE_B(ref) {\n  return useNewlineChar ? React.createElement(\"span\", {\n    key: \"B\",\n    \"data-text\": \"true\",\n    ref: ref\n  }, '\\n') : React.createElement(\"br\", {\n    key: \"B\",\n    \"data-text\": \"true\",\n    ref: ref\n  });\n};\n\n/**\n * The lowest-level component in a `DraftEditor`, the text node component\n * replaces the default React text node implementation. This allows us to\n * perform custom handling of newline behavior and avoid re-rendering text\n * nodes with DOM state that already matches the expectations of our immutable\n * editor state.\n */\nvar DraftEditorTextNode =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorTextNode, _React$Component);\n\n  function DraftEditorTextNode(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this; // By flipping this flag, we also keep flipping keys which forces\n    // React to remount this node every time it rerenders.\n\n    _defineProperty(_assertThisInitialized(_this), \"_forceFlag\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n    _this._forceFlag = false;\n    return _this;\n  }\n\n  var _proto = DraftEditorTextNode.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var node = this._node;\n    var shouldBeNewline = nextProps.children === '';\n    !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n    var elementNode = node;\n\n    if (shouldBeNewline) {\n      return !isNewline(elementNode);\n    }\n\n    return elementNode.textContent !== nextProps.children;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._forceFlag = !this._forceFlag;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._forceFlag = !this._forceFlag;\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    if (this.props.children === '') {\n      return this._forceFlag ? NEWLINE_A(function (ref) {\n        return _this2._node = ref;\n      }) : NEWLINE_B(function (ref) {\n        return _this2._node = ref;\n      });\n    }\n\n    return React.createElement(\"span\", {\n      key: this._forceFlag ? 'A' : 'B',\n      \"data-text\": \"true\",\n      ref: function ref(_ref) {\n        return _this2._node = _ref;\n      }\n    }, this.props.children);\n  };\n\n  return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar isIE = UserAgent.isBrowser('IE');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n  if (!node) {\n    return '[empty]';\n  }\n\n  var anonymized = anonymizeTextWithin(node, getNodeLabels);\n\n  if (anonymized.nodeType === Node.TEXT_NODE) {\n    return anonymized.textContent;\n  }\n\n  !isElement(anonymized) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n  var castedElement = anonymized;\n  return castedElement.outerHTML;\n}\n\nfunction anonymizeTextWithin(node, getNodeLabels) {\n  var labels = getNodeLabels !== undefined ? getNodeLabels(node) : [];\n\n  if (node.nodeType === Node.TEXT_NODE) {\n    var length = node.textContent.length;\n    return getCorrectDocumentFromNode(node).createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n  }\n\n  var clone = node.cloneNode();\n\n  if (clone.nodeType === 1 && labels.length) {\n    clone.setAttribute('data-labels', labels.join(', '));\n  }\n\n  var childNodes = node.childNodes;\n\n  for (var ii = 0; ii < childNodes.length; ii++) {\n    clone.appendChild(anonymizeTextWithin(childNodes[ii], getNodeLabels));\n  }\n\n  return clone;\n}\n\nfunction getAnonymizedEditorDOM(node, getNodeLabels) {\n  // grabbing the DOM content of the Draft editor\n  var currentNode = node; // this should only be used after checking with isElement\n\n  var castedNode = currentNode;\n\n  while (currentNode) {\n    if (isElement(currentNode) && castedNode.hasAttribute('contenteditable')) {\n      // found the Draft editor container\n      return getAnonymizedDOM(currentNode, getNodeLabels);\n    } else {\n      currentNode = currentNode.parentNode;\n      castedNode = currentNode;\n    }\n  }\n\n  return 'Could not find contentEditable parent of node';\n}\n\nfunction getNodeLength(node) {\n  return node.nodeValue === null ? node.childNodes.length : node.nodeValue.length;\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n */\n\n\nfunction setDraftEditorSelection(selectionState, node, blockKey, nodeStart, nodeEnd) {\n  // It's possible that the editor has been removed from the DOM but\n  // our selection code doesn't know it yet. Forcing selection in\n  // this case may lead to errors, so just bail now.\n  var documentObject = getCorrectDocumentFromNode(node);\n\n  if (!containsNode(documentObject.documentElement, node)) {\n    return;\n  }\n\n  var selection = documentObject.defaultView.getSelection();\n  var anchorKey = selectionState.getAnchorKey();\n  var anchorOffset = selectionState.getAnchorOffset();\n  var focusKey = selectionState.getFocusKey();\n  var focusOffset = selectionState.getFocusOffset();\n  var isBackward = selectionState.getIsBackward(); // IE doesn't support backward selection. Swap key/offset pairs.\n\n  if (!selection.extend && isBackward) {\n    var tempKey = anchorKey;\n    var tempOffset = anchorOffset;\n    anchorKey = focusKey;\n    anchorOffset = focusOffset;\n    focusKey = tempKey;\n    focusOffset = tempOffset;\n    isBackward = false;\n  }\n\n  var hasAnchor = anchorKey === blockKey && nodeStart <= anchorOffset && nodeEnd >= anchorOffset;\n  var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset; // If the selection is entirely bound within this node, set the selection\n  // and be done.\n\n  if (hasAnchor && hasFocus) {\n    selection.removeAllRanges();\n    addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n    addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    return;\n  }\n\n  if (!isBackward) {\n    // If the anchor is within this node, set the range start.\n    if (hasAnchor) {\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n    } // If the focus is within this node, we can assume that we have\n    // already set the appropriate start range on the selection, and\n    // can simply extend the selection.\n\n\n    if (hasFocus) {\n      addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    }\n  } else {\n    // If this node has the focus, set the selection range to be a\n    // collapsed range beginning here. Later, when we encounter the anchor,\n    // we'll use this information to extend the selection.\n    if (hasFocus) {\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    } // If this node has the anchor, we may assume that the correct\n    // focus information is already stored on the selection object.\n    // We keep track of it, reset the selection range, and extend it\n    // back to the focus point.\n\n\n    if (hasAnchor) {\n      var storedFocusNode = selection.focusNode;\n      var storedFocusOffset = selection.focusOffset;\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n      addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n    }\n  }\n}\n/**\n * Extend selection towards focus point.\n */\n\n\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n  var activeElement = getActiveElement();\n  var extend = selection.extend; // containsNode returns false if node is null.\n  // Let's refine the type of this value out here so flow knows.\n\n  if (extend && node != null && containsNode(activeElement, node)) {\n    // If `extend` is called while another element has focus, an error is\n    // thrown. We therefore disable `extend` if the active element is somewhere\n    // other than the node we are selecting. This should only occur in Firefox,\n    // since it is the only browser to support multiple selections.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=921444.\n    // logging to catch bug that is being reported in t16250795\n    if (offset > getNodeLength(node)) {\n      // the call to 'selection.extend' is about to throw\n      DraftJsDebugLogging.logSelectionStateFailure({\n        anonymizedDom: getAnonymizedEditorDOM(node),\n        extraParams: JSON.stringify({\n          offset: offset\n        }),\n        selectionState: JSON.stringify(selectionState.toJS())\n      });\n    } // logging to catch bug that is being reported in t18110632\n\n\n    var nodeWasFocus = node === selection.focusNode;\n\n    try {\n      // Fixes some reports of \"InvalidStateError: Failed to execute 'extend' on\n      // 'Selection': This Selection object doesn't have any Ranges.\"\n      // Note: selection.extend does not exist in IE.\n      if (selection.rangeCount > 0 && selection.extend) {\n        selection.extend(node, offset);\n      }\n    } catch (e) {\n      DraftJsDebugLogging.logSelectionStateFailure({\n        anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n          var labels = [];\n\n          if (n === activeElement) {\n            labels.push('active element');\n          }\n\n          if (n === selection.anchorNode) {\n            labels.push('selection anchor node');\n          }\n\n          if (n === selection.focusNode) {\n            labels.push('selection focus node');\n          }\n\n          return labels;\n        }),\n        extraParams: JSON.stringify({\n          activeElementName: activeElement ? activeElement.nodeName : null,\n          nodeIsFocus: node === selection.focusNode,\n          nodeWasFocus: nodeWasFocus,\n          selectionRangeCount: selection.rangeCount,\n          selectionAnchorNodeName: selection.anchorNode ? selection.anchorNode.nodeName : null,\n          selectionAnchorOffset: selection.anchorOffset,\n          selectionFocusNodeName: selection.focusNode ? selection.focusNode.nodeName : null,\n          selectionFocusOffset: selection.focusOffset,\n          message: e ? '' + e : null,\n          offset: offset\n        }, null, 2),\n        selectionState: JSON.stringify(selectionState.toJS(), null, 2)\n      }); // allow the error to be thrown -\n      // better than continuing in a broken state\n\n      throw e;\n    }\n  } else {\n    // IE doesn't support extend. This will mean no backward selection.\n    // Extract the existing selection range and add focus to it.\n    // Additionally, clone the selection range. IE11 throws an\n    // InvalidStateError when attempting to access selection properties\n    // after the range is detached.\n    if (node && selection.rangeCount > 0) {\n      var range = selection.getRangeAt(0);\n      range.setEnd(node, offset);\n      selection.addRange(range.cloneRange());\n    }\n  }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n  var range = getCorrectDocumentFromNode(node).createRange(); // logging to catch bug that is being reported in t16250795\n\n  if (offset > getNodeLength(node)) {\n    // in this case we know that the call to 'range.setStart' is about to throw\n    DraftJsDebugLogging.logSelectionStateFailure({\n      anonymizedDom: getAnonymizedEditorDOM(node),\n      extraParams: JSON.stringify({\n        offset: offset\n      }),\n      selectionState: JSON.stringify(selectionState.toJS())\n    });\n    DraftEffects.handleExtensionCausedError();\n  }\n\n  range.setStart(node, offset); // IE sometimes throws Unspecified Error when trying to addRange\n\n  if (isIE) {\n    try {\n      selection.addRange(range);\n    } catch (e) {\n      if (process.env.NODE_ENV !== \"production\") {\n        /* eslint-disable-next-line no-console */\n        console.warn('Call to selection.addRange() threw exception: ', e);\n      }\n    }\n  } else {\n    selection.addRange(range);\n  }\n}\n\nmodule.exports = {\n  setDraftEditorSelection: setDraftEditorSelection,\n  addFocusToSelection: addFocusToSelection\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n  return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n  var doc = object ? object.ownerDocument || object : document;\n  var defaultView = doc.defaultView || window;\n  return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n  return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n  var computedStyle; // W3C Standard\n\n  if (window.getComputedStyle) {\n    // In certain cases such as within an iframe in FF3, this returns null.\n    computedStyle = window.getComputedStyle(node, null);\n\n    if (computedStyle) {\n      return asString(computedStyle.getPropertyValue(hyphenate(name)));\n    }\n  } // Safari\n\n\n  if (document.defaultView && document.defaultView.getComputedStyle) {\n    computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n    if (computedStyle) {\n      return asString(computedStyle.getPropertyValue(hyphenate(name)));\n    }\n\n    if (name === 'display') {\n      return 'none';\n    }\n  } // Internet Explorer\n\n\n  if (node.currentStyle) {\n    if (name === 'float') {\n      return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n    }\n\n    return asString(node.currentStyle[camelize(name)]);\n  }\n\n  return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n *   > camelize('background-color')\n *   < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n  return string.replace(_hyphenPattern, function (_, character) {\n    return character.toUpperCase();\n  });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   > hyphenate('backgroundColor')\n *   < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n  return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n  var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n  // IE9- will throw if the element is not in the document.\n\n  if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n    return {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n  } // Subtracts clientTop/Left because IE8- added a 2px border to the\n  // <html> element (see http://fburl.com/1493213). IE 7 in\n  // Quicksmode does not report clientLeft/clientTop so there\n  // will be an unaccounted offset of 2px when in quirksmode\n\n\n  var rect = elem.getBoundingClientRect();\n  return {\n    left: Math.round(rect.left) - docElem.clientLeft,\n    right: Math.round(rect.right) - docElem.clientLeft,\n    top: Math.round(rect.top) - docElem.clientTop,\n    bottom: Math.round(rect.bottom) - docElem.clientTop\n  };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n  doc = doc || document;\n\n  if (doc.scrollingElement) {\n    return doc.scrollingElement;\n  }\n\n  return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n  if (scrollable.Window && scrollable instanceof scrollable.Window) {\n    return {\n      x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n      y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n    };\n  }\n\n  return {\n    x: scrollable.scrollLeft,\n    y: scrollable.scrollTop\n  };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar joinClasses = require(\"fbjs/lib/joinClasses\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Provide default styling for list items. This way, lists will be styled with\n * proper counters and indentation even if the caller does not specify\n * their own styling at all. If more than five levels of nesting are needed,\n * the necessary CSS classes can be provided via `blockStyleFn` configuration.\n */\nvar getListItemClasses = function getListItemClasses(type, depth, shouldResetCount, direction) {\n  return cx({\n    'public/DraftStyleDefault/unorderedListItem': type === 'unordered-list-item',\n    'public/DraftStyleDefault/orderedListItem': type === 'ordered-list-item',\n    'public/DraftStyleDefault/reset': shouldResetCount,\n    'public/DraftStyleDefault/depth0': depth === 0,\n    'public/DraftStyleDefault/depth1': depth === 1,\n    'public/DraftStyleDefault/depth2': depth === 2,\n    'public/DraftStyleDefault/depth3': depth === 3,\n    'public/DraftStyleDefault/depth4': depth >= 4,\n    'public/DraftStyleDefault/listLTR': direction === 'LTR',\n    'public/DraftStyleDefault/listRTL': direction === 'RTL'\n  });\n};\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\n\n\nvar DraftEditorContents =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorContents, _React$Component);\n\n  function DraftEditorContents() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorContents.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var prevEditorState = this.props.editorState;\n    var nextEditorState = nextProps.editorState;\n    var prevDirectionMap = prevEditorState.getDirectionMap();\n    var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n    if (prevDirectionMap !== nextDirectionMap) {\n      return true;\n    }\n\n    var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n    var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n    if (didHaveFocus !== nowHasFocus) {\n      return true;\n    }\n\n    var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n    var wasComposing = prevEditorState.isInCompositionMode();\n    var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n    // rendered state, there's nothing new to be done.\n\n    if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n      return false;\n    }\n\n    var prevContent = prevEditorState.getCurrentContent();\n    var nextContent = nextEditorState.getCurrentContent();\n    var prevDecorator = prevEditorState.getDecorator();\n    var nextDecorator = nextEditorState.getDecorator();\n    return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        blockRenderMap = _this$props.blockRenderMap,\n        blockRendererFn = _this$props.blockRendererFn,\n        blockStyleFn = _this$props.blockStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        customStyleFn = _this$props.customStyleFn,\n        editorState = _this$props.editorState,\n        editorKey = _this$props.editorKey,\n        preventScroll = _this$props.preventScroll,\n        textDirectionality = _this$props.textDirectionality;\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var forceSelection = editorState.mustForceSelection();\n    var decorator = editorState.getDecorator();\n    var directionMap = nullthrows(editorState.getDirectionMap());\n    var blocksAsArray = content.getBlocksAsArray();\n    var processedBlocks = [];\n    var currentDepth = null;\n    var lastWrapperTemplate = null;\n\n    for (var ii = 0; ii < blocksAsArray.length; ii++) {\n      var _block = blocksAsArray[ii];\n\n      var key = _block.getKey();\n\n      var blockType = _block.getType();\n\n      var customRenderer = blockRendererFn(_block);\n      var CustomComponent = void 0,\n          customProps = void 0,\n          customEditable = void 0;\n\n      if (customRenderer) {\n        CustomComponent = customRenderer.component;\n        customProps = customRenderer.props;\n        customEditable = customRenderer.editable;\n      }\n\n      var direction = textDirectionality ? textDirectionality : directionMap.get(key);\n      var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n      var componentProps = {\n        contentState: content,\n        block: _block,\n        blockProps: customProps,\n        blockStyleFn: blockStyleFn,\n        customStyleMap: customStyleMap,\n        customStyleFn: customStyleFn,\n        decorator: decorator,\n        direction: direction,\n        forceSelection: forceSelection,\n        offsetKey: offsetKey,\n        preventScroll: preventScroll,\n        selection: selection,\n        tree: editorState.getBlockTree(key)\n      };\n      var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n      var wrapperTemplate = configForType.wrapper;\n      var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n      var depth = _block.getDepth();\n\n      var _className = '';\n\n      if (blockStyleFn) {\n        _className = blockStyleFn(_block);\n      } // List items are special snowflakes, since we handle nesting and\n      // counters manually.\n\n\n      if (Element === 'li') {\n        var shouldResetCount = lastWrapperTemplate !== wrapperTemplate || currentDepth === null || depth > currentDepth;\n        _className = joinClasses(_className, getListItemClasses(blockType, depth, shouldResetCount, direction));\n      }\n\n      var Component = CustomComponent || DraftEditorBlock;\n      var childProps = {\n        className: _className,\n        'data-block': true,\n        'data-editor': editorKey,\n        'data-offset-key': offsetKey,\n        key: key\n      };\n\n      if (customEditable !== undefined) {\n        childProps = _objectSpread({}, childProps, {\n          contentEditable: customEditable,\n          suppressContentEditableWarning: true\n        });\n      }\n\n      var child = React.createElement(Element, childProps,\n      /* $FlowFixMe(>=0.112.0 site=www,mobile) This comment suppresses an\n       * error found when Flow v0.112 was deployed. To see the error delete\n       * this comment and run Flow. */\n      React.createElement(Component, _extends({}, componentProps, {\n        key: key\n      })));\n      processedBlocks.push({\n        block: child,\n        wrapperTemplate: wrapperTemplate,\n        key: key,\n        offsetKey: offsetKey\n      });\n\n      if (wrapperTemplate) {\n        currentDepth = _block.getDepth();\n      } else {\n        currentDepth = null;\n      }\n\n      lastWrapperTemplate = wrapperTemplate;\n    } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n    var outputBlocks = [];\n\n    for (var _ii = 0; _ii < processedBlocks.length;) {\n      var info = processedBlocks[_ii];\n\n      if (info.wrapperTemplate) {\n        var blocks = [];\n\n        do {\n          blocks.push(processedBlocks[_ii].block);\n          _ii++;\n        } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\n\n        var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n          key: info.key + '-wrap',\n          'data-offset-key': info.offsetKey\n        }, blocks);\n        outputBlocks.push(wrapperElement);\n      } else {\n        outputBlocks.push(info.block);\n        _ii++;\n      }\n    }\n\n    return React.createElement(\"div\", {\n      \"data-contents\": \"true\"\n    }, outputBlocks);\n  };\n\n  return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n  var newClassName = className || '';\n  var argLength = arguments.length;\n\n  if (argLength > 1) {\n    for (var index = 1; index < argLength; index++) {\n      var nextClass = arguments[index];\n\n      if (nextClass) {\n        newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n      }\n    }\n  }\n\n  return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Get a SelectionState for the supplied mouse event.\n */\n\n\nfunction getSelectionForEvent(event, editorState) {\n  var node = null;\n  var offset = null;\n  var eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget);\n  /* $FlowFixMe(>=0.68.0 site=www,mobile) This comment suppresses an error\n   * found when Flow v0.68 was deployed. To see the error delete this comment\n   * and run Flow. */\n\n  if (typeof eventTargetDocument.caretRangeFromPoint === 'function') {\n    /* $FlowFixMe(>=0.68.0 site=www,mobile) This comment suppresses an error\n     * found when Flow v0.68 was deployed. To see the error delete this comment\n     * and run Flow. */\n    var dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y);\n    node = dropRange.startContainer;\n    offset = dropRange.startOffset;\n  } else if (event.rangeParent) {\n    node = event.rangeParent;\n    offset = event.rangeOffset;\n  } else {\n    return null;\n  }\n\n  node = nullthrows(node);\n  offset = nullthrows(offset);\n  var offsetKey = nullthrows(findAncestorOffsetKey(node));\n  return getUpdatedSelectionState(editorState, offsetKey, offset, offsetKey, offset);\n}\n\nvar DraftEditorDragHandler = {\n  /**\n   * Drag originating from input terminated.\n   */\n  onDragEnd: function onDragEnd(editor) {\n    editor.exitCurrentMode();\n    endDrag(editor);\n  },\n\n  /**\n   * Handle data being dropped.\n   */\n  onDrop: function onDrop(editor, e) {\n    var data = new DataTransfer(e.nativeEvent.dataTransfer);\n    var editorState = editor._latestEditorState;\n    var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n    e.preventDefault();\n    editor._dragCount = 0;\n    editor.exitCurrentMode();\n\n    if (dropSelection == null) {\n      return;\n    }\n\n    var files = data.getFiles();\n\n    if (files.length > 0) {\n      if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n        return;\n      }\n      /* $FlowFixMe This comment suppresses an error found DataTransfer was\n       * typed. getFiles() returns an array of <Files extends Blob>, not Blob\n       */\n\n\n      getTextContentFromFiles(files, function (fileText) {\n        fileText && editor.update(insertTextAtSelection(editorState, dropSelection, fileText));\n      });\n      return;\n    }\n\n    var dragType = editor._internalDrag ? 'internal' : 'external';\n\n    if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {// handled\n    } else if (editor._internalDrag) {\n      editor.update(moveText(editorState, dropSelection));\n    } else {\n      editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\n    }\n\n    endDrag(editor);\n  }\n};\n\nfunction endDrag(editor) {\n  editor._internalDrag = false; // Fix issue #1383\n  // Prior to React v16.5.0 onDrop breaks onSelect event:\n  // https://github.com/facebook/react/issues/11379.\n  // Dispatching a mouseup event on DOM node will make it go back to normal.\n\n  var editorNode = editor.editorContainer;\n\n  if (editorNode) {\n    var mouseUpEvent = new MouseEvent('mouseup', {\n      view: getWindowForNode(editorNode),\n      bubbles: true,\n      cancelable: true\n    });\n    editorNode.dispatchEvent(mouseUpEvent);\n  }\n}\n\nfunction moveText(editorState, targetSelection) {\n  var newContentState = DraftModifier.moveText(editorState.getCurrentContent(), editorState.getSelection(), targetSelection);\n  return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n/**\n * Insert text at a specified selection.\n */\n\n\nfunction insertTextAtSelection(editorState, selection, text) {\n  var newContentState = DraftModifier.insertText(editorState.getCurrentContent(), selection, text, editorState.getCurrentInlineStyle());\n  return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n\nmodule.exports = DraftEditorDragHandler;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n  isImage: function isImage(mimeString) {\n    return getParts(mimeString)[0] === 'image';\n  },\n  isJpeg: function isJpeg(mimeString) {\n    var parts = getParts(mimeString);\n    return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n    parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n  }\n};\n\nfunction getParts(mimeString) {\n  return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n  var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n  // in old versions of Safari).\n\n  !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n  !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n  !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n  !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n  // without method will throw during the slice call and skip straight to the\n  // fallback.\n\n  if (obj.hasOwnProperty) {\n    try {\n      return Array.prototype.slice.call(obj);\n    } catch (e) {// IE < 9 does not support Array#slice on collections objects\n    }\n  } // Fall back to copying key by key. This assumes all keys have a value,\n  // so will not preserve sparsely populated inputs.\n\n\n  var ret = Array(length);\n\n  for (var ii = 0; ii < length; ii++) {\n    ret[ii] = obj[ii];\n  }\n\n  return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n *   A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n *   Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n  return (// not null/false\n    !!obj && ( // arrays are objects, NodeLists are functions in Safari\n    typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n    'length' in obj && // not window\n    !('setInterval' in obj) && // no DOM node should be considered an array-like\n    // a 'select' element has 'length' and 'item' properties on IE8\n    typeof obj.nodeType != 'number' && ( // a real array\n    Array.isArray(obj) || // arguments\n    'callee' in obj || // HTMLCollection/NodeList\n    'item' in obj)\n  );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n *   var createArrayFromMixed = require('createArrayFromMixed');\n *\n *   function takesOneOrMoreThings(things) {\n *     things = createArrayFromMixed(things);\n *     ...\n *   }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n  if (!hasArrayNature(obj)) {\n    return [obj];\n  } else if (Array.isArray(obj)) {\n    return obj.slice();\n  } else {\n    return toArray(obj);\n  }\n}\n\nmodule.exports = createArrayFromMixed;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar onBeforeInput = require(\"./editOnBeforeInput\");\n\nvar onBlur = require(\"./editOnBlur\");\n\nvar onCompositionStart = require(\"./editOnCompositionStart\");\n\nvar onCopy = require(\"./editOnCopy\");\n\nvar onCut = require(\"./editOnCut\");\n\nvar onDragOver = require(\"./editOnDragOver\");\n\nvar onDragStart = require(\"./editOnDragStart\");\n\nvar onFocus = require(\"./editOnFocus\");\n\nvar onInput = require(\"./editOnInput\");\n\nvar onKeyDown = require(\"./editOnKeyDown\");\n\nvar onPaste = require(\"./editOnPaste\");\n\nvar onSelect = require(\"./editOnSelect\");\n\nvar isChrome = UserAgent.isBrowser('Chrome');\nvar isFirefox = UserAgent.isBrowser('Firefox');\nvar selectionHandler = isChrome || isFirefox ? onSelect : function (e) {};\nvar DraftEditorEditHandler = {\n  onBeforeInput: onBeforeInput,\n  onBlur: onBlur,\n  onCompositionStart: onCompositionStart,\n  onCopy: onCopy,\n  onCut: onCut,\n  onDragOver: onDragOver,\n  onDragStart: onDragStart,\n  onFocus: onFocus,\n  onInput: onInput,\n  onKeyDown: onKeyDown,\n  onPaste: onPaste,\n  onSelect: onSelect,\n  // In certain cases, contenteditable on chrome does not fire the onSelect\n  // event, causing problems with cursor positioning. Therefore, the selection\n  // state update handler is added to more events to ensure that the selection\n  // state is always synced with the actual cursor positions.\n  onMouseUp: selectionHandler,\n  onKeyUp: selectionHandler\n};\nmodule.exports = DraftEditorEditHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar isSelectionAtLeafStart = require(\"./isSelectionAtLeafStart\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar setImmediate = require(\"fbjs/lib/setImmediate\"); // When nothing is focused, Firefox regards two characters, `'` and `/`, as\n// commands that should open and focus the \"quickfind\" search bar. This should\n// *never* happen while a contenteditable is focused, but as of v28, it\n// sometimes does, even when the keypress event target is the contenteditable.\n// This breaks the input. Special case these characters to ensure that when\n// they are typed, we prevent default on the event to make sure not to\n// trigger quickfind.\n\n\nvar FF_QUICKFIND_CHAR = \"'\";\nvar FF_QUICKFIND_LINK_CHAR = '/';\nvar isFirefox = UserAgent.isBrowser('Firefox');\n\nfunction mustPreventDefaultForCharacter(character) {\n  return isFirefox && (character == FF_QUICKFIND_CHAR || character == FF_QUICKFIND_LINK_CHAR);\n}\n/**\n * Replace the current selection with the specified text string, with the\n * inline style and entity key applied to the newly inserted text.\n */\n\n\nfunction replaceText(editorState, text, inlineStyle, entityKey, forceSelection) {\n  var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n  return EditorState.push(editorState, contentState, 'insert-characters', forceSelection);\n}\n/**\n * When `onBeforeInput` executes, the browser is attempting to insert a\n * character into the editor. Apply this character data to the document,\n * allowing native insertion if possible.\n *\n * Native insertion is encouraged in order to limit re-rendering and to\n * preserve spellcheck highlighting, which disappears or flashes if re-render\n * occurs on the relevant text nodes.\n */\n\n\nfunction editOnBeforeInput(editor, e) {\n  if (editor._pendingStateFromBeforeInput !== undefined) {\n    editor.update(editor._pendingStateFromBeforeInput);\n    editor._pendingStateFromBeforeInput = undefined;\n  }\n\n  var editorState = editor._latestEditorState;\n  var chars = e.data; // In some cases (ex: IE ideographic space insertion) no character data\n  // is provided. There's nothing to do when this happens.\n\n  if (!chars) {\n    return;\n  } // Allow the top-level component to handle the insertion manually. This is\n  // useful when triggering interesting behaviors for a character insertion,\n  // Simple examples: replacing a raw text ':)' with a smile emoji or image\n  // decorator, or setting a block to be a list item after typing '- ' at the\n  // start of the block.\n\n\n  if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState, e.timeStamp))) {\n    e.preventDefault();\n    return;\n  } // If selection is collapsed, conditionally allow native behavior. This\n  // reduces re-renders and preserves spellcheck highlighting. If the selection\n  // is not collapsed, we will re-render.\n\n\n  var selection = editorState.getSelection();\n  var selectionStart = selection.getStartOffset();\n  var anchorKey = selection.getAnchorKey();\n\n  if (!selection.isCollapsed()) {\n    e.preventDefault();\n    editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), true));\n    return;\n  }\n\n  var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), false); // Bunch of different cases follow where we need to prevent native insertion.\n\n  var mustPreventNative = false;\n\n  if (!mustPreventNative) {\n    // Browsers tend to insert text in weird places in the DOM when typing at\n    // the start of a leaf, so we'll handle it ourselves.\n    mustPreventNative = isSelectionAtLeafStart(editor._latestCommittedEditorState);\n  }\n\n  if (!mustPreventNative) {\n    // Let's say we have a decorator that highlights hashtags. In many cases\n    // we need to prevent native behavior and rerender ourselves --\n    // particularly, any case *except* where the inserted characters end up\n    // anywhere except exactly where you put them.\n    //\n    // Using [] to denote a decorated leaf, some examples:\n    //\n    // 1. 'hi #' and append 'f'\n    // desired rendering: 'hi [#f]'\n    // native rendering would be: 'hi #f' (incorrect)\n    //\n    // 2. 'x [#foo]' and insert '#' before 'f'\n    // desired rendering: 'x #[#foo]'\n    // native rendering would be: 'x [##foo]' (incorrect)\n    //\n    // 3. '[#foobar]' and insert ' ' between 'foo' and 'bar'\n    // desired rendering: '[#foo] bar'\n    // native rendering would be: '[#foo bar]' (incorrect)\n    //\n    // 4. '[#foo]' and delete '#' [won't use this beforeinput codepath though]\n    // desired rendering: 'foo'\n    // native rendering would be: '[foo]' (incorrect)\n    //\n    // 5. '[#foo]' and append 'b'\n    // desired rendering: '[#foob]'\n    // native rendering would be: '[#foob]'\n    // (native insertion here would be ok for decorators like simple spans,\n    // but not more complex decorators. To be safe, we need to prevent it.)\n    //\n    // It is safe to allow native insertion if and only if the full list of\n    // decorator ranges matches what we expect native insertion to give, and\n    // the range lengths have not changed. We don't need to compare the content\n    // because the only possible mutation to consider here is inserting plain\n    // text and decorators can't affect text content.\n    var oldBlockTree = editorState.getBlockTree(anchorKey);\n    var newBlockTree = newEditorState.getBlockTree(anchorKey);\n    mustPreventNative = oldBlockTree.size !== newBlockTree.size || oldBlockTree.zip(newBlockTree).some(function (_ref) {\n      var oldLeafSet = _ref[0],\n          newLeafSet = _ref[1];\n      // selectionStart is guaranteed to be selectionEnd here\n      var oldStart = oldLeafSet.get('start');\n      var adjustedStart = oldStart + (oldStart >= selectionStart ? chars.length : 0);\n      var oldEnd = oldLeafSet.get('end');\n      var adjustedEnd = oldEnd + (oldEnd >= selectionStart ? chars.length : 0);\n      var newStart = newLeafSet.get('start');\n      var newEnd = newLeafSet.get('end');\n      var newDecoratorKey = newLeafSet.get('decoratorKey');\n      return (// Different decorators\n        oldLeafSet.get('decoratorKey') !== newDecoratorKey || // Different number of inline styles\n        oldLeafSet.get('leaves').size !== newLeafSet.get('leaves').size || // Different effective decorator position\n        adjustedStart !== newStart || adjustedEnd !== newEnd || // Decorator already existed and its length changed\n        newDecoratorKey != null && newEnd - newStart !== oldEnd - oldStart\n      );\n    });\n  }\n\n  if (!mustPreventNative) {\n    mustPreventNative = mustPreventDefaultForCharacter(chars);\n  }\n\n  if (!mustPreventNative) {\n    mustPreventNative = nullthrows(newEditorState.getDirectionMap()).get(anchorKey) !== nullthrows(editorState.getDirectionMap()).get(anchorKey);\n  }\n\n  if (mustPreventNative) {\n    e.preventDefault();\n    newEditorState = EditorState.set(newEditorState, {\n      forceSelection: true\n    });\n    editor.update(newEditorState);\n    return;\n  } // We made it all the way! Let the browser do its thing and insert the char.\n\n\n  newEditorState = EditorState.set(newEditorState, {\n    nativelyRenderedContent: newEditorState.getCurrentContent()\n  }); // The native event is allowed to occur. To allow user onChange handlers to\n  // change the inserted text, we wait until the text is actually inserted\n  // before we actually update our state. That way when we rerender, the text\n  // we see in the DOM will already have been inserted properly.\n\n  editor._pendingStateFromBeforeInput = newEditorState;\n  setImmediate(function () {\n    if (editor._pendingStateFromBeforeInput !== undefined) {\n      editor.update(editor._pendingStateFromBeforeInput);\n      editor._pendingStateFromBeforeInput = undefined;\n    }\n  });\n}\n\nmodule.exports = editOnBeforeInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction isSelectionAtLeafStart(editorState) {\n  var selection = editorState.getSelection();\n  var anchorKey = selection.getAnchorKey();\n  var blockTree = editorState.getBlockTree(anchorKey);\n  var offset = selection.getStartOffset();\n  var isAtStart = false;\n  blockTree.some(function (leafSet) {\n    if (offset === leafSet.get('start')) {\n      isAtStart = true;\n      return true;\n    }\n\n    if (offset < leafSet.get('end')) {\n      return leafSet.get('leaves').some(function (leaf) {\n        var leafStart = leaf.get('start');\n\n        if (offset === leafStart) {\n          isAtStart = true;\n          return true;\n        }\n\n        return false;\n      });\n    }\n\n    return false;\n  });\n  return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nfunction editOnBlur(editor, e) {\n  // In a contentEditable element, when you select a range and then click\n  // another active element, this does trigger a `blur` event but will not\n  // remove the DOM selection from the contenteditable.\n  // This is consistent across all browsers, but we prefer that the editor\n  // behave like a textarea, where a `blur` event clears the DOM selection.\n  // We therefore force the issue to be certain, checking whether the active\n  // element is `body` to force it when blurring occurs within the window (as\n  // opposed to clicking to another tab or window).\n  var ownerDocument = e.currentTarget.ownerDocument;\n\n  if ( // This ESLint rule conflicts with `sketchy-null-bool` flow check\n  // eslint-disable-next-line no-extra-boolean-cast\n  !Boolean(editor.props.preserveSelectionOnBlur) && getActiveElement(ownerDocument) === ownerDocument.body) {\n    var _selection = ownerDocument.defaultView.getSelection();\n\n    var editorNode = editor.editor;\n\n    if (_selection.rangeCount === 1 && containsNode(editorNode, _selection.anchorNode) && containsNode(editorNode, _selection.focusNode)) {\n      _selection.removeAllRanges();\n    }\n  }\n\n  var editorState = editor._latestEditorState;\n  var currentSelection = editorState.getSelection();\n\n  if (!currentSelection.getHasFocus()) {\n    return;\n  }\n\n  var selection = currentSelection.set('hasFocus', false);\n  editor.props.onBlur && editor.props.onBlur(e);\n  editor.update(EditorState.acceptSelection(editorState, selection));\n}\n\nmodule.exports = editOnBlur;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * The user has begun using an IME input system. Switching to `composite` mode\n * allows handling composition input and disables other edit behavior.\n */\n\n\nfunction editOnCompositionStart(editor, e) {\n  editor.setMode('composite');\n  editor.update(EditorState.set(editor._latestEditorState, {\n    inCompositionMode: true\n  })); // Allow composition handler to interpret the compositionstart event\n\n  editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n/**\n * If we have a selection, create a ContentState fragment and store\n * it in our internal clipboard. Subsequent paste events will use this\n * fragment if no external clipboard data is supplied.\n */\n\n\nfunction editOnCopy(editor, e) {\n  var editorState = editor._latestEditorState;\n  var selection = editorState.getSelection(); // No selection, so there's nothing to copy.\n\n  if (selection.isCollapsed()) {\n    e.preventDefault();\n    return;\n  }\n\n  editor.setClipboard(getFragmentFromSelection(editor._latestEditorState));\n}\n\nmodule.exports = editOnCopy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar isNode = require(\"./isInstanceOfNode\");\n/**\n * On `cut` events, native behavior is allowed to occur so that the system\n * clipboard is set properly. This means that we need to take steps to recover\n * the editor DOM state after the `cut` has occurred in order to maintain\n * control of the component.\n *\n * In addition, we can keep a copy of the removed fragment, including all\n * styles and entities, for use as an internal paste.\n */\n\n\nfunction editOnCut(editor, e) {\n  var editorState = editor._latestEditorState;\n  var selection = editorState.getSelection();\n  var element = e.target;\n  var scrollPosition; // No selection, so there's nothing to cut.\n\n  if (selection.isCollapsed()) {\n    e.preventDefault();\n    return;\n  } // Track the current scroll position so that it can be forced back in place\n  // after the editor regains control of the DOM.\n\n\n  if (isNode(element)) {\n    var node = element;\n    scrollPosition = getScrollPosition(Style.getScrollParent(node));\n  }\n\n  var fragment = getFragmentFromSelection(editorState);\n  editor.setClipboard(fragment); // Set `cut` mode to disable all event handling temporarily.\n\n  editor.setMode('cut'); // Let native `cut` behavior occur, then recover control.\n\n  setTimeout(function () {\n    editor.restoreEditorDOM(scrollPosition);\n    editor.exitCurrentMode();\n    editor.update(removeFragment(editorState));\n  }, 0);\n}\n\nfunction removeFragment(editorState) {\n  var newContent = DraftModifier.removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'forward');\n  return EditorState.push(editorState, newContent, 'remove-range');\n}\n\nmodule.exports = editOnCut;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isInstanceOfNode(target) {\n  // we changed the name because of having duplicate module provider (fbjs)\n  if (!target || !('ownerDocument' in target)) {\n    return false;\n  }\n\n  if ('ownerDocument' in target) {\n    var node = target;\n\n    if (!node.ownerDocument.defaultView) {\n      return node instanceof Node;\n    }\n\n    if (node instanceof node.ownerDocument.defaultView.Node) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nmodule.exports = isInstanceOfNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n  editor.setMode('drag');\n  e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * A `dragstart` event has begun within the text editor component.\n */\nfunction editOnDragStart(editor) {\n  editor._internalDrag = true;\n  editor.setMode('drag');\n}\n\nmodule.exports = editOnDragStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nfunction editOnFocus(editor, e) {\n  var editorState = editor._latestEditorState;\n  var currentSelection = editorState.getSelection();\n\n  if (currentSelection.getHasFocus()) {\n    return;\n  }\n\n  var selection = currentSelection.set('hasFocus', true);\n  editor.props.onFocus && editor.props.onFocus(e); // When the tab containing this text editor is hidden and the user does a\n  // find-in-page in a _different_ tab, Chrome on Mac likes to forget what the\n  // selection was right after sending this focus event and (if you let it)\n  // moves the cursor back to the beginning of the editor, so we force the\n  // selection here instead of simply accepting it in order to preserve the\n  // old cursor position. See https://crbug.com/540004.\n  // But it looks like this is fixed in Chrome 60.0.3081.0.\n  // Other browsers also don't have this bug, so we prefer to acceptSelection\n  // when possible, to ensure that unfocusing and refocusing a Draft editor\n  // doesn't preserve the selection, matching how textareas work.\n\n  if (UserAgent.isBrowser('Chrome < 60.0.3081.0')) {\n    editor.update(EditorState.forceSelection(editorState, selection));\n  } else {\n    editor.update(EditorState.acceptSelection(editorState, selection));\n  }\n}\n\nmodule.exports = editOnFocus;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar _require = require(\"./draftKeyUtils\"),\n    notEmptyKey = _require.notEmptyKey;\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isGecko = UserAgent.isEngine('Gecko');\nvar DOUBLE_NEWLINE = '\\n\\n';\n\nfunction onInputType(inputType, editorState) {\n  switch (inputType) {\n    case 'deleteContentBackward':\n      return keyCommandPlainBackspace(editorState);\n  }\n\n  return editorState;\n}\n/**\n * This function serves two purposes\n *\n * 1. To update the editorState and call onChange method with the new\n * editorState. This editorState is calculated in editOnBeforeInput but the\n * onChange method is not called with the new state until this method does it.\n * It is done to handle a specific case where certain character inputs might\n * be replaced with something else. E.g. snippets ('rc' might be replaced\n * with boilerplate code for react component). More information on the\n * exact problem can be found here -\n * https://github.com/facebook/draft-js/commit/07892ba479bd4dfc6afd1e0ed179aaf51cd138b1\n *\n * 2. intended to handle spellcheck and autocorrect changes,\n * which occur in the DOM natively without any opportunity to observe or\n * interpret the changes before they occur.\n *\n * The `input` event fires in contentEditable elements reliably for non-IE\n * browsers, immediately after changes occur to the editor DOM. Since our other\n * handlers override or otherwise handle cover other varieties of text input,\n * the DOM state should match the model in all controlled input cases. Thus,\n * when an `input` change leads to a DOM/model mismatch, the change should be\n * due to a spellcheck change, and we can incorporate it into our model.\n */\n\n\nfunction editOnInput(editor, e) {\n  if (editor._pendingStateFromBeforeInput !== undefined) {\n    editor.update(editor._pendingStateFromBeforeInput);\n    editor._pendingStateFromBeforeInput = undefined;\n  } // at this point editor is not null for sure (after input)\n\n\n  var castedEditorElement = editor.editor;\n  var domSelection = castedEditorElement.ownerDocument.defaultView.getSelection();\n  var anchorNode = domSelection.anchorNode,\n      isCollapsed = domSelection.isCollapsed;\n  var isNotTextOrElementNode = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.TEXT_NODE && (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.ELEMENT_NODE;\n\n  if (anchorNode == null || isNotTextOrElementNode) {\n    // TODO: (t16149272) figure out context for this change\n    return;\n  }\n\n  if (anchorNode.nodeType === Node.TEXT_NODE && (anchorNode.previousSibling !== null || anchorNode.nextSibling !== null)) {\n    // When typing at the beginning of a visual line, Chrome splits the text\n    // nodes into two. Why? No one knows. This commit is suspicious:\n    // https://chromium.googlesource.com/chromium/src/+/a3b600981286b135632371477f902214c55a1724\n    // To work around, we'll merge the sibling text nodes back into this one.\n    var span = anchorNode.parentNode;\n\n    if (span == null) {\n      // Handle null-parent case.\n      return;\n    }\n\n    anchorNode.nodeValue = span.textContent;\n\n    for (var child = span.firstChild; child != null; child = child.nextSibling) {\n      if (child !== anchorNode) {\n        span.removeChild(child);\n      }\n    }\n  }\n\n  var domText = anchorNode.textContent;\n  var editorState = editor._latestEditorState;\n  var offsetKey = nullthrows(findAncestorOffsetKey(anchorNode));\n\n  var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n      blockKey = _DraftOffsetKey$decod.blockKey,\n      decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n      leafKey = _DraftOffsetKey$decod.leafKey;\n\n  var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n      start = _editorState$getBlock.start,\n      end = _editorState$getBlock.end;\n\n  var content = editorState.getCurrentContent();\n  var block = content.getBlockForKey(blockKey);\n  var modelText = block.getText().slice(start, end); // Special-case soft newlines here. If the DOM text ends in a soft newline,\n  // we will have manually inserted an extra soft newline in DraftEditorLeaf.\n  // We want to remove this extra newline for the purpose of our comparison\n  // of DOM and model text.\n\n  if (domText.endsWith(DOUBLE_NEWLINE)) {\n    domText = domText.slice(0, -1);\n  } // No change -- the DOM is up to date. Nothing to do here.\n\n\n  if (domText === modelText) {\n    // This can be buggy for some Android keyboards because they don't fire\n    // standard onkeydown/pressed events and only fired editOnInput\n    // so domText is already changed by the browser and ends up being equal\n    // to modelText unexpectedly.\n    // Newest versions of Android support the dom-inputevent-inputtype\n    // and we can use the `inputType` to properly apply the state changes.\n\n    /* $FlowFixMe inputType is only defined on a draft of a standard.\n     * https://w3c.github.io/input-events/#dom-inputevent-inputtype */\n    var inputType = e.nativeEvent.inputType;\n\n    if (inputType) {\n      var newEditorState = onInputType(inputType, editorState);\n\n      if (newEditorState !== editorState) {\n        editor.restoreEditorDOM();\n        editor.update(newEditorState);\n        return;\n      }\n    }\n\n    return;\n  }\n\n  var selection = editorState.getSelection(); // We'll replace the entire leaf with the text content of the target.\n\n  var targetRange = selection.merge({\n    anchorOffset: start,\n    focusOffset: end,\n    isBackward: false\n  });\n  var entityKey = block.getEntityAt(start);\n  var entity = notEmptyKey(entityKey) ? content.getEntity(entityKey) : null;\n  var entityType = entity != null ? entity.getMutability() : null;\n  var preserveEntity = entityType === 'MUTABLE'; // Immutable or segmented entities cannot properly be handled by the\n  // default browser undo, so we have to use a different change type to\n  // force using our internal undo method instead of falling through to the\n  // native browser undo.\n\n  var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n  var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n  var anchorOffset, focusOffset, startOffset, endOffset;\n\n  if (isGecko) {\n    // Firefox selection does not change while the context menu is open, so\n    // we preserve the anchor and focus values of the DOM selection.\n    anchorOffset = domSelection.anchorOffset;\n    focusOffset = domSelection.focusOffset;\n    startOffset = start + Math.min(anchorOffset, focusOffset);\n    endOffset = startOffset + Math.abs(anchorOffset - focusOffset);\n    anchorOffset = startOffset;\n    focusOffset = endOffset;\n  } else {\n    // Browsers other than Firefox may adjust DOM selection while the context\n    // menu is open, and Safari autocorrect is prone to providing an inaccurate\n    // DOM selection. Don't trust it. Instead, use our existing SelectionState\n    // and adjust it based on the number of characters changed during the\n    // mutation.\n    var charDelta = domText.length - modelText.length;\n    startOffset = selection.getStartOffset();\n    endOffset = selection.getEndOffset();\n    anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n    focusOffset = endOffset + charDelta;\n  } // Segmented entities are completely or partially removed when their\n  // text content changes. For this case we do not want any text to be selected\n  // after the change, so we are not merging the selection.\n\n\n  var contentWithAdjustedDOMSelection = newContent.merge({\n    selectionBefore: content.getSelectionAfter(),\n    selectionAfter: selection.merge({\n      anchorOffset: anchorOffset,\n      focusOffset: focusOffset\n    })\n  });\n  editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar SecondaryClipboard = require(\"./SecondaryClipboard\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar keyCommandBackspaceToStartOfLine = require(\"./keyCommandBackspaceToStartOfLine\");\n\nvar keyCommandBackspaceWord = require(\"./keyCommandBackspaceWord\");\n\nvar keyCommandDeleteWord = require(\"./keyCommandDeleteWord\");\n\nvar keyCommandInsertNewline = require(\"./keyCommandInsertNewline\");\n\nvar keyCommandMoveSelectionToEndOfBlock = require(\"./keyCommandMoveSelectionToEndOfBlock\");\n\nvar keyCommandMoveSelectionToStartOfBlock = require(\"./keyCommandMoveSelectionToStartOfBlock\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar keyCommandPlainDelete = require(\"./keyCommandPlainDelete\");\n\nvar keyCommandTransposeCharacters = require(\"./keyCommandTransposeCharacters\");\n\nvar keyCommandUndo = require(\"./keyCommandUndo\");\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\nvar isChrome = UserAgent.isBrowser('Chrome');\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\n\nfunction onKeyCommand(command, editorState, e) {\n  switch (command) {\n    case 'redo':\n      return EditorState.redo(editorState);\n\n    case 'delete':\n      return keyCommandPlainDelete(editorState);\n\n    case 'delete-word':\n      return keyCommandDeleteWord(editorState);\n\n    case 'backspace':\n      return keyCommandPlainBackspace(editorState);\n\n    case 'backspace-word':\n      return keyCommandBackspaceWord(editorState);\n\n    case 'backspace-to-start-of-line':\n      return keyCommandBackspaceToStartOfLine(editorState, e);\n\n    case 'split-block':\n      return keyCommandInsertNewline(editorState);\n\n    case 'transpose-characters':\n      return keyCommandTransposeCharacters(editorState);\n\n    case 'move-selection-to-start-of-block':\n      return keyCommandMoveSelectionToStartOfBlock(editorState);\n\n    case 'move-selection-to-end-of-block':\n      return keyCommandMoveSelectionToEndOfBlock(editorState);\n\n    case 'secondary-cut':\n      return SecondaryClipboard.cut(editorState);\n\n    case 'secondary-paste':\n      return SecondaryClipboard.paste(editorState);\n\n    default:\n      return editorState;\n  }\n}\n/**\n * Intercept keydown behavior to handle keys and commands manually, if desired.\n *\n * Keydown combinations may be mapped to `DraftCommand` values, which may\n * correspond to command functions that modify the editor or its contents.\n *\n * See `getDefaultKeyBinding` for defaults. Alternatively, the top-level\n * component may provide a custom mapping via the `keyBindingFn` prop.\n */\n\n\nfunction editOnKeyDown(editor, e) {\n  var keyCode = e.which;\n  var editorState = editor._latestEditorState;\n\n  function callDeprecatedHandler(handlerName) {\n    var deprecatedHandler = editor.props[handlerName];\n\n    if (deprecatedHandler) {\n      deprecatedHandler(e);\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  switch (keyCode) {\n    case Keys.RETURN:\n      e.preventDefault(); // The top-level component may manually handle newline insertion. If\n      // no special handling is performed, fall through to command handling.\n\n      if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n        return;\n      }\n\n      break;\n\n    case Keys.ESC:\n      e.preventDefault();\n\n      if (callDeprecatedHandler('onEscape')) {\n        return;\n      }\n\n      break;\n\n    case Keys.TAB:\n      if (callDeprecatedHandler('onTab')) {\n        return;\n      }\n\n      break;\n\n    case Keys.UP:\n      if (callDeprecatedHandler('onUpArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.RIGHT:\n      if (callDeprecatedHandler('onRightArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.DOWN:\n      if (callDeprecatedHandler('onDownArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.LEFT:\n      if (callDeprecatedHandler('onLeftArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.SPACE:\n      // Prevent Chrome on OSX behavior where option + space scrolls.\n      if (isChrome && isOptionKeyCommand(e)) {\n        e.preventDefault();\n      }\n\n  }\n\n  var command = editor.props.keyBindingFn(e); // If no command is specified, allow keydown event to continue.\n\n  if (command == null || command === '') {\n    if (keyCode === Keys.SPACE && isChrome && isOptionKeyCommand(e)) {\n      // The default keydown event has already been prevented in order to stop\n      // Chrome from scrolling. Insert a nbsp into the editor as OSX would for\n      // other browsers.\n      var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), \"\\xA0\");\n      editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n    }\n\n    return;\n  }\n\n  if (command === 'undo') {\n    // Since undo requires some special updating behavior to keep the editor\n    // in sync, handle it separately.\n    keyCommandUndo(e, editorState, editor.update);\n    return;\n  } // At this point, we know that we're handling a command of some kind, so\n  // we don't want to insert a character following the keydown.\n\n\n  e.preventDefault(); // Allow components higher up the tree to handle the command first.\n\n  if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState, e.timeStamp))) {\n    return;\n  }\n\n  var newState = onKeyCommand(command, editorState, e);\n\n  if (newState !== editorState) {\n    editor.update(newState);\n  }\n}\n\nmodule.exports = editOnKeyDown;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nfunction isSoftNewlineEvent(e) {\n  return e.which === Keys.RETURN && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'));\n}\n\nmodule.exports = isSoftNewlineEvent;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar clipboard = null;\n/**\n * Some systems offer a \"secondary\" clipboard to allow quick internal cut\n * and paste behavior. For instance, Ctrl+K (cut) and Ctrl+Y (paste).\n */\n\nvar SecondaryClipboard = {\n  cut: function cut(editorState) {\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var targetRange = null;\n\n    if (selection.isCollapsed()) {\n      var anchorKey = selection.getAnchorKey();\n      var blockEnd = content.getBlockForKey(anchorKey).getLength();\n\n      if (blockEnd === selection.getAnchorOffset()) {\n        var keyAfter = content.getKeyAfter(anchorKey);\n\n        if (keyAfter == null) {\n          return editorState;\n        }\n\n        targetRange = selection.set('focusKey', keyAfter).set('focusOffset', 0);\n      } else {\n        targetRange = selection.set('focusOffset', blockEnd);\n      }\n    } else {\n      targetRange = selection;\n    }\n\n    targetRange = nullthrows(targetRange); // TODO: This should actually append to the current state when doing\n    // successive ^K commands without any other cursor movement\n\n    clipboard = getContentStateFragment(content, targetRange);\n    var afterRemoval = DraftModifier.removeRange(content, targetRange, 'forward');\n\n    if (afterRemoval === content) {\n      return editorState;\n    }\n\n    return EditorState.push(editorState, afterRemoval, 'remove-range');\n  },\n  paste: function paste(editorState) {\n    if (!clipboard) {\n      return editorState;\n    }\n\n    var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n    return EditorState.push(editorState, newContent, 'insert-fragment');\n  }\n};\nmodule.exports = SecondaryClipboard;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar expandRangeToStartOfLine = require(\"./expandRangeToStartOfLine\");\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n\nfunction keyCommandBackspaceToStartOfLine(editorState, e) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n\n    if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n      return moveSelectionBackward(strategyState, 1);\n    }\n\n    var ownerDocument = e.currentTarget.ownerDocument;\n    var domSelection = ownerDocument.defaultView.getSelection(); // getRangeAt can technically throw if there's no selection, but we know\n    // there is one here because text editor has focus (the cursor is a\n    // selection of length 0). Therefore, we don't need to wrap this in a\n    // try-catch block.\n\n    var range = domSelection.getRangeAt(0);\n    range = expandRangeToStartOfLine(range);\n    return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceToStartOfLine;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\n\n\nfunction getLineHeightPx(element) {\n  var computed = getComputedStyle(element);\n  var correctDocument = getCorrectDocumentFromNode(element);\n  var div = correctDocument.createElement('div');\n  div.style.fontFamily = computed.fontFamily;\n  div.style.fontSize = computed.fontSize;\n  div.style.fontStyle = computed.fontStyle;\n  div.style.fontWeight = computed.fontWeight;\n  div.style.lineHeight = computed.lineHeight;\n  div.style.position = 'absolute';\n  div.textContent = 'M';\n  var documentBody = correctDocument.body;\n  !documentBody ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing document.body') : invariant(false) : void 0; // forced layout here\n\n  documentBody.appendChild(div);\n  var rect = div.getBoundingClientRect();\n  documentBody.removeChild(div);\n  return rect.height;\n}\n/**\n * Return whether every ClientRect in the provided list lies on the same line.\n *\n * We assume that the rects on the same line all contain the baseline, so the\n * lowest top line needs to be above the highest bottom line (i.e., if you were\n * to project the rects onto the y-axis, their intersection would be nonempty).\n *\n * In addition, we require that no two boxes are lineHeight (or more) apart at\n * either top or bottom, which helps protect against false positives for fonts\n * with extremely large glyph heights (e.g., with a font size of 17px, Zapfino\n * produces rects of height 58px!).\n */\n\n\nfunction areRectsOnOneLine(rects, lineHeight) {\n  var minTop = Infinity;\n  var minBottom = Infinity;\n  var maxTop = -Infinity;\n  var maxBottom = -Infinity;\n\n  for (var ii = 0; ii < rects.length; ii++) {\n    var rect = rects[ii];\n\n    if (rect.width === 0 || rect.width === 1) {\n      // When a range starts or ends a soft wrap, many browsers (Chrome, IE,\n      // Safari) include an empty rect on the previous or next line. When the\n      // text lies in a container whose position is not integral (e.g., from\n      // margin: auto), Safari makes these empty rects have width 1 (instead of\n      // 0). Having one-pixel-wide characters seems unlikely (and most browsers\n      // report widths in subpixel precision anyway) so it's relatively safe to\n      // skip over them.\n      continue;\n    }\n\n    minTop = Math.min(minTop, rect.top);\n    minBottom = Math.min(minBottom, rect.bottom);\n    maxTop = Math.max(maxTop, rect.top);\n    maxBottom = Math.max(maxBottom, rect.bottom);\n  }\n\n  return maxTop <= minBottom && maxTop - minTop < lineHeight && maxBottom - minBottom < lineHeight;\n}\n/**\n * Return the length of a node, as used by Range offsets.\n */\n\n\nfunction getNodeLength(node) {\n  // http://www.w3.org/TR/dom/#concept-node-length\n  switch (node.nodeType) {\n    case Node.DOCUMENT_TYPE_NODE:\n      return 0;\n\n    case Node.TEXT_NODE:\n    case Node.PROCESSING_INSTRUCTION_NODE:\n    case Node.COMMENT_NODE:\n      return node.length;\n\n    default:\n      return node.childNodes.length;\n  }\n}\n/**\n * Given a collapsed range, move the start position backwards as far as\n * possible while the range still spans only a single line.\n */\n\n\nfunction expandRangeToStartOfLine(range) {\n  !range.collapsed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expandRangeToStartOfLine: Provided range is not collapsed.') : invariant(false) : void 0;\n  range = range.cloneRange();\n  var containingElement = range.startContainer;\n\n  if (containingElement.nodeType !== 1) {\n    containingElement = containingElement.parentNode;\n  }\n\n  var lineHeight = getLineHeightPx(containingElement); // Imagine our text looks like:\n  //   <div><span>once upon a time, there was a <em>boy\n  //   who lived</em> </span><q><strong>under^ the\n  //   stairs</strong> in a small closet.</q></div>\n  // where the caret represents the cursor. First, we crawl up the tree until\n  // the range spans multiple lines (setting the start point to before\n  // \"<strong>\", then before \"<div>\"), then at each level we do a search to\n  // find the latest point which is still on a previous line. We'll find that\n  // the break point is inside the span, then inside the <em>, then in its text\n  // node child, the actual break point before \"who\".\n\n  var bestContainer = range.endContainer;\n  var bestOffset = range.endOffset;\n  range.setStart(range.startContainer, 0);\n\n  while (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n    bestContainer = range.startContainer;\n    bestOffset = range.startOffset;\n    !bestContainer.parentNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found unexpected detached subtree when traversing.') : invariant(false) : void 0;\n    range.setStartBefore(bestContainer);\n\n    if (bestContainer.nodeType === 1 && getComputedStyle(bestContainer).display !== 'inline') {\n      // The start of the line is never in a different block-level container.\n      break;\n    }\n  } // In the above example, range now spans from \"<div>\" to \"under\",\n  // bestContainer is <div>, and bestOffset is 1 (index of <q> inside <div>)].\n  // Picking out which child to recurse into here is a special case since we\n  // don't want to check past <q> -- once we find that the final range starts\n  // in <span>, we can look at all of its children (and all of their children)\n  // to find the break point.\n  // At all times, (bestContainer, bestOffset) is the latest single-line start\n  // point that we know of.\n\n\n  var currentContainer = bestContainer;\n  var maxIndexToConsider = bestOffset - 1;\n\n  do {\n    var nodeValue = currentContainer.nodeValue;\n    var ii = maxIndexToConsider;\n\n    for (; ii >= 0; ii--) {\n      if (nodeValue != null && ii > 0 && UnicodeUtils.isSurrogatePair(nodeValue, ii - 1)) {\n        // We're in the middle of a surrogate pair -- skip over so we never\n        // return a range with an endpoint in the middle of a code point.\n        continue;\n      }\n\n      range.setStart(currentContainer, ii);\n\n      if (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n        bestContainer = currentContainer;\n        bestOffset = ii;\n      } else {\n        break;\n      }\n    }\n\n    if (ii === -1 || currentContainer.childNodes.length === 0) {\n      // If ii === -1, then (bestContainer, bestOffset), which is equal to\n      // (currentContainer, 0), was a single-line start point but a start\n      // point before currentContainer wasn't, so the line break seems to\n      // have occurred immediately after currentContainer's start tag\n      //\n      // If currentContainer.childNodes.length === 0, we're already at a\n      // terminal node (e.g., text node) and should return our current best.\n      break;\n    }\n\n    currentContainer = currentContainer.childNodes[ii];\n    maxIndexToConsider = getNodeLength(currentContainer);\n  } while (true);\n\n  range.setStart(bestContainer, bestOffset);\n  return range;\n}\n\nmodule.exports = expandRangeToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\n\n\nfunction keyCommandBackspaceWord(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var offset = selection.getStartOffset(); // If there are no words before the cursor, remove the preceding newline.\n\n    if (offset === 0) {\n      return moveSelectionBackward(strategyState, 1);\n    }\n\n    var key = selection.getStartKey();\n    var content = strategyState.getCurrentContent();\n    var text = content.getBlockForKey(key).getText().slice(0, offset);\n    var toRemove = DraftRemovableWord.getBackward(text);\n    return moveSelectionBackward(strategyState, toRemove.length || 1);\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceWord;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n//             is latin supplement punctuation except fractions and superscript\n//             numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n//             is punctuation from the general punctuation block:\n//             weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n//             is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n//             is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n//             is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n//             is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n  getPunctuation: function getPunctuation() {\n    return PUNCTUATION;\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\n */\n\n\nfunction keyCommandDeleteWord(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var offset = selection.getStartOffset();\n    var key = selection.getStartKey();\n    var content = strategyState.getCurrentContent();\n    var text = content.getBlockForKey(key).getText().slice(offset);\n    var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline.\n\n    return moveSelectionForward(strategyState, toRemove.length || 1);\n  }, 'forward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandDeleteWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandInsertNewline(editorState) {\n  var contentState = DraftModifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());\n  return EditorState.push(editorState, contentState, 'split-block');\n}\n\nmodule.exports = keyCommandInsertNewline;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * See comment for `moveSelectionToStartOfBlock`.\n */\n\n\nfunction keyCommandMoveSelectionToEndOfBlock(editorState) {\n  var selection = editorState.getSelection();\n  var endKey = selection.getEndKey();\n  var content = editorState.getCurrentContent();\n  var textLength = content.getBlockForKey(endKey).getLength();\n  return EditorState.set(editorState, {\n    selection: selection.merge({\n      anchorKey: endKey,\n      anchorOffset: textLength,\n      focusKey: endKey,\n      focusOffset: textLength,\n      isBackward: false\n    }),\n    forceSelection: true\n  });\n}\n\nmodule.exports = keyCommandMoveSelectionToEndOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * Collapse selection at the start of the first selected block. This is used\n * for Firefox versions that attempt to navigate forward/backward instead of\n * moving the cursor. Other browsers are able to move the cursor natively.\n */\n\n\nfunction keyCommandMoveSelectionToStartOfBlock(editorState) {\n  var selection = editorState.getSelection();\n  var startKey = selection.getStartKey();\n  return EditorState.set(editorState, {\n    selection: selection.merge({\n      anchorKey: startKey,\n      anchorOffset: 0,\n      focusKey: startKey,\n      focusOffset: 0,\n      isBackward: false\n    }),\n    forceSelection: true\n  });\n}\n\nmodule.exports = keyCommandMoveSelectionToStartOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the following\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainDelete(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var content = strategyState.getCurrentContent();\n    var key = selection.getAnchorKey();\n    var offset = selection.getAnchorOffset();\n    var charAhead = content.getBlockForKey(key).getText()[offset];\n    return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1);\n  }, 'forward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  var selection = editorState.getSelection();\n  return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n/**\n * Transpose the characters on either side of a collapsed cursor, or\n * if the cursor is at the end of the block, transpose the last two\n * characters.\n */\n\n\nfunction keyCommandTransposeCharacters(editorState) {\n  var selection = editorState.getSelection();\n\n  if (!selection.isCollapsed()) {\n    return editorState;\n  }\n\n  var offset = selection.getAnchorOffset();\n\n  if (offset === 0) {\n    return editorState;\n  }\n\n  var blockKey = selection.getAnchorKey();\n  var content = editorState.getCurrentContent();\n  var block = content.getBlockForKey(blockKey);\n  var length = block.getLength(); // Nothing to transpose if there aren't two characters.\n\n  if (length <= 1) {\n    return editorState;\n  }\n\n  var removalRange;\n  var finalSelection;\n\n  if (offset === length) {\n    // The cursor is at the end of the block. Swap the last two characters.\n    removalRange = selection.set('anchorOffset', offset - 1);\n    finalSelection = selection;\n  } else {\n    removalRange = selection.set('focusOffset', offset + 1);\n    finalSelection = removalRange.set('anchorOffset', offset + 1);\n  } // Extract the character to move as a fragment. This preserves its\n  // styling and entity, if any.\n\n\n  var movedFragment = getContentStateFragment(content, removalRange);\n  var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward'); // After the removal, the insertion target is one character back.\n\n  var selectionAfter = afterRemoval.getSelectionAfter();\n  var targetOffset = selectionAfter.getAnchorOffset() - 1;\n  var targetRange = selectionAfter.merge({\n    anchorOffset: targetOffset,\n    focusOffset: targetOffset\n  });\n  var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n  var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n  return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n  var undoneState = EditorState.undo(editorState); // If the last change to occur was a spellcheck change, allow the undo\n  // event to fall through to the browser. This allows the browser to record\n  // the unwanted change, which should soon lead it to learn not to suggest\n  // the correction again.\n\n  if (editorState.getLastChangeType() === 'spellcheck-change') {\n    var nativelyRenderedContent = undoneState.getCurrentContent();\n    updateFn(EditorState.set(undoneState, {\n      nativelyRenderedContent: nativelyRenderedContent\n    }));\n    return;\n  } // Otheriwse, manage the undo behavior manually.\n\n\n  e.preventDefault();\n\n  if (!editorState.getNativelyRenderedContent()) {\n    updateFn(undoneState);\n    return;\n  } // Trigger a re-render with the current content state to ensure that the\n  // component tree has up-to-date props for comparison.\n\n\n  updateFn(EditorState.set(editorState, {\n    nativelyRenderedContent: null\n  })); // Wait to ensure that the re-render has occurred before performing\n  // the undo action.\n\n  setTimeout(function () {\n    updateFn(undoneState);\n  }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftPasteProcessor = require(\"./DraftPasteProcessor\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar splitTextIntoTextBlocks = require(\"./splitTextIntoTextBlocks\");\n/**\n * Paste content.\n */\n\n\nfunction editOnPaste(editor, e) {\n  e.preventDefault();\n  var data = new DataTransfer(e.clipboardData); // Get files, unless this is likely to be a string the user wants inline.\n\n  if (!data.isRichText()) {\n    var files = data.getFiles();\n    var defaultFileText = data.getText();\n\n    if (files.length > 0) {\n      // Allow customized paste handling for images, etc. Otherwise, fall\n      // through to insert text contents into the editor.\n      if (editor.props.handlePastedFiles && isEventHandled(editor.props.handlePastedFiles(files))) {\n        return;\n      }\n      /* $FlowFixMe This comment suppresses an error found DataTransfer was\n       * typed. getFiles() returns an array of <Files extends Blob>, not Blob\n       */\n\n\n      getTextContentFromFiles(files, function (\n      /*string*/\n      fileText) {\n        fileText = fileText || defaultFileText;\n\n        if (!fileText) {\n          return;\n        }\n\n        var editorState = editor._latestEditorState;\n        var blocks = splitTextIntoTextBlocks(fileText);\n        var character = CharacterMetadata.create({\n          style: editorState.getCurrentInlineStyle(),\n          entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n        });\n        var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n        var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n        var fragment = BlockMapBuilder.createFromArray(text);\n        var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n        editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n      });\n      return;\n    }\n  }\n\n  var textBlocks = [];\n  var text = data.getText();\n  var html = data.getHTML();\n  var editorState = editor._latestEditorState;\n\n  if (editor.props.handlePastedText && isEventHandled(editor.props.handlePastedText(text, html, editorState))) {\n    return;\n  }\n\n  if (text) {\n    textBlocks = splitTextIntoTextBlocks(text);\n  }\n\n  if (!editor.props.stripPastedStyles) {\n    // If the text from the paste event is rich content that matches what we\n    // already have on the internal clipboard, assume that we should just use\n    // the clipboard fragment for the paste. This will allow us to preserve\n    // styling and entities, if any are present. Note that newlines are\n    // stripped during comparison -- this is because copy/paste within the\n    // editor in Firefox and IE will not include empty lines. The resulting\n    // paste will preserve the newlines correctly.\n    var internalClipboard = editor.getClipboard();\n\n    if (data.isRichText() && internalClipboard) {\n      if ( // If the editorKey is present in the pasted HTML, it should be safe to\n      // assume this is an internal paste.\n      html.indexOf(editor.getEditorKey()) !== -1 || // The copy may have been made within a single block, in which case the\n      // editor key won't be part of the paste. In this case, just check\n      // whether the pasted text matches the internal clipboard.\n      textBlocks.length === 1 && internalClipboard.size === 1 && internalClipboard.first().getText() === text) {\n        editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n        return;\n      }\n    } else if (internalClipboard && data.types.includes('com.apple.webarchive') && !data.types.includes('text/html') && areTextBlocksAndClipboardEqual(textBlocks, internalClipboard)) {\n      // Safari does not properly store text/html in some cases.\n      // Use the internalClipboard if present and equal to what is on\n      // the clipboard. See https://bugs.webkit.org/show_bug.cgi?id=19893.\n      editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n      return;\n    } // If there is html paste data, try to parse that.\n\n\n    if (html) {\n      var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\n\n      if (htmlFragment) {\n        var contentBlocks = htmlFragment.contentBlocks,\n            entityMap = htmlFragment.entityMap;\n\n        if (contentBlocks) {\n          var htmlMap = BlockMapBuilder.createFromArray(contentBlocks);\n          editor.update(insertFragment(editor._latestEditorState, htmlMap, entityMap));\n          return;\n        }\n      }\n    } // Otherwise, create a new fragment from our pasted text. Also\n    // empty the internal clipboard, since it's no longer valid.\n\n\n    editor.setClipboard(null);\n  }\n\n  if (textBlocks.length) {\n    var character = CharacterMetadata.create({\n      style: editorState.getCurrentInlineStyle(),\n      entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n    });\n    var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n    var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n    var textMap = BlockMapBuilder.createFromArray(textFragment);\n    editor.update(insertFragment(editor._latestEditorState, textMap));\n  }\n}\n\nfunction insertFragment(editorState, fragment, entityMap) {\n  var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment); // TODO: merge the entity map once we stop using DraftEntity\n  // like this:\n  // const mergedEntityMap = newContent.getEntityMap().merge(entityMap);\n\n  return EditorState.push(editorState, newContent.set('entityMap', entityMap), 'insert-fragment');\n}\n\nfunction areTextBlocksAndClipboardEqual(textBlocks, blockMap) {\n  return textBlocks.length === blockMap.size && blockMap.valueSeq().every(function (block, ii) {\n    return block.getText() === textBlocks[ii];\n  });\n}\n\nmodule.exports = editOnPaste;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar convertFromHTMLToContentBlocks = require(\"./convertFromHTMLToContentBlocks\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat;\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar DraftPasteProcessor = {\n  processHTML: function processHTML(html, blockRenderMap) {\n    return convertFromHTMLToContentBlocks(html, getSafeBodyFromHTML, blockRenderMap);\n  },\n  processText: function processText(textBlocks, character, type) {\n    return textBlocks.reduce(function (acc, textLine, index) {\n      textLine = sanitizeDraftText(textLine);\n      var key = generateRandomKey();\n      var blockNodeConfig = {\n        key: key,\n        type: type,\n        text: textLine,\n        characterList: List(Repeat(character, textLine.length))\n      }; // next block updates previous block\n\n      if (experimentalTreeDataSupport && index !== 0) {\n        var prevSiblingIndex = index - 1; // update previous block\n\n        var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n          nextSibling: key\n        });\n        blockNodeConfig = _objectSpread({}, blockNodeConfig, {\n          prevSibling: previousBlock.getKey()\n        });\n      }\n\n      acc.push(new ContentBlockRecord(blockNodeConfig));\n      return acc;\n    }, []);\n  }\n};\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\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\nvar URI =\n/*#__PURE__*/\nfunction () {\n  function URI(uri) {\n    _defineProperty(this, \"_uri\", void 0);\n\n    this._uri = uri;\n  }\n\n  var _proto = URI.prototype;\n\n  _proto.toString = function toString() {\n    return this._uri;\n  };\n\n  return URI;\n}();\n\nmodule.exports = URI;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLAnchorElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'A';\n}\n\nmodule.exports = isHTMLAnchorElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLImageElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'IMG';\n}\n\nmodule.exports = isHTMLImageElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction adjustBlockDepthForContentState(contentState, selectionState, adjustment, maxDepth) {\n  var startKey = selectionState.getStartKey();\n  var endKey = selectionState.getEndKey();\n  var blockMap = contentState.getBlockMap();\n  var blocks = blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat([[endKey, blockMap.get(endKey)]]).map(function (block) {\n    var depth = block.getDepth() + adjustment;\n    depth = Math.max(0, Math.min(depth, maxDepth));\n    return block.set('depth', depth);\n  });\n  blockMap = blockMap.merge(blocks);\n  return contentState.merge({\n    blockMap: blockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar NEWLINE_REGEX = /\\r\\n?|\\n/g;\n\nfunction splitTextIntoTextBlocks(text) {\n  return text.split(NEWLINE_REGEX);\n}\n\nmodule.exports = splitTextIntoTextBlocks;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar ReactDOMComet = require(\"react-dom\");\n\nvar flushControlled = ReactDOMComet.unstable_flushControlled;\nmodule.exports = flushControlled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\n/**\n * This component is responsible for rendering placeholder text for the\n * `DraftEditor` component.\n *\n * Override placeholder style via CSS.\n */\nvar DraftEditorPlaceholder =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DraftEditorPlaceholder, _React$Component);\n\n  function DraftEditorPlaceholder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorPlaceholder.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n  };\n\n  _proto.render = function render() {\n    var hasFocus = this.props.editorState.getSelection().getHasFocus();\n    var className = cx({\n      'public/DraftEditorPlaceholder/root': true,\n      'public/DraftEditorPlaceholder/hasFocus': hasFocus\n    });\n    var contentStyle = {\n      whiteSpace: 'pre-wrap'\n    };\n    return React.createElement(\"div\", {\n      className: className\n    }, React.createElement(\"div\", {\n      className: cx('public/DraftEditorPlaceholder/inner'),\n      id: this.props.accessibilityID,\n      style: contentStyle\n    }, this.props.text));\n  };\n\n  return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar encodeEntityRanges = require(\"./encodeEntityRanges\");\n\nvar encodeInlineStyleRanges = require(\"./encodeInlineStyleRanges\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar createRawBlock = function createRawBlock(block, entityStorageMap) {\n  return {\n    key: block.getKey(),\n    text: block.getText(),\n    type: block.getType(),\n    depth: block.getDepth(),\n    inlineStyleRanges: encodeInlineStyleRanges(block),\n    entityRanges: encodeEntityRanges(block, entityStorageMap),\n    data: block.getData().toObject()\n  };\n};\n\nvar insertRawBlock = function insertRawBlock(block, entityMap, rawBlocks, blockCacheRef) {\n  if (block instanceof ContentBlock) {\n    rawBlocks.push(createRawBlock(block, entityMap));\n    return;\n  }\n\n  !(block instanceof ContentBlockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'block is not a BlockNode') : invariant(false) : void 0;\n  var parentKey = block.getParentKey();\n\n  var rawBlock = blockCacheRef[block.getKey()] = _objectSpread({}, createRawBlock(block, entityMap), {\n    children: []\n  });\n\n  if (parentKey) {\n    blockCacheRef[parentKey].children.push(rawBlock);\n    return;\n  }\n\n  rawBlocks.push(rawBlock);\n};\n\nvar encodeRawBlocks = function encodeRawBlocks(contentState, rawState) {\n  var entityMap = rawState.entityMap;\n  var rawBlocks = [];\n  var blockCacheRef = {};\n  var entityCacheRef = {};\n  var entityStorageKey = 0;\n  contentState.getBlockMap().forEach(function (block) {\n    block.findEntityRanges(function (character) {\n      return character.getEntity() !== null;\n    }, function (start) {\n      var entityKey = block.getEntityAt(start); // Stringify to maintain order of otherwise numeric keys.\n\n      var stringifiedEntityKey = DraftStringKey.stringify(entityKey); // This makes this function resilient to two entities\n      // erroneously having the same key\n\n      if (entityCacheRef[stringifiedEntityKey]) {\n        return;\n      }\n\n      entityCacheRef[stringifiedEntityKey] = entityKey; // we need the `any` casting here since this is a temporary state\n      // where we will later on flip the entity map and populate it with\n      // real entity, at this stage we just need to map back the entity\n      // key used by the BlockNode\n\n      entityMap[stringifiedEntityKey] = \"\".concat(entityStorageKey);\n      entityStorageKey++;\n    });\n    insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n  });\n  return {\n    blocks: rawBlocks,\n    entityMap: entityMap\n  };\n}; // Flip storage map so that our storage keys map to global\n// DraftEntity keys.\n\n\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n  var blocks = rawState.blocks,\n      entityMap = rawState.entityMap;\n  var rawEntityMap = {};\n  Object.keys(entityMap).forEach(function (key, index) {\n    var entity = contentState.getEntity(DraftStringKey.unstringify(key));\n    rawEntityMap[index] = {\n      type: entity.getType(),\n      mutability: entity.getMutability(),\n      data: entity.getData()\n    };\n  });\n  return {\n    blocks: blocks,\n    entityMap: rawEntityMap\n  };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n  var rawDraftContentState = {\n    entityMap: {},\n    blocks: []\n  }; // add blocks\n\n  rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState); // add entities\n\n  rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n  return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar strlen = UnicodeUtils.strlen;\n/**\n * Convert to UTF-8 character counts for storage.\n */\n\nfunction encodeEntityRanges(block, storageMap) {\n  var encoded = [];\n  block.findEntityRanges(function (character) {\n    return !!character.getEntity();\n  }, function (\n  /*number*/\n  start,\n  /*number*/\n  end) {\n    var text = block.getText();\n    var key = block.getEntityAt(start);\n    encoded.push({\n      offset: strlen(text.slice(0, start)),\n      length: strlen(text.slice(start, end)),\n      // Encode the key as a number for range storage.\n      key: Number(storageMap[DraftStringKey.stringify(key)])\n    });\n  });\n  return encoded;\n}\n\nmodule.exports = encodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar areEqual = function areEqual(a, b) {\n  return a === b;\n};\n\nvar isTruthy = function isTruthy(a) {\n  return !!a;\n};\n\nvar EMPTY_ARRAY = [];\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\n\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n  var ranges = []; // Obtain an array with ranges for only the specified style.\n\n  var filteredInlines = styleList.map(function (style) {\n    return style.has(styleToEncode);\n  }).toList();\n  findRangesImmutable(filteredInlines, areEqual, // We only want to keep ranges with nonzero style values.\n  isTruthy, function (start, end) {\n    var text = block.getText();\n    ranges.push({\n      offset: UnicodeUtils.strlen(text.slice(0, start)),\n      length: UnicodeUtils.strlen(text.slice(start, end)),\n      style: styleToEncode\n    });\n  });\n  return ranges;\n}\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\n */\n\n\nfunction encodeInlineStyleRanges(block) {\n  var styleList = block.getCharacterList().map(function (c) {\n    return c.getStyle();\n  }).toList();\n  var ranges = styleList.flatten().toSet().map(function (style) {\n    return getEncodedInlinesForType(block, styleList, style);\n  });\n  return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftTreeAdapter = require(\"./DraftTreeAdapter\");\n\nvar DraftTreeInvariants = require(\"./DraftTreeInvariants\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar createCharacterList = require(\"./createCharacterList\");\n\nvar decodeEntityRanges = require(\"./decodeEntityRanges\");\n\nvar decodeInlineStyleRanges = require(\"./decodeInlineStyleRanges\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedMap = Immutable.OrderedMap;\n\nvar decodeBlockNodeConfig = function decodeBlockNodeConfig(block, entityMap) {\n  var key = block.key,\n      type = block.type,\n      data = block.data,\n      text = block.text,\n      depth = block.depth;\n  var blockNodeConfig = {\n    text: text,\n    depth: depth || 0,\n    type: type || 'unstyled',\n    key: key || generateRandomKey(),\n    data: Map(data),\n    characterList: decodeCharacterList(block, entityMap)\n  };\n  return blockNodeConfig;\n};\n\nvar decodeCharacterList = function decodeCharacterList(block, entityMap) {\n  var text = block.text,\n      rawEntityRanges = block.entityRanges,\n      rawInlineStyleRanges = block.inlineStyleRanges;\n  var entityRanges = rawEntityRanges || [];\n  var inlineStyleRanges = rawInlineStyleRanges || []; // Translate entity range keys to the DraftEntity map.\n\n  return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n    return entityMap.hasOwnProperty(range.key);\n  }).map(function (range) {\n    return _objectSpread({}, range, {\n      key: entityMap[range.key]\n    });\n  })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n  return _objectSpread({}, block, {\n    key: block.key || generateRandomKey()\n  });\n};\n/**\n * Node stack is responsible to ensure we traverse the tree only once\n * in depth order, while also providing parent refs to inner nodes to\n * construct their links.\n */\n\n\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n  var nodesWithParentRef = nodes.map(function (block) {\n    return _objectSpread({}, block, {\n      parentRef: parentRef\n    });\n  }); // since we pop nodes from the stack we need to insert them in reverse\n\n  return stack.concat(nodesWithParentRef.reverse());\n};\n/**\n * This will build a tree draft content state by creating the node\n * reference links into a single tree walk. Each node has a link\n * reference to \"parent\", \"children\", \"nextSibling\" and \"prevSibling\"\n * blockMap will be created using depth ordering.\n */\n\n\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n  return blocks // ensure children have valid keys to enable sibling links\n  .map(addKeyIfMissing).reduce(function (blockMap, block, index) {\n    !Array.isArray(block.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0; // ensure children have valid keys to enable sibling links\n\n    var children = block.children.map(addKeyIfMissing); // root level nodes\n\n    var contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(block, entityMap), {\n      prevSibling: index === 0 ? null : blocks[index - 1].key,\n      nextSibling: index === blocks.length - 1 ? null : blocks[index + 1].key,\n      children: List(children.map(function (child) {\n        return child.key;\n      }))\n    })); // push root node to blockMap\n\n    blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n    var stack = updateNodeStack([], children, contentBlockNode); // start computing children nodes\n\n    while (stack.length > 0) {\n      // we pop from the stack and start processing this node\n      var node = stack.pop(); // parentRef already points to a converted ContentBlockNode\n\n      var parentRef = node.parentRef;\n      var siblings = parentRef.getChildKeys();\n\n      var _index = siblings.indexOf(node.key);\n\n      var isValidBlock = Array.isArray(node.children);\n\n      if (!isValidBlock) {\n        !isValidBlock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0;\n        break;\n      } // ensure children have valid keys to enable sibling links\n\n\n      var _children = node.children.map(addKeyIfMissing);\n\n      var _contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(node, entityMap), {\n        parent: parentRef.getKey(),\n        children: List(_children.map(function (child) {\n          return child.key;\n        })),\n        prevSibling: _index === 0 ? null : siblings.get(_index - 1),\n        nextSibling: _index === siblings.size - 1 ? null : siblings.get(_index + 1)\n      })); // push node to blockMap\n\n\n      blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n      stack = updateNodeStack(stack, _children, _contentBlockNode);\n    }\n\n    return blockMap;\n  }, OrderedMap());\n};\n\nvar decodeContentBlocks = function decodeContentBlocks(blocks, entityMap) {\n  return OrderedMap(blocks.map(function (block) {\n    var contentBlock = new ContentBlock(decodeBlockNodeConfig(block, entityMap));\n    return [contentBlock.getKey(), contentBlock];\n  }));\n};\n\nvar decodeRawBlocks = function decodeRawBlocks(rawState, entityMap) {\n  var isTreeRawBlock = rawState.blocks.find(function (block) {\n    return Array.isArray(block.children) && block.children.length > 0;\n  });\n  var rawBlocks = experimentalTreeDataSupport && !isTreeRawBlock ? DraftTreeAdapter.fromRawStateToRawTreeState(rawState).blocks : rawState.blocks;\n\n  if (!experimentalTreeDataSupport) {\n    return decodeContentBlocks(isTreeRawBlock ? DraftTreeAdapter.fromRawTreeStateToRawState(rawState).blocks : rawBlocks, entityMap);\n  }\n\n  var blockMap = decodeContentBlockNodes(rawBlocks, entityMap); // in dev mode, check that the tree invariants are met\n\n  if (process.env.NODE_ENV !== \"production\") {\n    !DraftTreeInvariants.isValidTree(blockMap) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should be a valid tree') : invariant(false) : void 0;\n  }\n\n  return blockMap;\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n  var rawEntityMap = rawState.entityMap;\n  var entityMap = {}; // TODO: Update this once we completely remove DraftEntity\n\n  Object.keys(rawEntityMap).forEach(function (rawEntityKey) {\n    var _rawEntityMap$rawEnti = rawEntityMap[rawEntityKey],\n        type = _rawEntityMap$rawEnti.type,\n        mutability = _rawEntityMap$rawEnti.mutability,\n        data = _rawEntityMap$rawEnti.data; // get the key reference to created entity\n\n    entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n  });\n  return entityMap;\n};\n\nvar convertFromRawToDraftState = function convertFromRawToDraftState(rawState) {\n  !Array.isArray(rawState.blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentState') : invariant(false) : void 0; // decode entities\n\n  var entityMap = decodeRawEntityMap(rawState); // decode blockMap\n\n  var blockMap = decodeRawBlocks(rawState, entityMap); // create initial selection\n\n  var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n  return new ContentState({\n    blockMap: blockMap,\n    entityMap: entityMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n};\n\nmodule.exports = convertFromRawToDraftState;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n  var stack = [].concat(blocks).reverse();\n\n  while (stack.length) {\n    var _block = stack.pop();\n\n    fn(_block);\n    var children = _block.children;\n    !Array.isArray(children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n    stack = stack.concat([].concat(children.reverse()));\n  }\n};\n\nvar isListBlock = function isListBlock(block) {\n  if (!(block && block.type)) {\n    return false;\n  }\n\n  var type = block.type;\n  return type === 'unordered-list-item' || type === 'ordered-list-item';\n};\n\nvar addDepthToChildren = function addDepthToChildren(block) {\n  if (Array.isArray(block.children)) {\n    block.children = block.children.map(function (child) {\n      return child.type === block.type ? _objectSpread({}, child, {\n        depth: (block.depth || 0) + 1\n      }) : child;\n    });\n  }\n};\n/**\n * This adapter is intended to be be used as an adapter to draft tree data\n *\n * draft state <=====> draft tree state\n */\n\n\nvar DraftTreeAdapter = {\n  /**\n   * Converts from a tree raw state back to draft raw state\n   */\n  fromRawTreeStateToRawState: function fromRawTreeStateToRawState(draftTreeState) {\n    var blocks = draftTreeState.blocks;\n    var transformedBlocks = [];\n    !Array.isArray(blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid raw state') : invariant(false) : void 0;\n\n    if (!Array.isArray(blocks) || !blocks.length) {\n      return draftTreeState;\n    }\n\n    traverseInDepthOrder(blocks, function (block) {\n      var newBlock = _objectSpread({}, block);\n\n      if (isListBlock(block)) {\n        newBlock.depth = newBlock.depth || 0;\n        addDepthToChildren(block); // if it's a non-leaf node, we don't do anything else\n\n        if (block.children != null && block.children.length > 0) {\n          return;\n        }\n      }\n\n      delete newBlock.children;\n      transformedBlocks.push(newBlock);\n    });\n    draftTreeState.blocks = transformedBlocks;\n    return _objectSpread({}, draftTreeState, {\n      blocks: transformedBlocks\n    });\n  },\n\n  /**\n   * Converts from draft raw state to tree draft state\n   */\n  fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n    var transformedBlocks = [];\n    var parentStack = [];\n    draftState.blocks.forEach(function (block) {\n      var isList = isListBlock(block);\n      var depth = block.depth || 0;\n\n      var treeBlock = _objectSpread({}, block, {\n        children: []\n      });\n\n      if (!isList) {\n        transformedBlocks.push(treeBlock);\n        return;\n      }\n\n      var lastParent = parentStack[0]; // block is non-nested & there are no nested blocks, directly push block\n\n      if (lastParent == null && depth === 0) {\n        transformedBlocks.push(treeBlock); // block is first nested block or previous nested block is at a lower level\n      } else if (lastParent == null || lastParent.depth < depth - 1) {\n        // create new parent block\n        var newParent = {\n          key: generateRandomKey(),\n          text: '',\n          depth: depth - 1,\n          type: block.type,\n          children: [],\n          entityRanges: [],\n          inlineStyleRanges: []\n        };\n        parentStack.unshift(newParent);\n\n        if (depth === 1) {\n          // add as a root-level block\n          transformedBlocks.push(newParent);\n        } else if (lastParent != null) {\n          // depth > 1 => also add as previous parent's child\n          lastParent.children.push(newParent);\n        }\n\n        newParent.children.push(treeBlock);\n      } else if (lastParent.depth === depth - 1) {\n        // add as child of last parent\n        lastParent.children.push(treeBlock);\n      } else {\n        // pop out parents at levels above this one from the parent stack\n        while (lastParent != null && lastParent.depth >= depth) {\n          parentStack.shift();\n          lastParent = parentStack[0];\n        }\n\n        if (depth > 0) {\n          lastParent.children.push(treeBlock);\n        } else {\n          transformedBlocks.push(treeBlock);\n        }\n      }\n    });\n    return _objectSpread({}, draftState, {\n      blocks: transformedBlocks\n    });\n  }\n};\nmodule.exports = DraftTreeAdapter;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar warning = require(\"fbjs/lib/warning\");\n\nvar DraftTreeInvariants = {\n  /**\n   * Check if the block is valid\n   */\n  isValidBlock: function isValidBlock(block, blockMap) {\n    var key = block.getKey(); // is its parent's child\n\n    var parentKey = block.getParentKey();\n\n    if (parentKey != null) {\n      var parent = blockMap.get(parentKey);\n\n      if (!parent.getChildKeys().includes(key)) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing parent -> child pointer on %s', key) : void 0;\n        return false;\n      }\n    } // is its children's parent\n\n\n    var children = block.getChildKeys().map(function (k) {\n      return blockMap.get(k);\n    });\n\n    if (!children.every(function (c) {\n      return c.getParentKey() === key;\n    })) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing child -> parent pointer on %s', key) : void 0;\n      return false;\n    } // is its previous sibling's next sibling\n\n\n    var prevSiblingKey = block.getPrevSiblingKey();\n\n    if (prevSiblingKey != null) {\n      var prevSibling = blockMap.get(prevSiblingKey);\n\n      if (prevSibling.getNextSiblingKey() !== key) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing nextSibling pointer on %s's prevSibling\", key) : void 0;\n        return false;\n      }\n    } // is its next sibling's previous sibling\n\n\n    var nextSiblingKey = block.getNextSiblingKey();\n\n    if (nextSiblingKey != null) {\n      var nextSibling = blockMap.get(nextSiblingKey);\n\n      if (nextSibling.getPrevSiblingKey() !== key) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing prevSibling pointer on %s's nextSibling\", key) : void 0;\n        return false;\n      }\n    } // no 2-node cycles\n\n\n    if (nextSiblingKey !== null && prevSiblingKey !== null) {\n      if (prevSiblingKey === nextSiblingKey) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree has a two-node cycle at %s', key) : void 0;\n        return false;\n      }\n    } // if it's a leaf node, it has text but no children\n\n\n    if (block.text != '') {\n      if (block.getChildKeys().size > 0) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Leaf node %s has children', key) : void 0;\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\n   * Checks that this is a connected tree on all the blocks\n   * starting from the first block, traversing nextSibling and child pointers\n   * should be a tree (preorder traversal - parent, then children)\n   * num of connected node === number of blocks\n   */\n  isConnectedTree: function isConnectedTree(blockMap) {\n    // exactly one node has no previous sibling + no parent\n    var eligibleFirstNodes = blockMap.toArray().filter(function (block) {\n      return block.getParentKey() == null && block.getPrevSiblingKey() == null;\n    });\n\n    if (eligibleFirstNodes.length !== 1) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. More or less than one first node') : void 0;\n      return false;\n    }\n\n    var firstNode = eligibleFirstNodes.shift();\n    var nodesSeen = 0;\n    var currentKey = firstNode.getKey();\n    var visitedStack = [];\n\n    while (currentKey != null) {\n      var currentNode = blockMap.get(currentKey);\n      var childKeys = currentNode.getChildKeys();\n      var nextSiblingKey = currentNode.getNextSiblingKey(); // if the node has children, add parent's next sibling to stack and go to children\n\n      if (childKeys.size > 0) {\n        if (nextSiblingKey != null) {\n          visitedStack.unshift(nextSiblingKey);\n        }\n\n        var children = childKeys.map(function (k) {\n          return blockMap.get(k);\n        });\n\n        var _firstNode = children.find(function (block) {\n          return block.getPrevSiblingKey() == null;\n        });\n\n        if (_firstNode == null) {\n          process.env.NODE_ENV !== \"production\" ? warning(true, '%s has no first child', currentKey) : void 0;\n          return false;\n        }\n\n        currentKey = _firstNode.getKey(); // TODO(T32490138): Deal with multi-node cycles here\n      } else {\n        if (currentNode.getNextSiblingKey() != null) {\n          currentKey = currentNode.getNextSiblingKey();\n        } else {\n          currentKey = visitedStack.shift();\n        }\n      }\n\n      nodesSeen++;\n    }\n\n    if (nodesSeen !== blockMap.size) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. %s nodes were seen instead of %s', nodesSeen, blockMap.size) : void 0;\n      return false;\n    }\n\n    return true;\n  },\n\n  /**\n   * Checks that the block map is a connected tree with valid blocks\n   */\n  isValidTree: function isValidTree(blockMap) {\n    var _this = this;\n\n    var blocks = blockMap.toArray();\n\n    if (!blocks.every(function (block) {\n      return _this.isValidBlock(block, blockMap);\n    })) {\n      return false;\n    }\n\n    return this.isConnectedTree(blockMap);\n  }\n};\nmodule.exports = DraftTreeInvariants;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\n\nfunction createCharacterList(inlineStyles, entities) {\n  var characterArray = inlineStyles.map(function (style, ii) {\n    var entity = entities[ii];\n    return CharacterMetadata.create({\n      style: style,\n      entity: entity\n    });\n  });\n  return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar substr = UnicodeUtils.substr;\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeEntityRanges(text, ranges) {\n  var entities = Array(text.length).fill(null);\n\n  if (ranges) {\n    ranges.forEach(function (range) {\n      // Using Unicode-enabled substrings converted to JavaScript lengths,\n      // fill the output array with entity keys.\n      var start = substr(text, 0, range.offset).length;\n      var end = start + substr(text, range.offset, range.length).length;\n\n      for (var ii = start; ii < end; ii++) {\n        entities[ii] = range.key;\n      }\n    });\n  }\n\n  return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar _require = require(\"immutable\"),\n    OrderedSet = _require.OrderedSet;\n\nvar substr = UnicodeUtils.substr;\nvar EMPTY_SET = OrderedSet();\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeInlineStyleRanges(text, ranges) {\n  var styles = Array(text.length).fill(EMPTY_SET);\n\n  if (ranges) {\n    ranges.forEach(function (range) {\n      var cursor = substr(text, 0, range.offset).length;\n      var end = cursor + substr(text, range.offset, range.length).length;\n\n      while (cursor < end) {\n        styles[cursor] = styles[cursor].add(range.style);\n        cursor++;\n      }\n    });\n  }\n\n  return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeBoundingClientRect = require(\"./getRangeBoundingClientRect\");\n/**\n * Return the bounding ClientRect for the visible DOM selection, if any.\n * In cases where there are no selected ranges or the bounding rect is\n * temporarily invalid, return null.\n *\n * When using from an iframe, you should pass the iframe window object\n */\n\n\nfunction getVisibleSelectionRect(global) {\n  var selection = global.getSelection();\n\n  if (!selection.rangeCount) {\n    return null;\n  }\n\n  var range = selection.getRangeAt(0);\n  var boundingRect = getRangeBoundingClientRect(range);\n  var top = boundingRect.top,\n      right = boundingRect.right,\n      bottom = boundingRect.bottom,\n      left = boundingRect.left; // When a re-render leads to a node being removed, the DOM selection will\n  // temporarily be placed on an ancestor node, which leads to an invalid\n  // bounding rect. Discard this state.\n\n  if (top === 0 && right === 0 && bottom === 0 && left === 0) {\n    return null;\n  }\n\n  return boundingRect;\n}\n\nmodule.exports = getVisibleSelectionRect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\n/**\n * Like range.getBoundingClientRect() but normalizes for browser bugs.\n */\nfunction getRangeBoundingClientRect(range) {\n  // \"Return a DOMRect object describing the smallest rectangle that includes\n  // the first rectangle in list and all of the remaining rectangles of which\n  // the height or width is not zero.\"\n  // http://www.w3.org/TR/cssom-view/#dom-range-getboundingclientrect\n  var rects = getRangeClientRects(range);\n  var top = 0;\n  var right = 0;\n  var bottom = 0;\n  var left = 0;\n\n  if (rects.length) {\n    // If the first rectangle has 0 width, we use the second, this is needed\n    // because Chrome renders a 0 width rectangle when the selection contains\n    // a line break.\n    if (rects.length > 1 && rects[0].width === 0) {\n      var _rects$ = rects[1];\n      top = _rects$.top;\n      right = _rects$.right;\n      bottom = _rects$.bottom;\n      left = _rects$.left;\n    } else {\n      var _rects$2 = rects[0];\n      top = _rects$2.top;\n      right = _rects$2.right;\n      bottom = _rects$2.bottom;\n      left = _rects$2.left;\n    }\n\n    for (var ii = 1; ii < rects.length; ii++) {\n      var rect = rects[ii];\n\n      if (rect.height !== 0 && rect.width !== 0) {\n        top = Math.min(top, rect.top);\n        right = Math.max(right, rect.right);\n        bottom = Math.max(bottom, rect.bottom);\n        left = Math.min(left, rect.left);\n      }\n    }\n  }\n\n  return {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left,\n    width: right - left,\n    height: bottom - top\n  };\n}\n\nmodule.exports = getRangeBoundingClientRect;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\nmodule.exports = exports['default'];","function createThunkMiddleware(extraArgument) {\n  return function (_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        if (typeof action === 'function') {\n          return action(dispatch, getState, extraArgument);\n        }\n\n        return next(action);\n      };\n    };\n  };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n  _inherits(Router, _React$Component);\n\n  function Router() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Router);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      match: _this.computeMatch(_this.props.history.location.pathname)\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Router.prototype.getChildContext = function getChildContext() {\n    return {\n      router: _extends({}, this.context.router, {\n        history: this.props.history,\n        route: {\n          location: this.props.history.location,\n          match: this.state.match\n        }\n      })\n    };\n  };\n\n  Router.prototype.computeMatch = function computeMatch(pathname) {\n    return {\n      path: \"/\",\n      url: \"/\",\n      params: {},\n      isExact: pathname === \"/\"\n    };\n  };\n\n  Router.prototype.componentWillMount = function componentWillMount() {\n    var _this2 = this;\n\n    var _props = this.props,\n        children = _props.children,\n        history = _props.history;\n\n\n    invariant(children == null || React.Children.count(children) === 1, \"A <Router> may have only one child element\");\n\n    // Do this here so we can setState when a <Redirect> changes the\n    // location in componentWillMount. This happens e.g. when doing\n    // server rendering using a <StaticRouter>.\n    this.unlisten = history.listen(function () {\n      _this2.setState({\n        match: _this2.computeMatch(history.location.pathname)\n      });\n    });\n  };\n\n  Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    warning(this.props.history === nextProps.history, \"You cannot change <Router history>\");\n  };\n\n  Router.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.unlisten();\n  };\n\n  Router.prototype.render = function render() {\n    var children = this.props.children;\n\n    return children ? React.Children.only(children) : null;\n  };\n\n  return Router;\n}(React.Component);\n\nRouter.propTypes = {\n  history: PropTypes.object.isRequired,\n  children: PropTypes.node\n};\nRouter.contextTypes = {\n  router: PropTypes.object\n};\nRouter.childContextTypes = {\n  router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/**\n * This action type will be dispatched when your history\n * receives a location change.\n */\nexport var LOCATION_CHANGE = '@@router/LOCATION_CHANGE';\n\nvar initialState = {\n  location: null\n\n  /**\n   * This reducer will update the state with the most recent location history\n   * has transitioned to. This may not be in sync with the router, particularly\n   * if you have asynchronously-loaded routes, so reading from and relying on\n   * this state is discouraged.\n   */\n};export function routerReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      type = _ref.type,\n      payload = _ref.payload;\n\n  if (type === LOCATION_CHANGE) {\n    return _extends({}, state, { location: payload });\n  }\n\n  return state;\n}","function _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\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Router } from 'react-router';\n\nimport { LOCATION_CHANGE } from './reducer';\n\nvar ConnectedRouter = function (_Component) {\n  _inherits(ConnectedRouter, _Component);\n\n  function ConnectedRouter() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, ConnectedRouter);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.handleLocationChange = function (location) {\n      _this.store.dispatch({\n        type: LOCATION_CHANGE,\n        payload: location\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  ConnectedRouter.prototype.componentWillMount = function componentWillMount() {\n    var _props = this.props,\n        propsStore = _props.store,\n        history = _props.history;\n\n    this.store = propsStore || this.context.store;\n    this.handleLocationChange(history.location);\n  };\n\n  ConnectedRouter.prototype.componentDidMount = function componentDidMount() {\n    var history = this.props.history;\n\n    this.unsubscribeFromHistory = history.listen(this.handleLocationChange);\n  };\n\n  ConnectedRouter.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (this.unsubscribeFromHistory) this.unsubscribeFromHistory();\n  };\n\n  ConnectedRouter.prototype.render = function render() {\n    return React.createElement(Router, this.props);\n  };\n\n  return ConnectedRouter;\n}(Component);\n\nConnectedRouter.propTypes = {\n  store: PropTypes.object,\n  history: PropTypes.object,\n  children: PropTypes.node\n};\nConnectedRouter.contextTypes = {\n  store: PropTypes.object\n};\n\n\nexport default ConnectedRouter;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n  var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n  var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n  if (cache[pattern]) return cache[pattern];\n\n  var keys = [];\n  var re = pathToRegexp(pattern, keys, options);\n  var compiledPattern = { re: re, keys: keys };\n\n  if (cacheCount < cacheLimit) {\n    cache[pattern] = compiledPattern;\n    cacheCount++;\n  }\n\n  return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var parent = arguments[2];\n\n  if (typeof options === \"string\") options = { path: options };\n\n  var _options = options,\n      path = _options.path,\n      _options$exact = _options.exact,\n      exact = _options$exact === undefined ? false : _options$exact,\n      _options$strict = _options.strict,\n      strict = _options$strict === undefined ? false : _options$strict,\n      _options$sensitive = _options.sensitive,\n      sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n  if (path == null) return parent;\n\n  var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n      re = _compilePath.re,\n      keys = _compilePath.keys;\n\n  var match = re.exec(pathname);\n\n  if (!match) return null;\n\n  var url = match[0],\n      values = match.slice(1);\n\n  var isExact = pathname === url;\n\n  if (exact && !isExact) return null;\n\n  return {\n    path: path, // the path pattern used to match\n    url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n    isExact: isExact, // whether or not we matched exactly\n    params: keys.reduce(function (memo, key, index) {\n      memo[key.name] = values[index];\n      return memo;\n    }, {})\n  };\n};\n\nexport default matchPath;","\n/**\n * This action type will be dispatched by the history actions below.\n * If you're writing a middleware to watch for navigation events, be sure to\n * look for actions of this type.\n */\nexport var CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';\n\nfunction updateLocation(method) {\n  return function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return {\n      type: CALL_HISTORY_METHOD,\n      payload: { method: method, args: args }\n    };\n  };\n}\n\n/**\n * These actions correspond to the history API.\n * The associated routerMiddleware will capture these events before they get to\n * your reducer and reissue them as the matching function on your history.\n */\nexport var push = updateLocation('push');\nexport var replace = updateLocation('replace');\nexport var go = updateLocation('go');\nexport var goBack = updateLocation('goBack');\nexport var goForward = updateLocation('goForward');\n\nexport var routerActions = { push: push, replace: replace, go: go, goBack: goBack, goForward: goForward };","import store from './../configureStore';\n\nexport const ACTIONS = {\n  SET_LAYOUT: 'SET_LAYOUT',\n  SET_CONFIG: 'SET_CONFIG'\n};\n\nexport function setConfig(key, value) {\n  let config = {\n    [key]: value\n  }\n  return {\n    type: ACTIONS.SET_CONFIG,\n    config\n  }\n}\nexport function setLayout(layout) {\n  store.dispatch({ type: ACTIONS.SET_LAYOUT, layout });\n}\n","export const materialDesignColors = {\n  white: '#ffffff',\n  black: '#000000',\n  'red-50': '#ffebee',\n  'red-100': '#ffcdd2',\n  'red-200': '#ef9a9a',\n  'red-300': '#e57373',\n  'red-400': '#ef5350',\n  'red-500': '#f44336',\n  'red-600': '#e53935',\n  'red-700': '#d32f2f',\n  'red-800': '#c62828',\n  'red-900': '#b71c1c',\n  'red-a100': '#ff8a80',\n  'red-a200': '#ff5252',\n  'red-a400': '#ff1744',\n  'red-a700': '#d50000',\n  'pink-50': '#fce4ec',\n  'pink-100': '#f8bbd0',\n  'pink-200': '#f48fb1',\n  'pink-300': '#f06292',\n  'pink-400': '#ec407a',\n  'pink-500': '#e91e63',\n  'pink-600': '#d81b60',\n  'pink-700': '#c2185b',\n  'pink-800': '#ad1457',\n  'pink-900': '#880e4f',\n  'pink-a100': '#ff80ab',\n  'pink-a200': '#ff4081',\n  'pink-a400': '#f50057',\n  'pink-a700': '#c51162',\n  'purple-50': '#f3e5f5',\n  'purple-100': '#e1bee7',\n  'purple-200': '#ce93d8',\n  'purple-300': '#ba68c8',\n  'purple-400': '#ab47bc',\n  'purple-500': '#9c27b0',\n  'purple-600': '#8e24aa',\n  'purple-700': '#7b1fa2',\n  'purple-800': '#6a1b9a',\n  'purple-900': '#4a148c',\n  'purple-a100': '#ea80fc',\n  'purple-a200': '#e040fb',\n  'purple-a400': '#d500f9',\n  'purple-a700': '#aa00ff',\n  'deep-purple-50': '#ede7f6',\n  'deep-purple-100': '#d1c4e9',\n  'deep-purple-200': '#b39ddb',\n  'deep-purple-300': '#9575cd',\n  'deep-purple-400': '#7e57c2',\n  'deep-purple-500': '#673ab7',\n  'deep-purple-600': '#5e35b1',\n  'deep-purple-700': '#512da8',\n  'deep-purple-800': '#4527a0',\n  'deep-purple-900': '#311b92',\n  'deep-purple-a100': '#b388ff',\n  'deep-purple-a200': '#7c4dff',\n  'deep-purple-a400': '#651fff',\n  'deep-purple-a700': '#6200ea',\n  'indigo-50': '#e8eaf6',\n  'indigo-100': '#c5cae9',\n  'indigo-200': '#9fa8da',\n  'indigo-300': '#7986cb',\n  'indigo-400': '#5c6bc0',\n  'indigo-500': '#3f51b5',\n  'indigo-600': '#3949ab',\n  'indigo-700': '#303f9f',\n  'indigo-800': '#283593',\n  'indigo-900': '#1a237e',\n  'indigo-a100': '#8c9eff',\n  'indigo-a200': '#536dfe',\n  'indigo-a400': '#3d5afe',\n  'indigo-a700': '#304ffe',\n  'blue-50': '#e3f2fd',\n  'blue-100': '#bbdefb',\n  'blue-200': '#90caf9',\n  'blue-300': '#64b5f6',\n  'blue-400': '#42a5f5',\n  'blue-500': '#2196f3',\n  'blue-600': '#1e88e5',\n  'blue-700': '#1976d2',\n  'blue-800': '#1565c0',\n  'blue-900': '#0d47a1',\n  'blue-a100': '#82b1ff',\n  'blue-a200': '#448aff',\n  'blue-a400': '#2979ff',\n  'blue-a700': '#2962ff',\n  'light-blue-50': '#e1f5fe',\n  'light-blue-100': '#b3e5fc',\n  'light-blue-200': '#81d4fa',\n  'light-blue-300': '#4fc3f7',\n  'light-blue-400': '#29b6f6',\n  'light-blue-500': '#03a9f4',\n  'light-blue-600': '#039be5',\n  'light-blue-700': '#0288d1',\n  'light-blue-800': '#0277bd',\n  'light-blue-900': '#01579b',\n  'light-blue-a100': '#80d8ff',\n  'light-blue-a200': '#40c4ff',\n  'light-blue-a400': '#00b0ff',\n  'light-blue-a700': '#0091ea',\n  'cyan-50': '#e0f7fa',\n  'cyan-100': '#b2ebf2',\n  'cyan-200': '#80deea',\n  'cyan-300': '#4dd0e1',\n  'cyan-400': '#26c6da',\n  'cyan-500': '#00bcd4',\n  'cyan-600': '#00acc1',\n  'cyan-700': '#0097a7',\n  'cyan-800': '#00838f',\n  'cyan-900': '#006064',\n  'cyan-a100': '#84ffff',\n  'cyan-a200': '#18ffff',\n  'cyan-a400': '#00e5ff',\n  'cyan-a700': '#00b8d4',\n  'teal-50': '#e0f2f1',\n  'teal-100': '#b2dfdb',\n  'teal-200': '#80cbc4',\n  'teal-300': '#4db6ac',\n  'teal-400': '#26a69a',\n  'teal-500': '#009688',\n  'teal-600': '#00897b',\n  'teal-700': '#00796b',\n  'teal-800': '#00695c',\n  'teal-900': '#004d40',\n  'teal-a100': '#a7ffeb',\n  'teal-a200': '#64ffda',\n  'teal-a400': '#1de9b6',\n  'teal-a700': '#00bfa5',\n  'green-50': '#e8f5e9',\n  'green-100': '#c8e6c9',\n  'green-200': '#a5d6a7',\n  'green-300': '#81c784',\n  'green-400': '#66bb6a',\n  'green-500': '#4caf50',\n  'green-600': '#43a047',\n  'green-700': '#388e3c',\n  'green-800': '#2e7d32',\n  'green-900': '#1b5e20',\n  'green-a100': '#b9f6ca',\n  'green-a200': '#69f0ae',\n  'green-a400': '#00e676',\n  'green-a700': '#00c853',\n  'light-green-50': '#f1f8e9',\n  'light-green-100': '#dcedc8',\n  'light-green-200': '#c5e1a5',\n  'light-green-300': '#aed581',\n  'light-green-400': '#9ccc65',\n  'light-green-500': '#8bc34a',\n  'light-green-600': '#7cb342',\n  'light-green-700': '#689f38',\n  'light-green-800': '#558b2f',\n  'light-green-900': '#33691e',\n  'light-green-a100': '#ccff90',\n  'light-green-a200': '#b2ff59',\n  'light-green-a400': '#76ff03',\n  'light-green-a700': '#64dd17',\n  'lime-50': '#f9fbe7',\n  'lime-100': '#f0f4c3',\n  'lime-200': '#e6ee9c',\n  'lime-300': '#dce775',\n  'lime-400': '#d4e157',\n  'lime-500': '#cddc39',\n  'lime-600': '#c0ca33',\n  'lime-700': '#afb42b',\n  'lime-800': '#9e9d24',\n  'lime-900': '#827717',\n  'lime-a100': '#f4ff81',\n  'lime-a200': '#eeff41',\n  'lime-a400': '#c6ff00',\n  'lime-a700': '#aeea00',\n  'yellow-50': '#fffde7',\n  'yellow-100': '#fff9c4',\n  'yellow-200': '#fff59d',\n  'yellow-300': '#fff176',\n  'yellow-400': '#ffee58',\n  'yellow-500': '#ffeb3b',\n  'yellow-600': '#fdd835',\n  'yellow-700': '#fbc02d',\n  'yellow-800': '#f9a825',\n  'yellow-900': '#f57f17',\n  'yellow-a100': '#ffff8d',\n  'yellow-a200': '#ffff00',\n  'yellow-a400': '#ffea00',\n  'yellow-a700': '#ffd600',\n  'amber-50': '#fff8e1',\n  'amber-100': '#ffecb3',\n  'amber-200': '#ffe082',\n  'amber-300': '#ffd54f',\n  'amber-400': '#ffca28',\n  'amber-500': '#ffc107',\n  'amber-600': '#ffb300',\n  'amber-700': '#ffa000',\n  'amber-800': '#ff8f00',\n  'amber-900': '#ff6f00',\n  'amber-a100': '#ffe57f',\n  'amber-a200': '#ffd740',\n  'amber-a400': '#ffc400',\n  'amber-a700': '#ffab00',\n  'orange-50': '#fff3e0',\n  'orange-100': '#ffe0b2',\n  'orange-200': '#ffcc80',\n  'orange-300': '#ffb74d',\n  'orange-400': '#ffa726',\n  'orange-500': '#ff9800',\n  'orange-600': '#fb8c00',\n  'orange-700': '#f57c00',\n  'orange-800': '#ef6c00',\n  'orange-900': '#e65100',\n  'orange-a100': '#ffd180',\n  'orange-a200': '#ffab40',\n  'orange-a400': '#ff9100',\n  'orange-a700': '#ff6d00',\n  'deep-orange-50': '#fbe9e7',\n  'deep-orange-100': '#ffccbc',\n  'deep-orange-200': '#ffab91',\n  'deep-orange-300': '#ff8a65',\n  'deep-orange-400': '#ff7043',\n  'deep-orange-500': '#ff5722',\n  'deep-orange-600': '#f4511e',\n  'deep-orange-700': '#e64a19',\n  'deep-orange-800': '#d84315',\n  'deep-orange-900': '#bf360c',\n  'deep-orange-a100': '#ff9e80',\n  'deep-orange-a200': '#ff6e40',\n  'deep-orange-a400': '#ff3d00',\n  'deep-orange-a700': '#dd2c00',\n  'brown-50': '#efebe9',\n  'brown-100': '#d7ccc8',\n  'brown-200': '#bcaaa4',\n  'brown-300': '#a1887f',\n  'brown-400': '#8d6e63',\n  'brown-500': '#795548',\n  'brown-600': '#6d4c41',\n  'brown-700': '#5d4037',\n  'brown-800': '#4e342e',\n  'brown-900': '#3e2723',\n  'brown-a100': '#d7ccc8',\n  'brown-a200': '#bcaaa4',\n  'brown-a400': '#8d6e63',\n  'brown-a700': '#5d4037',\n  'grey-50': '#fafafa',\n  'grey-100': '#f5f5f5',\n  'grey-200': '#eeeeee',\n  'grey-300': '#e0e0e0',\n  'grey-400': '#bdbdbd',\n  'grey-500': '#9e9e9e',\n  'grey-600': '#757575',\n  'grey-700': '#616161',\n  'grey-800': '#424242',\n  'grey-900': '#212121',\n  'grey-1000': '#000000',\n  'grey-a100': '#ffffff',\n  'grey-a200': '#eeeeee',\n  'grey-a400': '#bdbdbd',\n  'grey-a700': '#616161',\n  'blue-grey-50': '#eceff1',\n  'blue-grey-100': '#cfd8dc',\n  'blue-grey-200': '#b0bec5',\n  'blue-grey-300': '#90a4ae',\n  'blue-grey-400': '#78909c',\n  'blue-grey-500': '#607d8b',\n  'blue-grey-600': '#546e7a',\n  'blue-grey-700': '#455a64',\n  'blue-grey-800': '#37474f',\n  'blue-grey-900': '#263238',\n  'blue-grey-a100': '#cfd8dc',\n  'blue-grey-a200': '#b0bec5',\n  'blue-grey-a400': '#78909c',\n  'blue-grey-a700': '#455a64'\n}\n\nexport function colors(\n  state = {\n    default: materialDesignColors['grey-900'],\n    primary: materialDesignColors['indigo-700'],\n    secondary: materialDesignColors['purple-700'],\n    info: materialDesignColors['light-blue-700'],\n    success: materialDesignColors['green-700'],\n    warning: materialDesignColors['amber-700'],\n    danger: materialDesignColors['red-700']\n  },\n  action\n) {\n  switch (action.type) {\n    case 'SET_COLOR':\n      return Object.assign({}, state, {\n        ...action.color\n      })\n    default:\n      return state\n  }\n}\n\nexport function backgroundColors(\n  state = {\n    light: '#ffffff'\n  },\n  action\n) {\n  switch (action.type) {\n    case 'SET_BACKGROUND_COLOR':\n      return Object.assign({}, state, {\n        ...action.color\n      })\n    default:\n      return state\n  }\n}\n","import { logoutUser } from './../../../actions/authentication';\nimport Cookies from 'js-cookie';\n\nconst STORAGE_KEY_SESSION = 'samsa-user-session';\nconst STORAGE_KEY_USER_DATA = 'samsa-user-data';\nconst STORAGE_KEY_USER_ROLE = 'samsa-user-role';\nconst STORAGE_KEY_USER_ID = 'samsa-user-id';\n\n/* This should handle the user session (get/store token in cookies), notify on token expiration, etc */\nconst UserSession = {\n    /** Returns the auth token if exists and it's still valid or NULL */\n    getToken() {\n        const session = JSON.parse(Cookies.get(STORAGE_KEY_SESSION) || null);\n        if (session && session.access_token) {\n            // Check if jwt expired or temporary cookie was set more than 12 hours ago\n            const jwtExpired = new Date().getTime() > session.expires_on;\n            const twelveHours = 43200000;\n            const cookieExpired = !session.keepMeLoggedIn && (new Date() - new Date(session.setAt)) > twelveHours;\n            if (jwtExpired || cookieExpired) {\n                // Clear the token to automatically log out the user\n                // The timeout is for avoiding \"reducers may not dispatch actions\" error\n                setTimeout(() => {\n                    this.clearToken();\n                    logoutUser();\n                }, 10);\n\n                return null;\n            }\n\n            return session.access_token;\n        }\n\n        return null;\n    },\n\n    /** Sets an auth token to storage */\n    setTokenAndData(user, keepMeLoggedIn) {\n        if (user.token) {\n            const exp = Math.round((new Date()).getTime()) + (24 * 60 * 60 * 1000);\n            const session = {\n                access_token: user.token,\n                expires_on: exp,\n                keepMeLoggedIn: keepMeLoggedIn,\n                setAt: new Date()\n            };\n            const options = {};\n            if (keepMeLoggedIn) {\n                options.expires = 365;\n            }\n            Cookies.set(STORAGE_KEY_SESSION, JSON.stringify(session), options);\n            this.setUserData(user, options);\n\n        }\n    },\n    setUserData(user, options) {\n        // Set the cookie\n        const userData = {\n            token: user.token,\n            email: user.email,\n            role: user.role,\n            name: user.name,\n            last_name: user.last_name,\n            organization: user.organization,\n            organizationId: user.organizationId,\n            workspaceId: user.workspaceId\n\n        };\n        Cookies.set(STORAGE_KEY_USER_ROLE, user.role, options);\n        Cookies.set(STORAGE_KEY_USER_ID, user.token, options);\n        Cookies.set(STORAGE_KEY_USER_DATA, JSON.stringify(userData), options);\n\n    },\n\n    /** Clears the auth token from storage + removes also user data */\n    clearToken() {\n        Cookies.remove(STORAGE_KEY_SESSION);\n        this.clearUserData();\n    },\n\n    /** On logout, clear user data, clear the cookie, and call logout action */\n    async logout() {\n        // remove synchronously the push tokens when logout\n        UserSession.clearToken();\n        UserSession.clearUserData();\n        logoutUser();\n    },\n\n    /** Retrieve user data from the cookie */\n    getUserData() {\n        return JSON.parse(Cookies.get(STORAGE_KEY_USER_DATA) || null);\n    },\n\n\n    /** Clear user data from the cookie */\n    clearUserData() {\n        Cookies.remove(STORAGE_KEY_USER_ROLE);\n        Cookies.remove(STORAGE_KEY_USER_ID);\n        Cookies.remove(STORAGE_KEY_USER_DATA);\n    }\n};\n\nexport default UserSession;\n","import UserSession from './../components/utils/user-session';\nimport store from './../configureStore';\nimport { setRefreshRequired } from './authentication';\n\nconst SERVER_URI = process.env.REACT_APP_SERVER_URI; // If we want to connect local env. to dev for example\n//const SERVER_URI = 'https://production.samsasoftware.com'; // If we want to connect local env. to dev for example\n\nclass Actions {\n\n    /**\n     * Make a GET request\n     *\n     * @param {String} url API url to make request to\n     * @param {String} [query] Query string\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static get({ url, query, requestAction, responseAction, callback }) {\n        const request = { method: 'GET', url, query };\n        return this.makeRequest({ request, requestAction, responseAction, callback });\n    }\n\n    /**\n     * Make a PUT request\n     *\n     * @param {String} url API url to make request to\n     * @param {Object} data The data to be updated\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static put({ url, data, requestAction, responseAction, callback }) {\n        const request = {\n            method: 'PUT',\n            url,\n            body: JSON.stringify(data),\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json'\n            }\n        };\n        return this.makeRequest({ request, requestAction, responseAction, callback });\n    }\n\n    /**\n     * Make a POST JSON request\n     *\n     * @param {String} url API url to make request to\n     * @param {Object} data The data to be inserted\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static post({ url, data, requestAction, responseAction, callback }) {\n        const request = {\n            method: 'POST',\n            url,\n            body: JSON.stringify(data),\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json'\n            }\n        };\n        return this.makeRequest({ request, requestAction, responseAction, callback });\n    }\n\n    /**\n     * Make a POST form data request\n     *\n     * @param {String} url API url to make request to\n     * @param {Object} data The data to be inserted\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static postForm({ url, data, requestAction, responseAction, callback, parentId, refresh, actionResponse }) {\n        const request = { method: 'POST', url, body: data, parentId, refresh, actionResponse };\n        return this.makeRequest({ request, requestAction, responseAction, callback });\n    }\n\n    /**\n     * Make a DELETE request\n     *\n     * @param {String} url API url to make request to\n     * @param {String} [query] Query string\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static delete({ url, query, requestAction, responseAction, callback }) {\n        const request = { method: 'DELETE', url, query };\n        return this.makeRequest({ request, requestAction, responseAction, callback });\n    }\n\n    /**\n     * Make a generic request\n     *\n     * @param {Object} request Request to be made. Must be of the form: {method, url, query [optional]}\n     * @param {Object} [requestAction] Action to be triggered before the request is made\n     * @param {Object} [responseAction] Action to be triggered when the server responds\n     * @param {Function} [callback] Function to be run after the server responds\n     */\n    static makeRequest({ request, requestAction, responseAction, callback }) {\n        const headers = request.headers || {};\n\n        // If user is authenticated, send the auth. token on each request\n        const token = UserSession.getToken();\n        if (token) {\n            headers.Authorization = btoa(token);\n        }\n\n        // Dispatch the pre-request action\n        store && requestAction && store.dispatch({ type: requestAction, request, parentId: request.parentId, refresh: request.refresh, actionResponse: request.actionResponse });\n\n        // Don't set the body if it's a GET request as it will crash on Microsoft Edge\n        //headers['Access-Control-Allow-Origin'] = '*';\n        //headers['Access-Control-Allow-Headers'] = 'POST, GET, PUT, DELETE, OPTIONS, HEAD, authorization';\n        //headers['Access-Control-Allow-Credentials'] = 'true';\n        //headers['Access-Control-Allow-Methods'] = 'GET,PUT,POST,DELETE,PATCH,OPTIONS';\n        //headers['Content-Type'] = 'application/x-www-form-urlencoded';\n        //headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Origin, access-control-allow-origin';\n\n        const params = {\n            headers,\n            method: request.method || 'GET'\n        };\n        if (params.method !== 'GET') {\n            const body = request.body;\n            if (body) {\n                const formData = new FormData();\n                Object.keys(body).forEach(key => {\n                    formData.append(key, body[key]);\n\n                });\n                params.body = formData || null;\n            }\n        }\n\n        params.mode = 'cors';\n\n        // Do the API Request\n        var startTime = new Date();\n        return fetch(SERVER_URI + request.url, params)\n            .then(res => {\n                return Promise.all([\n                    res.status,\n                    res.json()\n                ]);\n            })\n            .then(results => {\n                return { status: results[0], data: results[1] };\n            })\n            .then(response => {\n                // Not authorized\n                const timeTaken= (new Date())-startTime;\n                if (response.status === 401 && window.location.pathname !== '/login') {\n                    const userData = UserSession.getUserData();\n                    if (userData.permissionsWereUpdated) {\n                        setRefreshRequired();\n                        UserSession.resetPermissionFlag();\n                    } else {\n                        window.location = '/login';\n                    }\n\n                    // Call the callback if provided\n                    callback && callback(response.message, response);\n\n                    // Dispatch the post-request action w/ data from the API\n                    store && responseAction && store.dispatch({ type: responseAction, response, parentId: request.parentId, refresh: request.refresh, actionResponse:request.actionResponse, time: timeTaken });\n                } else {\n\n                    // Dispatch the post-request action w/ data from the API\n                    store && responseAction && store.dispatch({ type: responseAction, response: response.data, parentId: request.parentId, refresh: request.refresh, actionResponse:request.actionResponse, time: timeTaken });\n\n                    // Call the callback if provided\n                    callback && callback(null, response);\n                }\n\n                return response;\n            })\n            .catch(err => {\n                // Dispatch the post-request action w/ error\n                store && responseAction && store.dispatch({ type: responseAction, err });\n\n                // Call the callback if provided\n                callback && callback(err, null);\n            });\n    }\n}\n\nexport default Actions;\n","import Api from '../actions/api';\nimport store from '../configureStore';\n\nexport const ACTIONS = {\n    LOGIN_USER: 'LOGIN_USER',\n    LOGOUT_USER: 'LOGOUT_USER',\n    RESET_PASSWORD: 'RESET_PASSWORD',\n    CHANGE_PASSWORD: 'CHANGE_PASSWORD',\n    GET_USER_TOKEN: 'GET_USER_TOKEN',\n    SET_REFRESH_REQUIRED: 'SET_REFRESH_REQUIRED'\n};\n\nexport const loginUser = (email, password, callback) => {\n    Api.postForm({\n        url: '/api/mobile/login',\n        data: {\n            UserName: email,\n            Password: password,\n            email: email,\n            api: true\n        },\n        responseAction: ACTIONS.LOGIN_USER,\n        callback: callback\n    });\n};\n\nexport const logoutUser = () => {\n    store.dispatch({ type: ACTIONS.LOGOUT_USER });\n};\n\nexport const resetPassword = (email, callback) => {\n    Api.post({\n        url: '/api/users/reset-password',\n        data: {\n            email: email\n        },\n        responseAction: ACTIONS.RESET_PASSWORD,\n        callback: callback\n    });\n};\n\nexport const changePassword = (password, token, callback) => {\n    Api.post({\n        url: '/api/users/change-password',\n        data: {\n            password: password,\n            resetPasswordToken: token\n        },\n        responseAction: ACTIONS.CHANGE_PASSWORD,\n        callback: callback\n    });\n};\n\nexport const getUserDetailsAction = token => {\n    Api.get({\n        url: `/api/user/token/${token}`,\n        responseAction: ACTIONS.GET_USER_TOKEN\n    });\n};\n\nexport const setRefreshRequired = () => {\n    store.dispatch({ type: ACTIONS.SET_REFRESH_REQUIRED });\n};\n","import { ACTIONS } from './../actions/authentication';\n\nconst initialState = {\n    errors: {},\n    refreshRequired: false\n};\n\nfunction authenticationReducer(state = initialState, action) {\n    switch (action.type) {\n        case ACTIONS.LOGIN_USER:\n            if (action.response && action.response.code === 403) {\n                return { ...state, errors: action.response.mgs || {} };\n            }\n            return state;\n        case ACTIONS.RESET_PASSWORD:\n            return { ...state, errors: action.response.errors || {} };\n        case ACTIONS.CHANGE_PASSWORD:\n            return { ...state, errors: action.response.errors || {} };\n        case ACTIONS.LOGOUT_USER:\n            window.location.href = '/';\n            return state;\n        case ACTIONS.GET_USER_TOKEN:\n            return { ...state, userToken: action.response };\n        case ACTIONS.SET_REFRESH_REQUIRED:\n            return { ...state, refreshRequired: true };\n        default:\n            return state;\n    }\n}\n\nexport default authenticationReducer;\n","import Api from '../actions/api';\nimport store from './../configureStore';\n\nexport const ACTIONS = {\n    GET_MENU: 'GET_MENU',\n    GET_COMPONENTS: 'GET_COMPONENTS',\n    GET_PARAMETERS: 'GET_PARAMETERS',\n    GET_CONTEXT_MENU: 'GET_CONTEXT_MENU',\n    GET_OBJECT: 'GET_OBJECT',\n    REQUEST_GET_OBJECT: 'REQUEST_GET_OBJECT',\n    GET_SELECTED_ITEM: 'GET_SELECTED_ITEM',\n    GET_VIEW: 'GET_VIEW',\n    GET_VIEW_CONTEXT_MENU: 'GET_VIEW_CONTEXT_MENU',\n    SELECT_VIEW: 'SELECT_VIEW',\n    CALL_METHOD: 'CALL_METHOD',\n    GET_EDIT_FORM: 'GET_EDIT_FORM',\n    GET_FORM_VALUES: 'GET_FORM_VALUES',\n    GET_LIST_ITEMS: 'GET_LIST_ITEMS',\n    GET_SEARCH_ITEMS: 'GET_SEARCH_ITEMS',\n    REMOVE_FORM_VALUES: 'REMOVE_FORM_VALUES',\n    GET_GRAPH: 'GET_GRAPH',\n    SAVE_STATE: 'SAVE_STATE',\n    GET_STATE: 'GET_STATE',\n    GET_LIST_ACTION: 'GET_LIST_ACTION',\n    TOGGLE_DIALOG: 'TOGGLE_DIALOG',\n    DELETE_METHOD: 'DELETE_METHOD',\n    EXPORT_COMPONENT: 'EXPORT_COMPONENT',\n    GET_DRAW: 'GET_DRAW',\n    GET_ITEM_DRAW: 'GET_ITEM_DRAW',\n    REQUEST_GET_DRAW: 'REQUEST_GET_DRAW',\n};\n\nexport const getMenuAction = (workspaceId, role) => {\n    if (role === 'admin') {\n        role = 'user'\n    }\n    const urlLink = 'http://dev.samsasoftware.com/application/view';\n    Api.postForm({\n        url: `/api/mobile/getMethodResultList?objectType=Workspace&methodName=getMenu&id=${workspaceId}&criteria=platform-react-scope-${role}&urlLink=${urlLink}`,\n        data: null,\n        responseAction: ACTIONS.GET_MENU\n    });\n};\nexport const getComponentsAction = (viewId) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultListReference?objectType=View&methodName=getComponent&id=${viewId}`,\n        data: null,\n        responseAction: ACTIONS.GET_COMPONENTS,\n    });\n};\nexport const getParametersAction = (componentId) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultListReference?objectType=Component&methodName=getParameter&id=${componentId}`,\n        data: null,\n        responseAction: ACTIONS.GET_PARAMETERS,\n        parentId: componentId,\n    });\n};\n\nexport const getViewContextMenuAction = (viewId) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultListReference?objectType=View&methodName=getContextmenu&id=${viewId}`,\n        data: null,\n        responseAction: ACTIONS.GET_VIEW_CONTEXT_MENU,\n    });\n};\n\nexport const getContextMenuAction = (viewId, gridName, componentId) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultListReference?objectType=View&methodName=getComponent[name-${gridName}].getContextmenu&id=${viewId}`,\n        data: null,\n        responseAction: ACTIONS.GET_CONTEXT_MENU,\n        parentId: componentId,\n    });\n};\n\nexport const getObjectAction = (methodName, parentId, viewId, componentId, componentName, patentObjectType, data = null, refresh) => {\n    return function() {\n        return Api.postForm({\n            url: `/api/mobile/getMethodResult?objectType=${patentObjectType}&methodName=${methodName}&id=${parentId}&viewId=${viewId}&gridId=${componentName}`,\n            data,\n            requestAction: ACTIONS.REQUEST_GET_OBJECT,\n            responseAction: ACTIONS.GET_OBJECT,\n            parentId: componentId,\n            refresh\n        });\n    }\n};\n\nexport const getDrawAction = (method, viewId, componentId) => {\n    return function() {\n        return Api.postForm({\n            url: `/api/mobile/getMethodResultListReference?objectType=Workspace&methodName=${method}&id=${viewId}`,\n            data: null,\n            responseAction: ACTIONS.GET_DRAW,\n            parentId: componentId,\n        });\n    }\n};\n\nexport const exportComponentAction = (method, viewId, gridId, parentObject, parentId) => {\n    Api.postForm({\n        url: `/api/mobile/export?object=${method}&viewId=${viewId}&gridId=${gridId}&parentObject=${parentObject}&parentId=${parentId}&searchData=[]&searchField=undefined&sortData=[]`,\n        responseAction: ACTIONS.EXPORT_COMPONENT,\n    });\n};\n\nexport const getSelectedItemAction = (id, component) => {\n    store.dispatch({ type: ACTIONS.GET_SELECTED_ITEM, response: {\n        id, component\n    }});\n};\n\nexport const getItemDrawAction = (draw, component_id) => {\n    store.dispatch({ type: ACTIONS.GET_ITEM_DRAW, response: {\n        draw, component_id\n    }});\n};\n\nexport const callMethodAction = (data, actionResponse, componentId) => {\n    Api.postForm({\n        url: `/api/mobile/execute`,\n        data,\n        responseAction: ACTIONS.CALL_METHOD,\n        actionResponse: String(actionResponse),\n        parentId: componentId,\n    });\n};\n\nexport const callDeleteMethodAction = (data, actionResponse, parentId) => {\n    Api.postForm({\n        url: `/api/mobile/deleteobjects`,\n        data,\n        responseAction: ACTIONS.DELETE_METHOD,\n        actionResponse: actionResponse,\n        parentId\n    });\n};\n\nexport const saveState = (data) => {\n    Api.postForm({\n        url: `/api/mobile/savestate`,\n        data,\n        responseAction: ACTIONS.SAVE_STATE\n    });\n};\n\nexport const getStateAction = (data, componentId) => {\n    return function() {\n        return Api.postForm({\n            url: `/api/mobile/loadstate`,\n            data,\n            parentId: componentId,\n            responseAction: ACTIONS.GET_STATE\n        });\n    }\n};\n\nexport const getFormAction = (viewId, objectId, objectType, type, formAction, workspaceId, componentId = null, callback) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultList?objectType=View&methodName=getField&id=${viewId}&objectId=${objectId}&criteria=object-${objectType}&type=${type}&action=${formAction}&workspaceId=${workspaceId}`,\n        responseAction: ACTIONS.GET_EDIT_FORM,\n        parentId: componentId,\n        callback: callback\n    });\n};\n\nexport const getFormValuesAction = (viewId, workspaceId, objectId, objectType, formAction = 'edit', componentId = null) => {\n    Api.postForm({\n        url: `/api/mobile/getform?objectType=${objectType}&viewId=${viewId}&workspaceId=${workspaceId}&objectId=${objectId}&type=${objectType}&actionId=${formAction}`,\n        responseAction: ACTIONS.GET_FORM_VALUES,\n        parentId: componentId,\n        id: objectId,\n    });\n};\n\nexport const getGraphData = (objectType, method, objectId, viewId, componentId) => {\n    Api.get({\n        url: `/api/mobile/getMethodResultList?objectType=${objectType}&methodName=${method}&id=${objectId}&viewId=${viewId}&gridId=${componentId}`,\n        //url: `/api/mobile/getMethodResultList?objectType=Kpi&methodName=cgtKPIDataValues&id=5e3b2844a48b2e388565e874&viewId=5e3b2844a48b2e388565e863&gridId=kpievents`,\n        data: null,\n        responseAction: ACTIONS.GET_GRAPH\n    });\n};\n\nexport const getListItems = (url, fieldId) => {\n    Api.postForm({\n        url: `/api/mobile/${url}`,\n        responseAction: ACTIONS.GET_LIST_ITEMS,\n        parentId: fieldId,\n    });\n};\n\nexport const getSearchItems = (url, fieldId) => {\n    Api.postForm({\n        url: `/api/mobile/${url}`,\n        responseAction: ACTIONS.GET_SEARCH_ITEMS,\n        parentId: fieldId,\n    });\n}\n\nexport const removeFormValuesAction = (componentId) => {\n    store.dispatch({ type: ACTIONS.REMOVE_FORM_VALUES, parentId: componentId, });\n};\n\nexport const getViewAction = (view) => {\n    store.dispatch({ type: ACTIONS.GET_VIEW, response: {\n        id: view.recid,\n        name: view.name,\n        title: view.title,\n        schema: view.schema,\n        layout: JSON.parse(view.layout),\n    }});\n};\n\nexport const showView = (viewId) => {\n    Api.postForm({\n        url: `/api/mobile/getMethodResultList?objectType=Menu&methodName=getView&id=${viewId}`,\n        data: null,\n        responseAction: ACTIONS.SELECT_VIEW\n    });\n};\n\nexport const toggleDialogAction = () => {\n    store.dispatch({ type: ACTIONS.TOGGLE_DIALOG, });\n}\n\n\nlet nextTodoId = 0\nexport const selectView = text => ({\n\t  type: 'SELECT_VIEW',\n\t  id: nextTodoId++,\n\t  text\n\t})","import { ACTIONS } from './../actions/dashboard';\nimport { combineReducers } from 'redux'\n\nconst SERVER_URI = process.env.REACT_APP_SERVER_URI\n\nfunction readSchema(schemaObject, referencelink, component, state) {\n    JSON.parse(schemaObject).map((schemaItem) => {\n        if(schemaItem.name === component.name) {\n            const childrenArray = [];\n            schemaItem.children.map((child) => {\n                const currentComponent =  state.components.find((c) => c.name === child.name);\n                const childItem = {\n                    name: child.name,\n                    method: referencelink,\n                    componentType: currentComponent.type,\n                    recid: currentComponent.recid,\n                    objectType: currentComponent.focus,\n                    parentObjectType: component.focus\n                }\n                const parentItem = {\n                    name: component.name,\n                    type: component.focus,\n                    id: component.recid,\n                    referencelink\n                }\n                currentComponent.parentValues = parentItem;\n                childrenArray.push(childItem);\n                return null;\n            });\n            component.children = childrenArray;\n        }\n        return null;\n    })\n}\n\nconst initialState = {\n    errors: {},\n    menu: [],\n    showDialog: false,\n    dialogContent: ''\n};\n\nfunction mainActivity(state = initialState, action) {\n    switch (action.type) {\n        case ACTIONS.TOGGLE_DIALOG: {\n\n            return { ...state, showDialog: !state.showDialog};\n\n        }\n        case ACTIONS.GET_VIEW: {\n            state.components = null;\n            return { ...state, view: action.response || {}};\n        }\n        case ACTIONS.GET_MENU:\n            return { ...state, menu: action.response.items || {} };\n        case ACTIONS.GET_COMPONENTS: {\n            return { ...state, components: action.response.items || {} };\n        }\n        case ACTIONS.GET_PARAMETERS: {\n            const component =  state.components && state.components.find((c) => c.recid === action.parentId);\n            if(component) {\n                component.parameterResponse = action.response.items;\n                // get the schema parameter and assign the children to the parent.\n                let referencelink = '';\n                action.response.items.map((item) => {\n                    if(item.name === 'method') {\n                        referencelink = item.referencelink;\n                    }\n                    return null;\n                });\n                component.referencelink = referencelink;\n\n                const schemaObject = state.view.schema;\n                readSchema(schemaObject, referencelink, component, state);\n            }\n\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_CONTEXT_MENU: {\n            state.components && state.components.map((component) => {\n                if(component.recid === action.parentId) {\n                    component.contextMenuResponse = action.response;\n                }\n                return null;\n            })\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_OBJECT: {\n            state.components && state.components.map((component) => {\n                if(component.recid === action.parentId) {\n                    if(component.objectResponse && !action.refresh) {\n                        component.objectResponse.records = component.objectResponse.records.concat(action.response.records);\n                    } else {\n                        component.objectResponse = action.response;\n                    }\n                }\n                component.responseTime = action.time ? action.time/1000 : 0;\n                return null;\n            })\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_DRAW: {\n            state.components && state.components.map((component) => {\n                if(component.recid === action.parentId) {\n                    component.drawResponse = action.response.items;\n                }\n                component.responseTime = action.time ? action.time/1000 : 0;\n                return null;\n            })\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_ITEM_DRAW: {\n            state.components && state.components.map((component) => {\n                if(component.recid === action.response.component_id) {\n                    component.drawResponse = action.response.draw;\n                }\n                component.responseTime = action.time ? action.time/1000 : 0;\n                return null;\n            })\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_SELECTED_ITEM: {\n            state.components.map((component) => {\n                if(component.recid === action.response.component.recid) {\n                    component.selectedItems = action.response.id;\n                    if(component.children) {\n                        component.children.map((child) => {\n                            const childCompnenet = state.components.find((c) => c.name === child.name);\n                            childCompnenet.parentSelectedItems = component.selectedItems;\n                            return null;\n                        })\n                    }\n                }\n                return null;\n            })\n            return { ...state || {} };\n        }\n        case ACTIONS.GET_EDIT_FORM: {\n            // if the form is a component add the fields to it, if not display a new form\n            if(action.parentId !== null) {\n                state.components.map((component) => {\n                    if(component.recid === action.parentId) {\n                        component.formFieldResponse = action.response.items;\n                    }\n                    return null;\n                })\n                return { ...state || {} };\n            } else {\n                return { ...state, form: action.response.items || {} };\n            }\n        }\n        case ACTIONS.GET_FORM_VALUES: {\n            // if the form is a component add the values to it, if not display a new form with these values\n            if(action.parentId !== null) {\n                state.components.map((component) => {\n                    if(component.recid === action.parentId) {\n                        component.formFieldValuesResponse = action.response;\n                    }\n                    return null;\n                })\n            }\n            return { ...state, formValues: action.response || {} };\n        }\n\n        case ACTIONS.GET_LIST_ITEMS: {\n            if(action.parentId !== null) {\n                state.form.map((field) => {\n                    if(field.recid === action.parentId) {\n                        field.optionValues = (action.response && action.response.items) ? action.response.items : [];\n                    }\n                    return null;\n                })\n            }\n            return { ...state, listItems: (action.response && action.response.items) ? action.response.items : [] };\n        }\n\n        case ACTIONS.GET_GRAPH: {\n            return { ...state, graphItems: (action.response && action.response.items) ? action.response.items : [] };\n        }\n        case ACTIONS.DELETE_METHOD: {\n            state.components.map((component) => {\n                if(component.recid === action.parentId) {\n                    component.selectedItems = [];\n                }\n                return null;\n            })\n            if(action.response && action.actionResponse) {\n                const responseArray = action.actionResponse.split(';');\n                responseArray.map((item) => {\n                    if(item !== '') {\n                        const param = item.substring(item.indexOf(\"(\")+3, item.length - 3);\n                        if(item.indexOf(\"showMessage\") > -1) {\n                            state.showDialog = true\n                            state.dialogContent = action.response.items[param]\n                        }\n                        if(item.indexOf(\"openDocument\") > -1) {\n                            openDocument(`${SERVER_URI}${action.response.items[param]}`);\n                        }\n                        if(item.indexOf(\"printDocument\") > -1) {\n                            printDocument(`${SERVER_URI}${action.response.items[param]}`);\n                        }\n                    }\n                    return item;\n                });\n            }\n            return { ...state || {} };\n        }\n        case ACTIONS.CALL_METHOD: {\n            if(action.response && action.actionResponse) {\n                const responseArray = action.actionResponse.split(';');\n                responseArray.map((item) => {\n                    if(item !== '') {\n                        const param = item.substring(item.indexOf(\"(\")+3, item.length - 3);\n                        if(item.indexOf(\"showMessage\") > -1) {\n                            state.showDialog = true\n                            state.dialogContent = action.response.items[param]\n                            state.dialogParent = action.parentId\n                        }\n                        if(item.indexOf(\"openDocument\") > -1) {\n                            openDocument(`${action.response.items[param]}`);\n                        }\n                        if(item.indexOf(\"printDocument\") > -1) {\n                            printDocument(`${action.response.items[param]}`);\n                        }\n                    }\n                    return item;\n                });\n            }\n            return { ...state || {} };\n        }\n\n        case ACTIONS.EXPORT_COMPONENT: {\n            return { ...state || {} };\n        }\n\n        case ACTIONS.SAVE_STATE: {\n            return { ...state || {} };\n        }\n\n        case ACTIONS.GET_STATE: {\n            if(action.response && action.response.items != null) {\n                const component =  state.components && state.components.find((c) => c.recid === action.parentId);\n                component.initialState = JSON.parse(action.response.items);\n            }\n            return { ...state || {} };\n        }\n\n        case ACTIONS.GET_SEARCH_ITEMS: {\n            if(action.parentId !== null) {\n                state.form.map((field) => {\n                    if(field.recid === action.parentId) {\n                        field.searchValues = (action.response && action.response.items) ? action.response.items : [];\n                    }\n                    return null;\n                })\n            }\n            return { ...state || {} };\n        }\n\n        case ACTIONS.REMOVE_FORM_VALUES: {\n            state.components.map((component) => {\n                component.formFieldValuesResponse = {};\n                return null;\n            })\n            return { ...state || {} };\n        }\n\n        case ACTIONS.GET_VIEW_CONTEXT_MENU: {\n            if(action.response.items) {\n                state.view.contextMenu = action.response.items;\n            } else {\n                state.view.contextMenu = [];\n            }\n            return { ...state || {} };\n        }\n\n        default:\n            return state;\n    }\n}\n\nfunction printDocument(url){\n    window.open(url, \"_blank\").focus();\n}\n\nfunction openDocument(url){\n    window.open(url, \"_blank\").focus();\n}\n\nfunction showView(state = initialState, action) {\n    switch (action.type) {\n        case ACTIONS.SELECT_VIEW:\n            return { ...state, view:  action.response.items || {}};\n        default:\n            return state;\n    }\n}\n\nconst dashboardReducer = combineReducers({\n    showView,\n\tmainActivity,\n});\n\nexport default dashboardReducer;\n","import {combineReducers} from 'redux'\nimport {routerReducer} from 'react-router-redux'\nimport {config} from './config'\nimport {colors, backgroundColors} from './colors'\nimport {reducer as notificationsReducer} from 'reapop'\nimport authentication from './authentication';\nimport dashboard from './dashboard';\n\n\nconst rootReducer = combineReducers({\n  config,\n  colors,\n  backgroundColors,\n  authentication,\n  dashboard,\n  router: routerReducer,\n  notifications: notificationsReducer()\n});\n\nexport default rootReducer\n","import { ACTIONS } from './../actions/config';\n\n\nexport function config(\n  state = {\n    layout: 'default-sidebar-1',\n    //layout: 'top-navigation-1',\n    background: 'light',\n    navbar: 'light',\n    topNavigation: 'light',\n    logo: 'dark',\n    leftSidebar: 'light',\n    leftSidebarIcons: 'dark',\n    rightSidebar: false,\n    collapsed: true\n  },\n  action\n) {\n  switch (action.type) {\n    case ACTIONS.SET_CONFIG:\n      return Object.assign({}, state, {\n        ...action.config\n      });\n    case ACTIONS.SET_LAYOUT: {\n      const config = state;\n      config.layout = action.layout;\n\n      return { ...state, config };\n    }\n    default:\n      return state\n  }\n}\n","import {createStore, applyMiddleware, compose} from 'redux'\nimport thunk from 'redux-thunk'\nimport rootReducer from './reducers/index'\n\nconst middleware = [thunk];\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst store = createStore(rootReducer, composeEnhancers(applyMiddleware(...middleware)));\n\nexport const configureStore = () => {\n  if (module.hot) {\n    // Enable Webpack hot module replacement for reducers\n    module.hot.accept('./reducers', () => {\n      const nextRootReducer = require('./reducers/index');\n      store.replaceReducer(nextRootReducer)\n    })\n  }\n  return store\n};\n\nexport default store;","import createHistory from 'history/createBrowserHistory'\nconst history = createHistory()\nexport default history\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n  _inherits(Link, _React$Component);\n\n  function Link() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Link);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n      if (_this.props.onClick) _this.props.onClick(event);\n\n      if (!event.defaultPrevented && // onClick prevented default\n      event.button === 0 && // ignore everything but left clicks\n      !_this.props.target && // let browser handle \"target=_blank\" etc.\n      !isModifiedEvent(event) // ignore clicks with modifier keys\n      ) {\n          event.preventDefault();\n\n          var history = _this.context.router.history;\n          var _this$props = _this.props,\n              replace = _this$props.replace,\n              to = _this$props.to;\n\n\n          if (replace) {\n            history.replace(to);\n          } else {\n            history.push(to);\n          }\n        }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Link.prototype.render = function render() {\n    var _props = this.props,\n        replace = _props.replace,\n        to = _props.to,\n        innerRef = _props.innerRef,\n        props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n    invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n    invariant(to !== undefined, 'You must specify the \"to\" property');\n\n    var history = this.context.router.history;\n\n    var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n    var href = history.createHref(location);\n    return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n  };\n\n  return Link;\n}(React.Component);\n\nLink.propTypes = {\n  onClick: PropTypes.func,\n  target: PropTypes.string,\n  replace: PropTypes.bool,\n  to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n  innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n  replace: false\n};\nLink.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.shape({\n      push: PropTypes.func.isRequired,\n      replace: PropTypes.func.isRequired,\n      createHref: PropTypes.func.isRequired\n    }).isRequired\n  }).isRequired\n};\n\n\nexport default Link;","import React, {Component} from 'react'\nimport {Link} from 'react-router-dom'\nclass Menu extends Component {\n\n    render() {\n        let items = this.props.items;\n        if (items.items && items.items.length === 0) {\n            return (\n                <li>\n                    <Link\n                        to={items.url}\n                        className=\"btn btn-default btn-flat btn-sidebar btn-sidebar-1\">\n                        <i className=\"material-icons\">{items.icon}</i>\n                        <span className=\"title\">{items.text}</span>\n                        {items.badge && (\n                            <span className={`ml-auto ${items.badge.className}`}>\n                                {items.badge.title}\n                            </span>\n                        )}\n                    </Link>\n                </li>\n            )\n        } else {\n            return (\n                <li>\n                    <Link\n                        to={'/view/'+items.recid}\n                        className=\"btn btn-default btn-flat btn-sidebar btn-sidebar-1\">\n                        <i className={items.icon}></i>\n                        <span className=\"title\">{items.text}</span>\n                    </Link>\n                </li>\n            )\n        }\n    }\n}\n\nexport default Menu;\n","import React, { Component }  from 'react'\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getMenuAction } from '../../actions/dashboard'\nimport UserSession from './../../components/utils/user-session';\nimport Menu from './menu';\nimport '../../css/elements/left-sidebar-1.css'\n\n\n\nclass LeftSidebar extends Component {\n    constructor() {\n        super();\n        this.user = UserSession.getUserData();\n    }\n    componentDidMount() {\n        if (this.user) {\n            getMenuAction(this.user.workspaceId, this.user.role);\n        }\n    }\n\n    render() {\n        if (this.props.config.layout === 'empty-view-1') {\n            return <div />\n        } else {\n            const { menu } = this.props.dashboard.mainActivity;\n            return (\n                <div>\n                    <div className=\"left-sidebar-placeholder\" />\n                    <div className=\"left-sidebar left-sidebar-1\">\n                        <div className=\"wrapper\">\n                            <div className=\"content\">\n                                    <div className=\"section\">\n                                        <div className=\"section-title\">\n                                            Menu\n                                        </div>\n                                        <ul className=\"list-unstyled\">\n                                            {menu && menu.map((items, i) => <Menu key={i} items={items} />)}\n                                        </ul>\n                                    </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n    }\n}\nLeftSidebar.propTypes = {\n    dashboard: PropTypes.object.isRequired,\n    config: PropTypes.object.isRequired\n};\n\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard,\n    config: state.config\n});\n\nexport default connect(mapStateToProps)(LeftSidebar)\n","import React from 'react'\nimport {Link} from 'react-router-dom'\nimport '../../css/elements/logo.css'\n\nconst Logo = () => (\n  <Link\n    to=\"/\"\n    className=\"logo d-flex justify-content-start align-items-center flex-nowrap\">\n    <i className=\"fa fa-strikethrough\" />\n    <span className=\"title\">Samsa</span>\n  </Link>\n)\n\nexport default Logo\n","import Logo from './Logo'\nexport default Logo\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { setConfig } from './../../actions/config'\n\nclass ToggleLayout extends React.Component {\n    constructor() {\n        super();\n        this.toggleLayout = this.toggleLayout.bind(this)\n    }\n    toggleLayout() {\n        let {collapsed} = this.props.config;\n        this.props.setConfig('collapsed', !collapsed)\n        if(collapsed) {\n            this.props.setConfig('layout', 'collapsed-sidebar-1')\n        } else {\n            this.props.setConfig('layout', 'default-sidebar-1')\n        }\n    }\n    render() {\n        return (\n            <ul className=\"nav nav-inline nav-toggle-layout-1\">\n                <li className=\"nav-item\">\n                    <a className=\"nav-link toggle-layout\" onClick={this.toggleLayout}>\n                        <i className=\"fa fa-bars\" />\n                    </a>\n                </li>\n            </ul>\n        )\n    }\n}\nconst mapStateToProps = (state) => {\n    return {\n        config: state.config\n    }\n};\nconst mapDispatchToProps = dispatch => {\n    return {\n        setConfig: (key, value) => dispatch(setConfig(key, value))\n    }\n};\nexport default connect(mapStateToProps, mapDispatchToProps)(ToggleLayout)\n","import React, { Component } from 'react'\nimport '../../css/elements/dropdown-user.css'\nimport UserSession from './../../components/utils/user-session';\nimport PropTypes from 'prop-types';\n\n\nclass DropdownMenu extends Component {\n\n    render() {\n\n        const { items } = this.props;\n        return  (\n            <div className=\"navbar-dropdown dropdown-user\">\n                <div className=\"dropdown-title\">My account</div>\n                {items.map((item, i) => (\n                    <div className=\"dropdown-item\" key={i} onClick={item.logoutClick ? UserSession.logout: null}>\n                        <i className={item.icon} />\n                        <span className=\"title\">{item.name}</span>\n                        <div className=\"separator\" />\n                        {item.badge && (\n                            <span className={item.badgeClass}>{item.badgeText}</span>\n                        )}\n                    </div>\n                ))}\n            </div>\n        )\n    }\n}\n\nDropdownMenu.propTypes = {\n    items: PropTypes.array.isRequired\n};\n\nexport default DropdownMenu;\n","import React, { Component }  from 'react'\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport UserSession from './../../components/utils/user-session';\n\nimport Logo from './../../components/logo'\nimport ToggleLayout from './../../components/toggle-layout'\nimport DropdownMenu from './dropdown-menu'\nimport '../../css/elements/navbar-1.css'\n\n\n\nclass NavigationBar extends Component {\n    constructor() {\n        super();\n        this.user = UserSession.getUserData();\n    }\n    render() {\n        if (this.props.config.layout === 'empty-view-1') {\n            return <div />\n        }\n        // should be moved into dynamic part\n        let menuUserItems = [\n            {\n                icon: 'fa fa-sign-out',\n                iconColor: 'default',\n                name: 'Logout',\n                badge: false,\n                badgeText: false,\n                badgeClass: false,\n                logoutClick: true\n            }\n        ];\n\n        return (\n            <div>\n                <nav className=\"navbar navbar-1 d-flex justify-content-around align-items-center flex-nowrap\">\n                    <Logo />\n                    <ToggleLayout />\n                    <div className=\"separator\" />\n                    <ul className=\"nav nav-inline nav-inline-2\">\n                        <li className=\"nav-item nav-item-dropdown\">\n                            <div className=\"col nav-profile\">\n                                <span className=\"list-group-item-text\">\n                                    {this.user ? this.user.name : ''}\n                                </span>\n                            </div>\n                            <DropdownMenu items={menuUserItems}/>\n                        </li>\n                    </ul>\n                </nav>\n            </div>\n        )\n    }\n}\nNavigationBar.propTypes = {\n    dashboard: PropTypes.object.isRequired,\n    config: PropTypes.object.isRequired\n};\n\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard,\n    config: state.config\n});\n\nexport default connect(mapStateToProps)(NavigationBar)\n","function _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\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = function (_React$Component) {\n  _inherits(Switch, _React$Component);\n\n  function Switch() {\n    _classCallCheck(this, Switch);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Switch.prototype.componentWillMount = function componentWillMount() {\n    invariant(this.context.router, \"You should not use <Switch> outside a <Router>\");\n  };\n\n  Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    warning(!(nextProps.location && !this.props.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n    warning(!(!nextProps.location && this.props.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n  };\n\n  Switch.prototype.render = function render() {\n    var route = this.context.router.route;\n    var children = this.props.children;\n\n    var location = this.props.location || route.location;\n\n    var match = void 0,\n        child = void 0;\n    React.Children.forEach(children, function (element) {\n      if (match == null && React.isValidElement(element)) {\n        var _element$props = element.props,\n            pathProp = _element$props.path,\n            exact = _element$props.exact,\n            strict = _element$props.strict,\n            sensitive = _element$props.sensitive,\n            from = _element$props.from;\n\n        var path = pathProp || from;\n\n        child = element;\n        match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n      }\n    });\n\n    return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n  };\n\n  return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n  router: PropTypes.shape({\n    route: PropTypes.object.isRequired\n  }).isRequired\n};\nSwitch.propTypes = {\n  children: PropTypes.node,\n  location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n  _inherits(Route, _React$Component);\n\n  function Route() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Route);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n      match: _this.computeMatch(_this.props, _this.context.router)\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Route.prototype.getChildContext = function getChildContext() {\n    return {\n      router: _extends({}, this.context.router, {\n        route: {\n          location: this.props.location || this.context.router.route.location,\n          match: this.state.match\n        }\n      })\n    };\n  };\n\n  Route.prototype.computeMatch = function computeMatch(_ref, router) {\n    var computedMatch = _ref.computedMatch,\n        location = _ref.location,\n        path = _ref.path,\n        strict = _ref.strict,\n        exact = _ref.exact,\n        sensitive = _ref.sensitive;\n\n    if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n    invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n    var route = router.route;\n\n    var pathname = (location || route.location).pathname;\n\n    return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n  };\n\n  Route.prototype.componentWillMount = function componentWillMount() {\n    warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n    warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n    warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n  };\n\n  Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n    warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n    warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n    this.setState({\n      match: this.computeMatch(nextProps, nextContext.router)\n    });\n  };\n\n  Route.prototype.render = function render() {\n    var match = this.state.match;\n    var _props = this.props,\n        children = _props.children,\n        component = _props.component,\n        render = _props.render;\n    var _context$router = this.context.router,\n        history = _context$router.history,\n        route = _context$router.route,\n        staticContext = _context$router.staticContext;\n\n    var location = this.props.location || route.location;\n    var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n    if (component) return match ? React.createElement(component, props) : null;\n\n    if (render) return match ? render(props) : null;\n\n    if (typeof children === \"function\") return children(props);\n\n    if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n    return null;\n  };\n\n  return Route;\n}(React.Component);\n\nRoute.propTypes = {\n  computedMatch: PropTypes.object, // private, from <Switch>\n  path: PropTypes.string,\n  exact: PropTypes.bool,\n  strict: PropTypes.bool,\n  sensitive: PropTypes.bool,\n  component: PropTypes.func,\n  render: PropTypes.func,\n  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n  location: PropTypes.object\n};\nRoute.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.object.isRequired,\n    route: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  })\n};\nRoute.childContextTypes = {\n  router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","import React from 'react'\nimport './../../../css/pages/form.css'\n\nconst Form = ({title, description, children}) => (\n    <div className=\"sample-form\">\n        <h3>{title}</h3>\n        <form onSubmit={e => e.preventDefault()}>\n            <div className=\"description\">{description}</div>\n            {children}\n        </form>\n    </div>\n)\n\nexport default Form\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types';\n\nclass InputText extends Component {\n\n\n    onBlur() {\n        this.setState({ focused: false });\n    }\n    render() {\n        const { error, rules, placeholder, type, name, onBlur, disabled, onChange } = this.props;\n        let hasErrors = error ? true : false;\n\n\n        return (\n            <div className={hasErrors ? 'form-group has-danger' : 'form-group'}>\n                <label className=\"form-control-label\">{rules.title}</label>\n\n                <input\n                    autoComplete={name}\n                    placeholder={placeholder || ''}\n                    type={type}\n                    className={\n                hasErrors ? 'form-control form-control-danger' : 'form-control'\n              }\n                    name={name}\n                    onChange={!disabled ? onChange : () => {}}\n                    onBlur={onBlur || this.onBlur.bind(this)}\n                />\n                {error ?\n                    <div className=\"form-text text-danger\">\n                        { error }\n                    </div> : ''}\n            </div>\n        )\n    }\n}\n\nInputText.propTypes = {\n    focus: PropTypes.func,\n    children: PropTypes.node,\n    type: PropTypes.string,\n    name: PropTypes.string,\n    className: PropTypes.string,\n    classNameForLabel: PropTypes.string,\n    wrapperClassName: PropTypes.string,\n    singleBorder: PropTypes.bool,\n    errorIcon: PropTypes.bool,\n    placeholder: PropTypes.string,\n    label: PropTypes.string,\n    value: PropTypes.any,\n    disabled: PropTypes.bool,\n    error: PropTypes.any,\n    onChange: PropTypes.func,\n    errorPosition: PropTypes.string,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func,\n    onKeyUp: PropTypes.func,\n    onKeyDown: PropTypes.func,\n    underlineForGeneralError: PropTypes.bool,\n    readOnly: PropTypes.bool,\n    autocomplete: PropTypes.string,\n    hasCheckMark: PropTypes.bool,\n    rules: PropTypes.any\n};\n\nexport default InputText\n","\n/**\n * To be used with `onChange` handlers for form elements. This\n * will handle setting deep state paths when `event.target.name` includes `.` dot syntax.\n *\n * Usage: `onChange={LinkState.bind(this, [name])}`\n *\n * It also sets a \"lastUpdatedField\" property on the state, s.t. we know in \"componentDidUpdate\" which field was just modified.\n * This information can be used for example to remove error messages for the field that was just edited.\n */\nexport default function (name, event) {\n    if (event === undefined) {\n        [event, name] = [name, event];\n    }\n    const data = {};\n    const targetName = name || event.target.name;\n\n    if (targetName.indexOf('.') === -1) {\n        if (typeof event === 'boolean') {\n            data[targetName] = event;\n        } else {\n            data[targetName] = event.target.value.replace(/^\\s+/, '');\n        }\n        data.lastUpdatedField = targetName;\n        this.setState(data);\n        return;\n    }\n\n    const path = targetName.split('.');\n    data[path[0]] = Object.assign({}, this.state[path[0]]);\n\n    path.reduce((memo, part, idx) => {\n        if (idx === path.length - 1) {\n            memo[part] = event.target.value;\n        } else if (memo[part] === undefined || typeof memo[part] !== 'object') {\n            memo[part] = {};\n        }\n\n        return memo[part];\n    }, data);\n\n    data.lastUpdatedField = targetName;\n    this.setState(data);\n}\n\n","/* eslint no-bitwise: 0 */\nimport difference from 'lodash.difference';\nimport moment from 'moment';\n\n/**\n * Checks if a parameter is empty (empty if null, undefined, empty string, empty object or empty array)\n * @param obj {Object}\n * @returns {boolean} true if obj is empty, false otherwise\n */\nexport function isEmpty(obj) {\n    if (typeof obj === 'number') {\n        return false;\n    }\n    if (!obj) return true;\n    return !!(typeof obj === 'object' && Object.keys(obj).length === 0);\n}\n\n/**\n * lodash.clonedeep has given us some headaches recently and apparently this is even faster performance-wise\n * @param obj {Object}\n */\nexport function cloneDeep(obj) {\n    return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n * Searches up the DOM tree until it finds an element with the class 'targetClass'\n * @param element {DOM} element to start from\n * @param targetClass {String} target class to search for\n * @returns {boolean}\n */\nexport function hasParent(element, targetClass) {\n    let found = false;\n\n    // Check current element first\n    if (element.getAttribute('class') && element.getAttribute('class').indexOf(targetClass) > -1) {\n        return true;\n    }\n\n    // Iterate through the parents until we find the target element we're searching for and set\n    while (!found && element.parentNode) {\n        const parent = element.parentNode;\n        const parentClass = parent.getAttribute && parent.getAttribute('class');\n        if (parentClass && parentClass.indexOf(targetClass) > -1) {\n            // We found the element\n            found = parent;\n        } else {\n            element = parent;\n        }\n    }\n\n    return found;\n}\n\n/**\n * Transform a string or number into a string with N decimals\n * @param number {String|Number} to be transformed\n * @param decimals {Number} decimals to display, defaults to 1\n * @returns {string} Formatted number\n */\nexport const toFixed = (number, decimals = 1) => {\n    const value = typeof number === 'string' ? parseFloat(number) : number;\n    return value.toFixed(decimals);\n};\n\n/**\n * Creates an array with values ranging from min to max\n * @param  {Number} min - the starting point of the interval\n * @param  {Number} max - the ending point of the interval\n * @param  {Number} step - the step, e.g. 1, -1. defaults to -1\n * @return {Array}\n */\nexport const range = (min, max, step = 1) => {\n    if (step === 0) {\n        throw new Error('Cannot create a range with step 0');\n    }\n\n    if ((min < max && step < 0) || (min > max && step > 0)) {\n        throw new Error('Creating a range with the given parameters is not possible');\n    }\n\n    const arrLength = Math.ceil(Math.abs((min - max) / step));\n    const arr = new Array(arrLength);\n\n    if (step > 0) {\n        for (let i = min, x = 0; i < max; i += step, x++) {\n            arr[x] = i;\n        }\n    } else {\n        for (let i = min, x = 0; i > max; i += step, x++) {\n            arr[x] = i;\n        }\n    }\n\n    return arr;\n};\n\n/**\n * Format the phone number like 111-222-3333 and limit it to 10 chars max\n * Handle both the case for char index 3 and 4 (7 and 8) respectively for backspace pressed\n * @param phoneNumber {String} phone number\n * @returns {String} formatted phone number\n */\nexport const setPhoneNumberFormat = phoneNumber => {\n    let newNumber = '';\n    let hasDash = false;\n\n    // Remove country code\n    if (phoneNumber.indexOf('+1') === 0) {\n        phoneNumber = phoneNumber.slice(2);\n    }\n\n    for (let i = 0; i < phoneNumber.length; i++) {\n        if (i === 3) {\n            if (phoneNumber.charAt(i) !== '-') {\n                newNumber += '-';\n            } else {\n                hasDash = true;\n            }\n        }\n\n        if ((!hasDash && i === 6) || (hasDash && i === 7)) {\n            if (phoneNumber.charAt(i) !== '-') {\n                newNumber += '-';\n            }\n        }\n\n        newNumber += phoneNumber.charAt(i);\n    }\n    return newNumber;\n};\n\n/**\n * Handle Phone Number change while typing.\n * @param phoneNumber {String} phone number\n * @returns {String|null} null if phone number should not change, or new phone number otherwise\n */\nexport const onPhoneNumberChange = phoneNumber => {\n    let digitCount = 0;\n\n    for (let i = 0; i < phoneNumber.length; i++) {\n        if (phoneNumber.charAt(i) !== '-' && isNaN(parseInt(phoneNumber.charAt(i), 10))) {\n            return null;\n        }\n        if (!isNaN(parseInt(phoneNumber.charAt(i), 10))) {\n            digitCount++;\n        }\n    }\n\n    if (digitCount === 11) {\n        return null;\n    }\n\n    return phoneNumber;\n};\n\n/**\n * Generic handler for number field. Allows typing only numbers\n * Requires a bind with THIS to a Component, because it manipulates the state\n * @param field {String} field to be checked\n * @param storeAsInteger {boolean} if the value should be stored in the state as integer or string\n * @param ev {Object} on change event\n */\nexport function onNumericFieldChange(field, storeAsInteger = false, ev) {\n    const state = this.state;\n    const errors = { state };\n    let newValue = ev.target.value;\n    const existingValue = state[field];\n\n    const filterInt = value => {\n        if (/^(-|\\+)?([0-9]+|.+|Infinity)$/.test(value)) {\n            return Number(value);\n        }\n        return NaN;\n    };\n\n    if (newValue !== existingValue && !isNaN(filterInt(newValue))) {\n        newValue = storeAsInteger ? parseInt(newValue, 10) : newValue;\n        this.setState({ [field]: newValue, lastUpdatedField: field });\n    } else if (!newValue) {\n        errors[field] = null;\n        this.setState({ [field]: null, lastUpdatedField: field, errors });\n    } else {\n        this.setState({ lastUpdatedField: field });\n    }\n}\n\n/**\n * Generic handler to validate time field change\n * @param field {String} field to be checked\n * @param ev {Object} on change event\n */\nexport function onTimeFieldChanged(field, ev) {\n    const state = this.state;\n    const errors = { state };\n    const newValue = ev.target.value;\n    const existingValue = state[field];\n\n    if (newValue !== existingValue) {\n        this.setState({ [field]: newValue, lastUpdatedField: field });\n    } else if (!newValue) {\n        errors[field] = null;\n        this.setState({ [field]: null, lastUpdatedField: field, errors });\n    } else {\n        this.setState({ lastUpdatedField: field });\n    }\n}\n\n/**\n * Perform a smooth scroll into view of a certain element - full js\n * @param eID {String} ID of the element to scroll into view\n * @param [instantScroll] {boolean} if scroll should be instant or not\n * @param [modifiedScrollPosition] {integer} subtract or add  a certain amount to scroll into desired position\n * @param [scrollTarget] {Node} node to scroll on. If it doesn't exists, it scrolls on window\n */\n\nexport function isScrolledIntoView(el) {\n    const { top, bottom } = el.getBoundingClientRect();\n    return top >= 0 && bottom <= window.innerHeight;\n}\n\nexport const AVATAR_COLORS = ['azure', 'orange', 'green', 'purple', 'yellow', 'red'];\n\n/**\n * Get a pseudo-random color by hashing an ID\n * @param id {String} id to be hashed\n * @param exclude {Array} array of colors to exclude\n */\nexport function assignColor(id, exclude = []) {\n    const colors = difference(AVATAR_COLORS, exclude);\n\n    if (!id) {\n        return colors[0];\n    }\n\n    function hashcode(string) {\n        let hash = 0;\n        let chr;\n        if (string.length === 0) {\n            return hash;\n        }\n        for (let i = 0; i < string.length; i++) {\n            chr = string.charCodeAt(i);\n            hash = ((hash << 5) - hash) + chr;\n            hash |= 0;\n        }\n        return Math.abs(hash);\n    }\n\n    const index = hashcode(id) % colors.length;\n    return colors[index];\n}\n\n/** Get current time of day: morning, afternoon, evening. */\nexport function getTimeOfDay() {\n    const afternoon = 12;\n    const evening = 17;\n    const currentHour = parseFloat(moment().format('HH'));\n\n    if (currentHour >= afternoon && currentHour <= evening) {\n        return 'afternoon';\n    } else if (currentHour >= evening) {\n        return 'evening';\n    }\n    return 'morning';\n}\n\n\n/** Helper function for the scroll method */\n/*function _elmYPosition(eID, modifiedScrollPosition) {\n    const elm = document.getElementById(eID);\n    let y = elm.offsetTop;\n    let node = elm;\n    while (node.offsetParent && node.offsetParent !== document.body) {\n        node = node.offsetParent;\n        y += node.offsetTop;\n    }\n    if (modifiedScrollPosition) {\n        return y + modifiedScrollPosition;\n    }\n    return y;\n}*/\n\nexport function getMaxTextWidthForScreenSize(mobile, tablet, desktop, newTablet) {\n    const documentBodyScrollWidth = document.body.scrollWidth;\n    if (newTablet) {\n        return newTablet;\n    }\n    if (documentBodyScrollWidth < 600) {\n        return mobile;\n    } else if (documentBodyScrollWidth < 1200) {\n        return tablet;\n    }\n\n    return desktop;\n}\n","const ERRORS = {\n    REQUIRED: 'This field is required',\n    EMAIL_FORMAT: 'Invalid Email format',\n    STATE_CHARACTER_FORMAT: 'Invalid State format',\n    CITY_CHARACTER_FORMAT: 'Invalid City format',\n    PHONE_NUMBER_FORMAT: 'Invalid Phone Number format',\n    PASSWORD_FORMAT: 'Passwords must be at least 6 characters in length, and include one letter and one number.',\n    NUMBER_FORMAT: 'Invalid number format',\n    NUMBER_NON_ZERO: 'Must be greater than 0',\n    DATE_FORMAT: 'Invalid date format',\n    AMERICAN_DATE_FORMAT: 'Invalid date format',\n    CARD_DATE_FORMAT: 'Invalid date format',\n    TIME_FORMAT: 'Invalid time format'\n};\n\nexport default ERRORS;\n","import { isEmpty } from './../../../components/utils/util-functions';\nimport isObject from 'lodash.isobject';\nimport isNumber from 'lodash.isnumber';\nimport isString from 'lodash.isstring';\nimport ERRORS from './errors';\n\n/** Generic Validator */\nconst Validator = {\n\n    /**\n     * General password validator. Checks for at least 1 digit, 1 letter and at least 6 characters.\n     * @param password {String} loto be checked\n     * @returns {boolean} true/false\n     */\n    validatePassword(password) {\n        if (!password) return false;\n        const regex = (/^(?=.*\\d)(?=.*[a-zA-Z])[A-Za-z\\d$@$#+!%*?&.]{6,}$/);\n\n        /*\n         (/^\n         (?=.*\\d)                //should contain at least one digit\n         (?=.*[a-zA-Z])          //should contain at least one letter\n         [A-Za-z\\d$@$!%*?&.]{8,} //should contain at least 6 from the mentioned characters (allow special symbols)\n         $/)\n         */\n        return regex.test(password);\n    },\n\n    /**\n     * General Number validator\n     * @param number {String} to be checked\n     * @returns {boolean} true/false\n     */\n    validateNumber(number) {\n        if (!isEmpty(number)) {\n            const regex = /^-?\\d*(\\.\\d+)?$/;\n            const parsed = parseFloat(number);\n            return isNumber(parsed) && !isNaN(parsed) && regex.test(number);\n        }\n    },\n\n    /**\n     * General Number validator\n     * @param phoneNumber {String} to be checked\n     * @returns {boolean} true/false\n     */\n    validatePhoneNumber(phoneNumber) {\n        const regex = /^[0-9]{3}?[-]?[0-9]{3}[-]?[0-9]{4}$/;\n        return regex.test(phoneNumber);\n    },\n\n    /**\n     * Date format validator. Must be in the format MM/DD/YYYY\n     * @param date {String} to be checked\n     * @returns {boolean}\n     */\n    validateAmericanDateFormat(date) {\n        const regex = /^[0-9]{2}?[/]?[0-9]{2}[/]?[0-9]{4}$/;\n        let valid = regex.test(date);\n        if (valid && isNaN(Date.parse(date))) {\n            valid = false;\n        }\n        return valid;\n    },\n\n\n    /**\n     * Validate time format to be HH:MM\n     * @param time {String} time to be checked\n     * @returns {boolean}\n     */\n    validateTimeFormat(time) {\n        const regex = /^([0-9]|0[0-9]|1[0-2]):[0-5][0-9]$/;\n        return regex.test(time);\n    },\n\n    /**\n     * General email validator\n     * @param email {String} to be checked\n     * @returns {boolean} true/false\n     */\n    validateEmail(email) {\n        const regex = /^(([^<>()[\\]\\\\.,;:\\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,}))$/;\n        return regex.test(email);\n    },\n\n    /**\n     * General Character validator\n     * @param value {String} to be checked\n     * @returns {boolean} true/false\n     */\n    validateCharacter(value) {\n        const regex = /^[a-zA-Z- ]+$/;\n        return regex.test(value);\n    },\n\n    /**\n     * Creates an error map based on the properties you want to validate\n     * @param validationMap {Object} map of properties you want to validate\n     * @returns {Object} map of keys that matches your validationMap object\n     */\n    createErrorMap(validationMap) {\n        const errorMap = {};\n        Object.keys(validationMap).forEach(key => {\n            const item = validationMap[key];\n            if (this._isNested(item)) {\n                errorMap[key] = {};\n                Object.keys(item).forEach(childKey => {\n                    errorMap[key][childKey] = null;\n                });\n            } else {\n                errorMap[key] = null;\n            }\n        });\n        return errorMap;\n    },\n\n    /**\n     * Validate the state of a component\n     * @param state {Object} the state\n     * @param validationMap {Object} map of properties to be validated\n     * @returns { {valid, error} } Object with {valid, error}\n     */\n    validateState(state, validationMap) {\n        let isValid = true;\n        const errors = state.errors;\n\n        // Iterate over each key in the state. If it's an object, iterate on its children also\n        Object.keys(state).forEach(key => {\n            const value = state[key];\n            if (key === 'error' || !validationMap[key]) {\n                return true; // Break the loop\n            }\n            if (this._isNested(validationMap[key])) {\n                Object.keys(validationMap[key]).forEach(innerKey => {\n                    const corresponding = value[innerKey];\n                    isValid = Validator._setError(errors[key], validationMap[key], innerKey, corresponding) && isValid;\n                });\n            } else {\n                isValid = Validator._setError(errors, validationMap, key, value) && isValid;\n            }\n        });\n\n        return { isValid, errors };\n    },\n\n    /** Checks for errors for each field */\n    _setError(errors, validationMap, key, value) {\n        const validationItem = validationMap[key];\n        if (validationItem) {\n            // Check required\n            if (validationItem.checked && !value) {\n                errors[key] = isString(validationItem.checked) ? validationItem.checked : ERRORS.REQUIRED;\n                return false;\n            }\n\n            // Value required\n            if (validationItem.required && isEmpty(value) && !isNumber(value)) {\n                errors[key] = isString(validationItem.required) ? validationItem.required : ERRORS.REQUIRED;\n                return false;\n            }\n\n            // Check email to be valid\n            if (validationItem.email && !this.validateEmail(value)) {\n                errors[key] = isString(validationItem.email) ? validationItem.email : ERRORS.EMAIL_FORMAT;\n                return false;\n            }\n\n            // Check characterState to be valid\n            if (validationItem.characterState && !this.validateCharacter(value)) {\n                errors[key] = isString(validationItem.characterState) ? validationItem.characterState : ERRORS.STATE_CHARACTER_FORMAT;\n                return false;\n            }\n            // Check characterCity to be valid\n            if (validationItem.characterCity && !this.validateCharacter(value)) {\n                errors[key] = isString(validationItem.characterCity) ? validationItem.characterCity : ERRORS.CITY_CHARACTER_FORMAT;\n                return false;\n            }\n\n            // Check password to be valid\n           /* if (validationItem.password && value && !this.validatePassword(value)) {\n                errors[key] = isString(validationItem.password) ? validationItem.password : ERRORS.PASSWORD_FORMAT;\n                return false;\n            }*/\n\n           /* // Check strong password to be valid (contains mandatory special characters)\n            if (validationItem.strongPassword && !this.validatePassword(value, true)) {\n                errors[key] = isString(validationItem.strongPassword) ? validationItem.strongPassword : ERRORS.PASSWORD_FORMAT;\n                return false;\n            }*/\n\n            // Check to be positive number\n            if (validationItem.number && !this.validateNumber(value)) {\n                errors[key] = isString(validationItem.number) ? validationItem.number : ERRORS.NUMBER_FORMAT;\n                return false;\n            }\n            // Check to be positive number or empty\n            if (validationItem.numberOrEmpty && value && !this.validateNumber(value)) {\n                errors[key] = isString(validationItem.numberOrEmpty) ? validationItem.numberOrEmpty : ERRORS.NUMBER_FORMAT;\n                return false;\n            }\n\n            // Number > 0\n            if (validationItem.nonZeroNumber) {\n                // Validate number first\n                if (!this.validateNumber(value)) {\n                    errors[key] = isString(validationItem.number) ? validationItem.number : ERRORS.NUMBER_FORMAT;\n                    return false;\n                }\n                // If valid number, check if it's > 0\n                if (parseInt(value, 10) <= 0) {\n                    errors[key] = isString(validationItem.nonZeroNumber) ? validationItem.nonZeroNumber : ERRORS.NUMBER_NON_ZERO;\n                    return false;\n                }\n            }\n\n            // Check to be positive phone number\n            if (validationItem.phoneNumber && !this.validatePhoneNumber(value)) {\n                errors[key] = isString(validationItem.phoneNumber) ? validationItem.phoneNumber : ERRORS.PHONE_NUMBER_FORMAT;\n                return false;\n            }\n\n            // Date field MM/DD/YYYY\n            if (validationItem.americanDate && value && !this.validateAmericanDateFormat(value)) {\n                errors[key] = isString(validationItem.americanDate) ? validationItem.americanDate : ERRORS.AMERICAN_DATE_FORMAT;\n                return false;\n            }\n\n            // Time field HH:MM\n            if (validationItem.time && value && !this.validateTimeFormat(value)) {\n                errors[key] = isString(validationItem.time) ? validationItem.time : ERRORS.TIME_FORMAT;\n                return false;\n            }\n        }\n\n        // Else, mark that there's no error for the field\n        errors[key] = null;\n        return true;\n    },\n\n    /**\n     * Checks if an object is nested (has depth > 1)\n     * @param obj {Object} to be checked\n     * @returns {boolean}\n     * @private\n     */\n    _isNested(obj) {\n        let nested = false;\n        Object.keys(obj).forEach(key => {\n            if (isObject(obj[key])) {\n                nested = true;\n                return true;\n            }\n        });\n\n        return nested;\n    }\n};\n\nexport default Validator;\n","import React, { Component }  from 'react'\nimport { setLayout } from '../../actions/config'\nimport { loginUser } from '../../actions/authentication'\nimport Form from './../utils/form'\nimport InputText from '../../components/utils/input-text'\nimport {Link} from 'react-router-dom'\nimport LinkState from './../../components/utils/link-state';\nimport Validator from './../../components/utils/validator';\nimport { isEmpty } from './../../components/utils/util-functions';\nimport UserSession from './../../components/utils/user-session';\n\n\n\nclass LoginForm extends Component {\n\n    constructor() {\n        super();\n        this.state = {\n            email: null,\n            password: null,\n            errors: Validator.createErrorMap(VALIDATION_MAP),\n            keepMeLoggedIn: true\n        }\n    }\n\n    componentDidMount() {\n        setLayout('empty-view-1');\n\n    }\n\n    submit() {\n        const { email, password } = this.state;\n\n        // Validate on submit\n        const { isValid, errors } = Validator.validateState(this.state, VALIDATION_MAP);\n        if (!isValid) {\n            this.setState({ errors });\n            return;\n        }\n\n\n        this.setState({ loading: true });\n\n        // Login callback\n        const callback = (err, res) => {\n            this.setState({ loading: false });\n            if (res && res.data.user) {\n                UserSession.setTokenAndData(res.data, null);\n                window.location = '/';\n            }\n\n            if (res && res.data.code === 403) {\n                this.setState({ errors: { emailOrPassword: res.data.mgs }})\n            }\n        };\n\n        // Dispatch the login action\n        loginUser(email, password, callback);\n    }\n\n    _renderTitle() {\n        return (\n            <div>\n                <b>Samsa</b> Software\n            </div>\n        )\n    }\n\n\n    render() {\n        const emailRule =  {\n                title: 'Your email',\n                required: true\n        };\n        const passwordRule =  {\n                title: 'Your password',\n                required: true\n        };\n\n        const { email, password, emailOrPassword } = this.state.errors;\n\n        const hasGeneralError = !isEmpty(emailOrPassword) && !email && !password;\n\n        let invalidError = null\n        if (emailOrPassword) {\n            invalidError =\n                <div className='form-group'>\n                    <div className='form-text text-danger'>{emailOrPassword}</div>\n                </div>\n        }\n\n        return (\n            <Form\n                title={this._renderTitle()}\n                description=\"Please enter your name and email address to login\">\n                <InputText onChange={LinkState.bind(this, 'email')}\n                            type='email'\n                            singleBorder={true}\n                            value={this.state.email}\n                            name='email'\n                            placeholder='Your e-mail'\n                            label='E-mail'\n                            rules={emailRule}\n                            error={email || hasGeneralError}\n                />\n\n                <InputText onChange={LinkState.bind(this, 'password')}\n                            type='password'\n                            singleBorder={true}\n                            value={this.state.password}\n                            name='password'\n                            placeholder='Your password'\n                            label='E-mail'\n                            rules={passwordRule}\n                            error={password || hasGeneralError}\n                />\n                { invalidError }\n\n                <div className=\"form-group\">\n                    <button\n                        className=\"btn btn-primary btn-rounded btn-outline\"\n                        type=\"submit\"\n                        onClick={this.submit.bind(this)}>\n                        Submit\n                    </button>\n                </div>\n\n                <div className=\"links\">\n                    <p>\n                        <Link to=\"/reset-password\">Forgot your password?</Link>\n                    </p>\n                </div>\n            </Form>\n        )\n    }\n}\n\nconst VALIDATION_MAP = {\n    email: { email: true },\n    password: { required: true, password: true }\n};\n\nexport default LoginForm\n","import React, { Component }  from 'react'\nimport { setLayout } from '../../actions/config'\nimport { loginUser } from '../../actions/authentication'\nimport Form from './../utils/form'\nimport InputText from '../../components/utils/input-text'\nimport {Link} from 'react-router-dom'\nimport LinkState from './../../components/utils/link-state';\nimport Validator from './../../components/utils/validator';\nimport { isEmpty } from './../../components/utils/util-functions';\nimport UserSession from './../../components/utils/user-session';\n\n\n\nclass ResetPasswordForm extends Component {\n\n    constructor() {\n        super();\n        this.state = {\n            email: null,\n            password: null,\n            errors: Validator.createErrorMap(VALIDATION_MAP),\n            keepMeLoggedIn: true\n        }\n    }\n\n    componentDidMount() {\n        setLayout('empty-view-1');\n\n    }\n\n    submit() {\n        const { email, password } = this.state;\n\n        // Validate on submit\n        const { isValid, errors } = Validator.validateState(this.state, VALIDATION_MAP);\n        if (!isValid) {\n            this.setState({ errors });\n            return;\n        }\n\n\n        this.setState({ loading: true });\n\n        // Login callback\n        const callback = (err, res) => {\n            this.setState({ loading: false });\n            if (res && res.data.user) {\n                UserSession.setTokenAndData(res.data, null);\n                window.location = '/';\n            }\n\n            if (res && res.data.code === 403) {\n                this.setState({ errors: { emailOrPassword: res.data.mgs }})\n            }\n        };\n\n        // Dispatch the login action\n        loginUser(email, password, callback);\n    }\n\n    _renderTitle() {\n        return (\n            <div>\n                <b>Samsa</b> Software\n            </div>\n        )\n    }\n\n\n    render() {\n        const emailRule =  {\n            title: 'Your email',\n            required: true\n        };\n\n        const { email, password, emailOrPassword } = this.state.errors;\n\n        const hasGeneralError = !isEmpty(emailOrPassword) && !email && !password;\n\n\n        return (\n            <Form\n                title=\"Reset password\"\n                description=\"Please enter your email address to reset your password\">\n                <InputText onChange={LinkState.bind(this, 'email')}\n                           type='email'\n                           singleBorder={true}\n                           value={this.state.email}\n                           name='email'\n                           placeholder='Your e-mail'\n                           label='E-mail'\n                           rules={emailRule}\n                           error={email || hasGeneralError}\n                />\n\n                <div className=\"form-group\">\n                    <button\n                        className=\"btn btn-primary btn-rounded btn-outline\"\n                        type=\"submit\"\n                        onClick={this.submit.bind(this)}>\n                        Submit\n                    </button>\n                </div>\n\n                <div className=\"links\">\n                    <p>\n                        <span className=\"m-r-5\">Already have an account?</span>\n                        <Link to=\"/login\">Login</Link>\n                    </p>\n                </div>\n            </Form>\n        )\n    }\n}\n\nconst VALIDATION_MAP = {\n    email: { email: true },\n    password: { required: true, password: true }\n};\n\nexport default ResetPasswordForm\n","import React, {Component} from 'react';\nimport { callMethodAction, getFormAction, getFormValuesAction, getSelectedItemAction, getItemDrawAction, removeFormValuesAction, callDeleteMethodAction, getGraphData, exportComponentAction } from '../../actions/dashboard';\n\nclass GridMaster extends Component {\n    constructor(props) {\n        super(props);\n        this.component = this.props.component;\n        this.children = this.component.children;\n        const contextMenu = this.component.contextMenuResponse;\n        this.listMenuItems = [];\n        this.menuItems = [];\n        contextMenu && contextMenu.items.map((item) => {\n            if(item.type === 'list') {\n                this.listMenuItems.push(item);\n            } else {\n                this.menuItems.push(item);\n            }\n            return null;\n        });\n\n        const columnWidth = []\n\n        this.props.columns.forEach((column, i) => {\n            columnWidth[i] = column.size;\n        });\n\n        let data = this.props.records.map(dataItem => Object.assign({ selected: false }, dataItem));\n        data = this.props.records.map((dataItem, i) => Object.assign({ Nr: i+1 }, dataItem));\n\n        let maxItems = 4;\n        this.component.parameterResponse.map(parameter => {\n            if(parameter.name === 'vgriditems') {\n                maxItems = parameter.schema;\n            }\n            return null\n        })\n\n        this.state = {\n            data,\n            filter: {\n                logic: \"and\",\n                filters: []\n            },\n            maxItems: maxItems,\n            search: [],\n            searchLogic: \"OR\",\n            isSearchable: this.props.searches && this.props.searches.length > 0,\n            sort: [],\n            limit: this.props.limit,\n            offset: 0,\n            showModal: false,\n            modalType: 'edit',\n            showDeleteModal: false,\n            showAdvancedSearchModal: false,\n            selectedItems: [],\n            columns: this.props.columns.map((dataItem, i) => Object.assign({ order: i+1 }, dataItem)),\n            columnWidth,\n            open: false,\n            loader_showing: false,\n        }\n\n        this.gridContainer = React.createRef();\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.total !== prevProps.total || this.props.records.length !== prevProps.records.length || (this.props.records[0] && (this.props.records[0].recid !== prevProps.records[0].recid))) {\n            let data = this.props.records.map(dataItem => Object.assign({ selected: false }, dataItem));\n            data = this.props.records.map((dataItem, i) => Object.assign({ Nr: i+1 }, dataItem));\n            this.setState({\n                data\n            });\n        }\n    }\n\n    onSearch = (searchVal) => {\n        const search = []\n        if(searchVal !== '') {\n            this.props.columns.map((column) => {\n                search.push({\n                    field: column.field ,\n                    type: 'text',\n                    operator: 'begins',\n                    value: searchVal\n                });\n                return null;\n            });\n        }\n\n        this.setState({\n            search,\n            searchLogic: \"OR\",\n            offset: 0\n        });\n        this.props.setOffset(0);\n    }\n\n    onAdvancedSearch = (search) => {\n        const searchArray = [];\n        search.forEach((item) => {\n            if(item.value !== '') {\n                searchArray.push(item);\n            }\n        })\n        this.setState({\n            search: searchArray,\n            searchLogic: \"AND\",\n            offset: 0,\n        });\n        this.props.setOffset(0);\n    }\n\n    onSort = (column) => {\n        let sort = [];\n        column.sort.forEach((col) => {\n            sort.push({\n                field: col.field,\n                direction: col.dir,\n                dir: col.dir\n            });\n        })\n        this.setState({\n            sort: sort\n        }, () => {\n            this.search(true, false);\n        });\n        this.props.setOffset(0);\n    }\n\n    onPaginate = (event) => {\n        const e = event.nativeEvent;\n        const { offset, limit } = this.state;\n        const { total } = this.props;\n\n        if (e.target.scrollTop + 20 >= e.target.scrollHeight - e.target.clientHeight && limit + offset < total) {\n            this.setState({offset: limit + offset}, () => {\n                this.search(false, false);\n                this.props.setOffset(limit + offset);\n            });\n        }\n    }\n\n    search = (paginate = false, reload = false) => {\n        const data = {\n            cmd: \"get\",\n            selected: [],\n            limit: !paginate ? this.state.limit : this.state.limit + this.state.offset,\n            offset: !paginate ? this.state.offset : 0,\n            search: this.state.search,\n            searchLogic: this.state.searchLogic,\n            sort: [],\n        };\n        this.setState({ showAdvancedSearchModal: false,  loader_showing: true});\n        if(this.state.sort.field !== []) {\n            data.sort = this.state.sort;\n        }\n        const component = this.component;\n        let schema = component.referencelink;\n        if(!component.parentValues) {\n            this.props.getObject({request: JSON.stringify(data)}, schema, component, 'Workspace', this.props.workspaceId, paginate, () => this.hideloader(reload));\n        } else {\n            this.props.getObject({request: JSON.stringify(data)}, schema, component, component.parentValues.type, component.parentSelectedItems, paginate, () => this.hideloader(reload));\n        }\n    }\n\n    hideloader = (reload) => {\n        if(reload) {\n            let records = this.props.records.map(dataItem => Object.assign({ selected: false }, dataItem));\n            records = this.props.records.map((dataItem, i) => Object.assign({ Nr: i+1 }, dataItem));\n            this.setState({data: records});\n        }\n        this.setState({ loader_showing: false });\n    }\n\n    hideColumn = (field) => {\n        const { columns } = this.state;\n        const col = columns.find((c) => c.field === field)\n        col.hidden = !col.hidden;\n        this.setState({columns});\n    }\n\n    handleCloseModal = () => {\n        this.setState({ showModal: false }, () => {\n            removeFormValuesAction(this.component.recid);\n        });\n    }\n\n    handleShowModal = (modalType) => {\n        this.setState({ showModal: true, modalType });\n    }\n\n    handleCloseDeleteModal = () => {\n        this.setState({ showDeleteModal: false });\n    }\n\n    handleShowDeleteModal = () => {\n        //Only show delete modal is any items are selected\n        this.setState({ showDeleteModal: true });\n    }\n\n    handleCloseSearchModal = () => {\n        this.setState({ showAdvancedSearchModal: false });\n    }\n\n    handleShowSearchModal = () => {\n        this.setState({ showAdvancedSearchModal: true });\n    }\n\n    displayForm = (id, method = this.component.focus, command = 'edit') => {\n        const selectedItems = [id];\n        getSelectedItemAction(selectedItems, this.component);\n        const type = !(command === 'inputform') ? this.component.parentValues ? this.component.parentValues.type : 'Workspace' : this.component.focus;\n        const objectId = !(command === 'inputform') ? this.component.parentSelectedItems ? this.component.parentSelectedItems[0] : this.props.workspaceId : id;\n        getFormAction(this.props.viewId, objectId, method, type, command, this.props.workspaceId, null, () => {\n            if(id != null) {\n                getFormValuesAction(this.props.viewId, this.props.workspaceId, id, method, command, this.component.recid);\n            }\n            this.handleShowModal(command)\n        });\n\n    }\n\n    handleUpdateForm  = () => {\n        this.setState({ showModal: false }, () => {\n            const component = this.component;\n            removeFormValuesAction(component.recid);\n            this.search(true, true);\n        });\n    }\n\n    deleteItems = () => {\n        const { components } = this.props;\n        const component = this.component;\n        let request = {};\n        const parentComponent =  component.parentValues ? components.find((c) => c.name === component.parentValues.name) : component;\n        request.parentId = parentComponent.parentValues ? null : this.props.workspaceId;\n        request.parentType = parentComponent.parentValues ? parentComponent.parentValues.type : 'Workspace';\n        request.objectType = component.focus;\n        component.selectedItems.forEach((item, i) => {\n            request['data['+i+']'] = item\n        });\n        callDeleteMethodAction(request, '', component.recid);\n        this.setState({ showDeleteModal: false, selectedItems: [] });\n        setTimeout(() => {this.search(true, false)}, 1000);\n    }\n\n    buildFormData = (request, data, parentKey) => {\n        if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {\n          Object.keys(data).forEach(key => {\n            this.buildFormData(request, data[key], parentKey ? `${parentKey}[${key}]` : `[${key}]`);\n          });\n        } else {\n            const value = data == null ? '' : data;\n            let finalKey = parentKey;\n            if(parentKey.indexOf('$') > -1) {\n                finalKey = parentKey.replace('$','');\n            }\n            request[`data${finalKey}`] = value;\n        }\n    }\n\n    jsonToFormData = (data, request) => {\n        this.buildFormData(request, data);\n        return request;\n    }\n\n    handleClick = (item, itemId) => {\n        let request = {};\n        const targetComponent = this.component;\n        request.parentId = targetComponent.parentSelectedItems ? targetComponent.parentSelectedItems[0] : this.props.workspaceId;\n        request.parentType = targetComponent.parentValues ? targetComponent.parentValues.type : 'Workspace';\n        request.objectType = targetComponent.focus;\n        request[`id[]`] = itemId;\n        request.actionExecution = item.actionExecution;\n        request.method = item.method;\n        request[`data[id][$id][]`] = itemId;\n        request[`data[text]`] = item.text;\n        request[`data[actionExecution]`] = item.actionExecution;\n        request[`data[viewId]`] = '';\n        request[`data[parentType]`] = request.parentType;\n        request[`data[objectType]`] = request.objectType;\n        request[`data[method]`] = item.method;\n        request[`data[serviceName]`] = item.serviceName;\n        request[`data[params]`] = '';\n        request[`data[serviceMethod]`] = item.serviceMethod;\n        request[`data[template]`] = item.template;\n        request[`data[actionResponse]`] = item.actionResponse;\n        request[`data[icon]`] = '';\n        request[`data[workspaceId]`] = this.props.workspaceId;\n        callMethodAction(request, item.actionResponse, targetComponent.recid);\n        if(item.actionResponse.indexOf(\"refreshAll\") > -1) {\n            setTimeout(() => {this.search(true, true)}, 1000)\n        }\n    }\n\n    selectionChange = (dataItem, singleSelect=false, all=false) => {\n        const { components } = this.props;\n        let hasDraw = false;\n        const id = dataItem.recid;\n        let selected = '';\n        let selectedItems = this.component.selectedItems || [];\n        if(!singleSelect) {\n            if(!all) {\n                this.state.data.forEach((item) => {\n                    if(dataItem.recid !== item.recid && item.selected) {\n                        selected += item.recid+',';\n                    }\n                });\n\n                if(!dataItem.selected) {\n                    selected += dataItem.recid;\n                }\n\n                if(!selectedItems.includes(dataItem.recid)) {\n                    selectedItems.push(dataItem.recid);\n                } else {\n                    const index = selectedItems.indexOf(dataItem.recid);\n                    selectedItems.splice(index, 1);\n                    removeFormValuesAction(this.component.recid);\n                }\n            } else {\n                this.state.data.forEach((item) => {\n                    selected += item.recid+',';\n                    selectedItems.push(item.recid);\n                });\n            }\n\n        } else {\n            selected = dataItem.recid;\n            selectedItems = [];\n            selectedItems.push(dataItem.recid);\n        }\n        getSelectedItemAction(selectedItems, this.component);\n\n        /* Check if there is a draw component. */\n        components.map((component) => {\n            if(component.type == 'draw') {\n                hasDraw = true;\n            }\n        });\n\n        /* If yes, then draw. */\n        if(hasDraw) {\n            this.draw(selectedItems);\n        }\n\n        if(this.children) {\n            this.children.map((child) => {\n                if(child.componentType === 'grid' || child.componentType === 'verticalgrid' || child.componentType === 'report') {\n                    const data = {\n                        request: JSON.stringify({\n                            limit: this.state.limit,\n                        })\n                    }\n                    const childComponent =  components.find((c) => c.name === child.name);\n                    let schema = childComponent.referencelink;\n                    if(child.componentType === 'grid' || child.componentType == 'verticalgrid') {\n                        this.props.getObject(data, schema, child, child.parentObjectType, selected, true, () => this.hideloader(false));\n                    }\n                    if(child.componentType === 'report') {\n                        getGraphData(child.parentObjectType, 'cgtKPIDataValues', selected, this.props.viewId, 'kpievents');\n                    }\n                } else if(child.componentType === 'form' && dataItem.selected) {\n                    if(this.component.selectedItems.length === 1) {\n                        const parentComponent =  this.component.parentValues ? components.find((c) => c.name === this.component.parentValues.name) : this.component;\n                        getFormAction(this.props.viewId, parentComponent.selectedItems[0], this.component.focus, parentComponent.focus, 'edit', this.props.workspaceId, child.recid);\n                        getFormValuesAction(this.props.viewId, this.props.workspaceId, id, child.parentObjectType, 'edit', child.recid);\n                    } else {\n                        removeFormValuesAction(this.component.recid);\n                    }\n                }\n                return null;\n            })\n        }\n        const data = this.state.data.map(item=>{\n            if(!singleSelect) {\n                if(item.recid === dataItem.recid){\n                    item.selected = !dataItem.selected;\n                }\n            } else {\n                if(item.recid === dataItem.recid){\n                    item.selected = true;\n                } else {\n                    item.selected = false;\n                }\n            }\n            return item;\n        });\n        this.setState({ data });\n    }\n\n    headerSelectionChange = (event) => {\n        const { components } = this.props;\n        let hasDraw = false;\n        const checked = event.syntheticEvent.target.checked;\n        let selectedItems = this.component.selectedItems || [];\n        let selected = '';\n\n        if(checked) {\n            this.state.data.forEach((item) => {\n                selected += item.recid+',';\n                selectedItems.push(item.recid);\n            });\n        } else {\n            selectedItems = [];\n            selected = '';\n        }\n\n        getSelectedItemAction(selectedItems, this.component);\n\n        /* Check if there is a draw component. */\n        components.map((component) => {\n            if(component.type == 'draw') {\n                hasDraw = true;\n            }\n        });\n\n        /* If yes, then draw. */\n        if(hasDraw) {\n            this.draw(selectedItems);\n        }\n        \n        const data = this.state.data.map(item=>{\n            item.selected = checked;\n            return item;\n        });\n        this.setState({ data });\n    };\n\n    refreshComponent = () => {\n        this.setState({search: []}, () => {\n            this.search(true, true);\n        })\n    }\n\n    reorderColumns = (event) => {\n        let { columns } = this.state;\n        columns.map((column) => {\n            const orderColumn = event.target.columns.find((c) => c.field === column.field);\n            if(orderColumn) {\n                column.order = orderColumn.orderIndex;\n            }\n            return column;\n        })\n        columns.sort(function (a, b) {\n            return a.order - b.order;\n        });\n        console.log(this.state.columns);\n    }\n\n    resizeColumns = (event) => {\n        let { columns } = this.state;\n        columns.map((column) => {\n            if(column.order === event.index) {\n                column.size = event.newWidth;\n            }\n            return column;\n        });\n    }\n\n    exportComponent = () => {\n        const component = this.component;\n        let schema = component.referencelink;\n        if(!component.parentValues) {\n            exportComponentAction(schema, this.props.viewId, component.recid, 'Workspace', this.props.workspaceId);\n        } else {\n            exportComponentAction(schema, this.props.viewId, component.recid, component.parentValues.type, component.parentSelectedItems);\n        }\n    }\n\n    draw = (selectedItems) => {\n        const records = this.component.objectResponse.records;\n        const drawItems = [];\n        records.map((item) => {\n            if(selectedItems.includes(item.recid)) {\n                if(item.location_x && item.location_y) {\n                    const draw = {\n                        originx: item.location_x + 2,\n                        originy: item.location_y + 2,\n                        sizex: item.location_l - 2,\n                        sizey: item.location_w - 2,\n                        title: item.location_txt,\n                        color: item.location_color,\n                        type: 'rectangle',\n                    }\n                    drawItems.push(draw);\n                }\n                if(item.location_x1 && item.location_y1) {\n                    const location_x1 = (String(item.location_x1).indexOf(\",\") > 0) ? item.location_x1.split(\",\") : [item.location_x1];\n                    const location_y1 = (String(item.location_y1).indexOf(\",\") > 0) ? item.location_y1.split(\",\") : [item.location_y1];\n                    const location_l1 = (String(item.location_l1).indexOf(\",\") > 0) ? item.location_l1.split(\",\") : [item.location_l1];\n                    const location_w1 = (String(item.location_w1).indexOf(\",\") > 0) ? item.location_w1.split(\",\") : [item.location_w1];\n                    const location_txt1 = (String(item.location_txt1).indexOf(\",\") > 0) ? item.location_txt1.split(\",\") : [item.location_txt1];\n                    const location_color1 = (String(item.location_color1).indexOf(\",\") > 0) ? item.location_color1.split(\",\") : [item.location_color1];\n                    location_x1.map((location, i) => {\n                        const drawConnection = {\n                            originx: parseInt(location_x1[i])+2,\n                            originy: parseInt(location_y1[i])+2,\n                            sizex: location_l1[i] - 2,\n                            sizey: location_w1[i] - 2,\n                            title: location_txt1[i],\n                            color: location_color1[i],\n                            type: 'rectangle',\n                        }\n                        const drawLine = {\n                            originx: item.location_x - (- item.location_l/2),\n                            originy: item.location_y - (- item.location_w/2),\n                            endx: location_x1[i] - (- location_l1[i]/2),\n                            endy: location_y1[i] - (- location_w1[i]/2),\n                            type: 'line',\n                            color: location_color1[i],\n                        }\n                        drawItems.push(drawConnection);\n                        drawItems.push(drawLine);\n                    })\n                }\n            }\n        })\n        getItemDrawAction(drawItems, this.component.recid);\n    }\n}\n\nexport default GridMaster;\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\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 _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\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 _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n  var _classes;\n\n  var spin = props.spin,\n      pulse = props.pulse,\n      fixedWidth = props.fixedWidth,\n      inverse = props.inverse,\n      border = props.border,\n      listItem = props.listItem,\n      flip = props.flip,\n      size = props.size,\n      rotation = props.rotation,\n      pull = props.pull; // map of CSS class names to properties\n\n  var classes = (_classes = {\n    'fa-spin': spin,\n    'fa-pulse': pulse,\n    'fa-fw': fixedWidth,\n    'fa-inverse': inverse,\n    'fa-border': border,\n    'fa-li': listItem,\n    'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n    'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n  }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n  // return an array of the keys where the value for the key is not null\n\n  return Object.keys(classes).map(function (key) {\n    return classes[key] ? key : null;\n  }).filter(function (key) {\n    return key;\n  });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n  obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n  return obj === obj;\n}\n\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  } // eslint-disable-next-line no-useless-escape\n\n\n  string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n    return chr ? chr.toUpperCase() : '';\n  }); // Ensure 1st char is always lowercase\n\n  return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n  return style.split(';').map(function (s) {\n    return s.trim();\n  }).filter(function (s) {\n    return s;\n  }).reduce(function (acc, pair) {\n    var i = pair.indexOf(':');\n    var prop = camelize(pair.slice(0, i));\n    var value = pair.slice(i + 1).trim();\n    prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n    return acc;\n  }, {});\n}\n\nfunction convert(createElement, element) {\n  var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof element === 'string') {\n    return element;\n  }\n\n  var children = (element.children || []).map(function (child) {\n    return convert(createElement, child);\n  });\n  /* eslint-disable dot-notation */\n\n  var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n    var val = element.attributes[key];\n\n    switch (key) {\n      case 'class':\n        acc.attrs['className'] = val;\n        delete element.attributes['class'];\n        break;\n\n      case 'style':\n        acc.attrs['style'] = styleToObject(val);\n        break;\n\n      default:\n        if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n          acc.attrs[key.toLowerCase()] = val;\n        } else {\n          acc.attrs[camelize(key)] = val;\n        }\n\n    }\n\n    return acc;\n  }, {\n    attrs: {}\n  });\n\n  var _extraProps$style = extraProps.style,\n      existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n      remaining = _objectWithoutProperties(extraProps, [\"style\"]);\n\n  mixins.attrs['style'] = _objectSpread2({}, mixins.attrs['style'], {}, existingStyle);\n  /* eslint-enable */\n\n  return createElement.apply(void 0, [element.tag, _objectSpread2({}, mixins.attrs, {}, remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n  PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n  if (!PRODUCTION && console && typeof console.error === 'function') {\n    var _console;\n\n    (_console = console).error.apply(_console, arguments);\n  }\n}\n\n// Normalize icon arguments\nfunction normalizeIconArgs(icon) {\n  // if the icon is null, there's nothing to do\n  if (icon === null) {\n    return null;\n  } // if the icon is an object and has a prefix and an icon name, return it\n\n\n  if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n    return icon;\n  } // if it's an array with length of two\n\n\n  if (Array.isArray(icon) && icon.length === 2) {\n    // use the first item as prefix, second as icon name\n    return {\n      prefix: icon[0],\n      iconName: icon[1]\n    };\n  } // if it's a string, use it as the icon name\n\n\n  if (typeof icon === 'string') {\n    return {\n      prefix: 'fas',\n      iconName: icon\n    };\n  }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n  // if the value is a non-empty array\n  // or it's not an array but it is truthy\n  // then create the object with the key and the value\n  // if not, return an empty array\n  return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nfunction FontAwesomeIcon(_ref) {\n  var forwardedRef = _ref.forwardedRef,\n      props = _objectWithoutProperties(_ref, [\"forwardedRef\"]);\n\n  var iconArgs = props.icon,\n      maskArgs = props.mask,\n      symbol = props.symbol,\n      className = props.className,\n      title = props.title;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n  var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n  var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n  var renderedIcon = icon(iconLookup, _objectSpread2({}, classes, {}, transform, {}, mask, {\n    symbol: symbol,\n    title: title\n  }));\n\n  if (!renderedIcon) {\n    log('Could not find icon', iconLookup);\n    return null;\n  }\n\n  var abstract = renderedIcon.abstract;\n  var extraProps = {\n    ref: forwardedRef\n  };\n  Object.keys(props).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = props[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  border: PropTypes.bool,\n  className: PropTypes.string,\n  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n  icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  listItem: PropTypes.bool,\n  pull: PropTypes.oneOf(['right', 'left']),\n  pulse: PropTypes.bool,\n  rotation: PropTypes.oneOf([0, 90, 180, 270]),\n  size: PropTypes.oneOf(['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n  spin: PropTypes.bool,\n  symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  title: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  fixedWidth: false,\n  inverse: false,\n  flip: null,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  size: null,\n  spin: false,\n  symbol: false,\n  title: '',\n  transform: null,\n  swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","var prefix = \"fas\";\nvar faAd = {\n  prefix: 'fas',\n  iconName: 'ad',\n  icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n  prefix: 'fas',\n  iconName: 'adjust',\n  icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n  prefix: 'fas',\n  iconName: 'air-freshener',\n  icon: [384, 512, [], \"f5d0\", \"M378.94 321.41L284.7 224h49.22c15.3 0 23.66-16.6 13.86-27.53L234.45 69.96c3.43-6.61 5.55-14 5.55-21.96 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 7.96 2.12 15.35 5.55 21.96L36.22 196.47C26.42 207.4 34.78 224 50.08 224H99.3L5.06 321.41C-6.69 333.56 3.34 352 21.7 352H160v32H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h288c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16H224v-32h138.3c18.36 0 28.39-18.44 16.64-30.59zM192 31.98c8.85 0 16.02 7.17 16.02 16.02 0 8.84-7.17 16.02-16.02 16.02S175.98 56.84 175.98 48c0-8.85 7.17-16.02 16.02-16.02zM304 432v32H80v-32h224z\"]\n};\nvar faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n  prefix: 'fas',\n  iconName: 'allergies',\n  icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n  prefix: 'fas',\n  iconName: 'ambulance',\n  icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n  prefix: 'fas',\n  iconName: 'american-sign-language-interpreting',\n  icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n  prefix: 'fas',\n  iconName: 'angle-double-down',\n  icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-double-left',\n  icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n  prefix: 'fas',\n  iconName: 'angle-double-right',\n  icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n  prefix: 'fas',\n  iconName: 'angle-double-up',\n  icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n  prefix: 'fas',\n  iconName: 'angry',\n  icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n  prefix: 'fas',\n  iconName: 'apple-alt',\n  icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n  prefix: 'fas',\n  iconName: 'archive',\n  icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-down',\n  icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-left',\n  icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-right',\n  icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-alt-circle-up',\n  icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-down',\n  icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-left',\n  icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-right',\n  icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n  prefix: 'fas',\n  iconName: 'arrow-circle-up',\n  icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'arrows-alt',\n  icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-h',\n  icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n  prefix: 'fas',\n  iconName: 'arrows-alt-v',\n  icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n  prefix: 'fas',\n  iconName: 'assistive-listening-systems',\n  icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n  prefix: 'fas',\n  iconName: 'atlas',\n  icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n  prefix: 'fas',\n  iconName: 'backspace',\n  icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"f959\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [512, 512, [], \"f95a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n  prefix: 'fas',\n  iconName: 'balance-scale',\n  icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n  prefix: 'fas',\n  iconName: 'balance-scale-left',\n  icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n  prefix: 'fas',\n  iconName: 'balance-scale-right',\n  icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n  prefix: 'fas',\n  iconName: 'band-aid',\n  icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n  prefix: 'fas',\n  iconName: 'baseball-ball',\n  icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n  prefix: 'fas',\n  iconName: 'basketball-ball',\n  icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n  prefix: 'fas',\n  iconName: 'beer',\n  icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n  prefix: 'fas',\n  iconName: 'bible',\n  icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n  prefix: 'fas',\n  iconName: 'biking',\n  icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n  prefix: 'fas',\n  iconName: 'birthday-cake',\n  icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n  prefix: 'fas',\n  iconName: 'blind',\n  icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n  prefix: 'fas',\n  iconName: 'book-dead',\n  icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n  prefix: 'fas',\n  iconName: 'book-reader',\n  icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n  prefix: 'fas',\n  iconName: 'border-style',\n  icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"f95b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n  prefix: 'fas',\n  iconName: 'boxes',\n  icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n  prefix: 'fas',\n  iconName: 'broadcast-tower',\n  icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n  prefix: 'fas',\n  iconName: 'burn',\n  icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n  prefix: 'fas',\n  iconName: 'bus-alt',\n  icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n  prefix: 'fas',\n  iconName: 'calendar-alt',\n  icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n  prefix: 'fas',\n  iconName: 'calendar-times',\n  icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n  prefix: 'fas',\n  iconName: 'car-alt',\n  icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n  prefix: 'fas',\n  iconName: 'car-crash',\n  icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n  prefix: 'fas',\n  iconName: 'caret-square-down',\n  icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n  prefix: 'fas',\n  iconName: 'caret-square-left',\n  icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n  prefix: 'fas',\n  iconName: 'caret-square-right',\n  icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n  prefix: 'fas',\n  iconName: 'caret-square-up',\n  icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n  prefix: 'fas',\n  iconName: 'chalkboard-teacher',\n  icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n  prefix: 'fas',\n  iconName: 'check-circle',\n  icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n  prefix: 'fas',\n  iconName: 'check-square',\n  icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-down',\n  icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-left',\n  icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-right',\n  icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n  prefix: 'fas',\n  iconName: 'chevron-circle-up',\n  icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n  prefix: 'fas',\n  iconName: 'clinic-medical',\n  icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-download-alt',\n  icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n  prefix: 'fas',\n  iconName: 'cloud-upload-alt',\n  icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n  prefix: 'fas',\n  iconName: 'cocktail',\n  icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n  prefix: 'fas',\n  iconName: 'coffee',\n  icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n  prefix: 'fas',\n  iconName: 'cog',\n  icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n  prefix: 'fas',\n  iconName: 'cogs',\n  icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n  prefix: 'fas',\n  iconName: 'columns',\n  icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n  prefix: 'fas',\n  iconName: 'comment-alt',\n  icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n  prefix: 'fas',\n  iconName: 'compress-alt',\n  icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'compress-arrows-alt',\n  icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n  prefix: 'fas',\n  iconName: 'concierge-bell',\n  icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n  prefix: 'fas',\n  iconName: 'crop-alt',\n  icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n  prefix: 'fas',\n  iconName: 'cut',\n  icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n  prefix: 'fas',\n  iconName: 'deaf',\n  icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n  prefix: 'fas',\n  iconName: 'diagnoses',\n  icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n  prefix: 'fas',\n  iconName: 'digital-tachograph',\n  icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n  prefix: 'fas',\n  iconName: 'directions',\n  icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n  prefix: 'fas',\n  iconName: 'dizzy',\n  icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n  prefix: 'fas',\n  iconName: 'dolly-flatbed',\n  icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n  prefix: 'fas',\n  iconName: 'donate',\n  icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n  prefix: 'fas',\n  iconName: 'dot-circle',\n  icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n  prefix: 'fas',\n  iconName: 'drafting-compass',\n  icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n  prefix: 'fas',\n  iconName: 'edit',\n  icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n  prefix: 'fas',\n  iconName: 'ellipsis-h',\n  icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n  prefix: 'fas',\n  iconName: 'ellipsis-v',\n  icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n  prefix: 'fas',\n  iconName: 'envelope-square',\n  icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n  prefix: 'fas',\n  iconName: 'exchange-alt',\n  icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n  prefix: 'fas',\n  iconName: 'exclamation-circle',\n  icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n  prefix: 'fas',\n  iconName: 'exclamation-triangle',\n  icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n  prefix: 'fas',\n  iconName: 'expand-alt',\n  icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n  prefix: 'fas',\n  iconName: 'expand-arrows-alt',\n  icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-alt',\n  icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n  prefix: 'fas',\n  iconName: 'external-link-square-alt',\n  icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n  prefix: 'fas',\n  iconName: 'fast-backward',\n  icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n  prefix: 'fas',\n  iconName: 'fast-forward',\n  icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"f905\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n  prefix: 'fas',\n  iconName: 'feather-alt',\n  icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n  prefix: 'fas',\n  iconName: 'female',\n  icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n  prefix: 'fas',\n  iconName: 'fighter-jet',\n  icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n  prefix: 'fas',\n  iconName: 'file-alt',\n  icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n  prefix: 'fas',\n  iconName: 'file-archive',\n  icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n  prefix: 'fas',\n  iconName: 'file-download',\n  icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n  prefix: 'fas',\n  iconName: 'file-medical-alt',\n  icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n  prefix: 'fas',\n  iconName: 'file-upload',\n  icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n  prefix: 'fas',\n  iconName: 'fire-alt',\n  icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n  prefix: 'fas',\n  iconName: 'first-aid',\n  icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n  prefix: 'fas',\n  iconName: 'fist-raised',\n  icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n  prefix: 'fas',\n  iconName: 'flushed',\n  icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n  prefix: 'fas',\n  iconName: 'font-awesome-logo-full',\n  icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n  prefix: 'fas',\n  iconName: 'football-ball',\n  icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n  prefix: 'fas',\n  iconName: 'frown',\n  icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n  prefix: 'fas',\n  iconName: 'frown-open',\n  icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n  prefix: 'fas',\n  iconName: 'funnel-dollar',\n  icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n  prefix: 'fas',\n  iconName: 'glass-cheers',\n  icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n  prefix: 'fas',\n  iconName: 'glass-martini',\n  icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n  prefix: 'fas',\n  iconName: 'glass-martini-alt',\n  icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n  prefix: 'fas',\n  iconName: 'glass-whiskey',\n  icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n  prefix: 'fas',\n  iconName: 'globe-africa',\n  icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n  prefix: 'fas',\n  iconName: 'globe-americas',\n  icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n  prefix: 'fas',\n  iconName: 'globe-asia',\n  icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n  prefix: 'fas',\n  iconName: 'globe-europe',\n  icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n  prefix: 'fas',\n  iconName: 'golf-ball',\n  icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n  prefix: 'fas',\n  iconName: 'grimace',\n  icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n  prefix: 'fas',\n  iconName: 'grin',\n  icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n  prefix: 'fas',\n  iconName: 'grin-alt',\n  icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n  prefix: 'fas',\n  iconName: 'grin-beam',\n  icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'grin-beam-sweat',\n  icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n  prefix: 'fas',\n  iconName: 'grin-hearts',\n  icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n  prefix: 'fas',\n  iconName: 'grin-squint',\n  icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'grin-squint-tears',\n  icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n  prefix: 'fas',\n  iconName: 'grin-stars',\n  icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n  prefix: 'fas',\n  iconName: 'grin-tears',\n  icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n  prefix: 'fas',\n  iconName: 'grin-tongue',\n  icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-squint',\n  icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'grin-tongue-wink',\n  icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n  prefix: 'fas',\n  iconName: 'grin-wink',\n  icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n  prefix: 'fas',\n  iconName: 'grip-horizontal',\n  icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n  prefix: 'fas',\n  iconName: 'h-square',\n  icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n  prefix: 'fas',\n  iconName: 'hamburger',\n  icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"f95c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n  prefix: 'fas',\n  iconName: 'hand-holding-usd',\n  icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n  prefix: 'fas',\n  iconName: 'hand-holding-water',\n  icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n  prefix: 'fas',\n  iconName: 'hand-paper',\n  icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n  prefix: 'fas',\n  iconName: 'hand-rock',\n  icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"f95d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n  prefix: 'fas',\n  iconName: 'hands-helping',\n  icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n  prefix: 'fas',\n  iconName: 'hands-wash',\n  icon: [576, 512, [], \"f95e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-alt-slash',\n  icon: [640, 512, [], \"f95f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [640, 512, [], \"f960\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n  prefix: 'fas',\n  iconName: 'hard-hat',\n  icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n  prefix: 'fas',\n  iconName: 'hdd',\n  icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [640, 512, [], \"f961\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [640, 512, [], \"f962\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [512, 512, [], \"f963\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"f964\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n  prefix: 'fas',\n  iconName: 'headphones-alt',\n  icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n  prefix: 'fas',\n  iconName: 'heart-broken',\n  icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n  prefix: 'fas',\n  iconName: 'heartbeat',\n  icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n  prefix: 'fas',\n  iconName: 'hiking',\n  icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n  prefix: 'fas',\n  iconName: 'history',\n  icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n  prefix: 'fas',\n  iconName: 'home',\n  icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n  prefix: 'fas',\n  iconName: 'hospital-alt',\n  icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n  prefix: 'fas',\n  iconName: 'hospital-symbol',\n  icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n  prefix: 'fas',\n  iconName: 'hot-tub',\n  icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n  prefix: 'fas',\n  iconName: 'house-damage',\n  icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [576, 512, [], \"f965\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n  prefix: 'fas',\n  iconName: 'hryvnia',\n  icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n  prefix: 'fas',\n  iconName: 'id-card-alt',\n  icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n  prefix: 'fas',\n  iconName: 'info-circle',\n  icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n  prefix: 'fas',\n  iconName: 'journal-whills',\n  icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n  prefix: 'fas',\n  iconName: 'kiss',\n  icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n  prefix: 'fas',\n  iconName: 'kiss-beam',\n  icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'kiss-wink-heart',\n  icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n  prefix: 'fas',\n  iconName: 'laptop-house',\n  icon: [640, 512, [], \"f966\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n  prefix: 'fas',\n  iconName: 'laugh',\n  icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n  prefix: 'fas',\n  iconName: 'laugh-beam',\n  icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n  prefix: 'fas',\n  iconName: 'laugh-squint',\n  icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n  prefix: 'fas',\n  iconName: 'laugh-wink',\n  icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n  prefix: 'fas',\n  iconName: 'level-down-alt',\n  icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n  prefix: 'fas',\n  iconName: 'level-up-alt',\n  icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n  prefix: 'fas',\n  iconName: 'list-alt',\n  icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-down',\n  icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-left',\n  icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-right',\n  icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n  prefix: 'fas',\n  iconName: 'long-arrow-alt-up',\n  icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n  prefix: 'fas',\n  iconName: 'low-vision',\n  icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n  prefix: 'fas',\n  iconName: 'luggage-cart',\n  icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [640, 512, [], \"f967\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n  prefix: 'fas',\n  iconName: 'magic',\n  icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n  prefix: 'fas',\n  iconName: 'mail-bulk',\n  icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n  prefix: 'fas',\n  iconName: 'male',\n  icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n  prefix: 'fas',\n  iconName: 'map-marked',\n  icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n  prefix: 'fas',\n  iconName: 'map-marked-alt',\n  icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n  prefix: 'fas',\n  iconName: 'map-marker',\n  icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n  prefix: 'fas',\n  iconName: 'map-marker-alt',\n  icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n  prefix: 'fas',\n  iconName: 'map-signs',\n  icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-h',\n  icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-v',\n  icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n  prefix: 'fas',\n  iconName: 'medkit',\n  icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n  prefix: 'fas',\n  iconName: 'meh',\n  icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n  prefix: 'fas',\n  iconName: 'meh-blank',\n  icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n  prefix: 'fas',\n  iconName: 'meh-rolling-eyes',\n  icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n  prefix: 'fas',\n  iconName: 'microphone-alt',\n  icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-alt-slash',\n  icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n  prefix: 'fas',\n  iconName: 'minus-circle',\n  icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n  prefix: 'fas',\n  iconName: 'minus-square',\n  icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n  prefix: 'fas',\n  iconName: 'mobile-alt',\n  icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-alt',\n  icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave-alt',\n  icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n  prefix: 'fas',\n  iconName: 'money-check-alt',\n  icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n  prefix: 'fas',\n  iconName: 'mouse',\n  icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n  prefix: 'fas',\n  iconName: 'mouse-pointer',\n  icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n  prefix: 'fas',\n  iconName: 'paint-brush',\n  icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n  prefix: 'fas',\n  iconName: 'parking',\n  icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n  prefix: 'fas',\n  iconName: 'pastafarianism',\n  icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n  prefix: 'fas',\n  iconName: 'pause-circle',\n  icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n  prefix: 'fas',\n  iconName: 'pen-alt',\n  icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n  prefix: 'fas',\n  iconName: 'pen-square',\n  icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n  prefix: 'fas',\n  iconName: 'pencil-alt',\n  icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n  prefix: 'fas',\n  iconName: 'pencil-ruler',\n  icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [576, 512, [], \"f968\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n  prefix: 'fas',\n  iconName: 'people-carry',\n  icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n  prefix: 'fas',\n  iconName: 'percentage',\n  icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n  prefix: 'fas',\n  iconName: 'phone-alt',\n  icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n  prefix: 'fas',\n  iconName: 'phone-square',\n  icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n  prefix: 'fas',\n  iconName: 'phone-square-alt',\n  icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n  prefix: 'fas',\n  iconName: 'photo-video',\n  icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [640, 512, [], \"f969\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n  prefix: 'fas',\n  iconName: 'play-circle',\n  icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n  prefix: 'fas',\n  iconName: 'plus-circle',\n  icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n  prefix: 'fas',\n  iconName: 'plus-square',\n  icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n  prefix: 'fas',\n  iconName: 'poll',\n  icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n  prefix: 'fas',\n  iconName: 'poll-h',\n  icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n  prefix: 'fas',\n  iconName: 'portrait',\n  icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n  prefix: 'fas',\n  iconName: 'pound-sign',\n  icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n  prefix: 'fas',\n  iconName: 'pray',\n  icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n  prefix: 'fas',\n  iconName: 'praying-hands',\n  icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-alt',\n  icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n  prefix: 'fas',\n  iconName: 'procedures',\n  icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n  prefix: 'fas',\n  iconName: 'project-diagram',\n  icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [384, 512, [], \"f96a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [384, 512, [], \"f96b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n  prefix: 'fas',\n  iconName: 'question-circle',\n  icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n  prefix: 'fas',\n  iconName: 'quidditch',\n  icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n  prefix: 'fas',\n  iconName: 'quran',\n  icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n  prefix: 'fas',\n  iconName: 'radiation-alt',\n  icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n  prefix: 'fas',\n  iconName: 'random',\n  icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n  prefix: 'fas',\n  iconName: 'redo',\n  icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n  prefix: 'fas',\n  iconName: 'redo-alt',\n  icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n  prefix: 'fas',\n  iconName: 'remove-format',\n  icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n  prefix: 'fas',\n  iconName: 'rss-square',\n  icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n  prefix: 'fas',\n  iconName: 'running',\n  icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n  prefix: 'fas',\n  iconName: 'sad-cry',\n  icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n  prefix: 'fas',\n  iconName: 'sad-tear',\n  icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n  prefix: 'fas',\n  iconName: 'save',\n  icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n  prefix: 'fas',\n  iconName: 'search',\n  icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n  prefix: 'fas',\n  iconName: 'search-dollar',\n  icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n  prefix: 'fas',\n  iconName: 'search-location',\n  icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n  prefix: 'fas',\n  iconName: 'search-minus',\n  icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n  prefix: 'fas',\n  iconName: 'search-plus',\n  icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n  prefix: 'fas',\n  iconName: 'share-alt',\n  icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n  prefix: 'fas',\n  iconName: 'share-alt-square',\n  icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n  prefix: 'fas',\n  iconName: 'share-square',\n  icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n  prefix: 'fas',\n  iconName: 'shield-alt',\n  icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"f96c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n  prefix: 'fas',\n  iconName: 'shipping-fast',\n  icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n  prefix: 'fas',\n  iconName: 'shopping-bag',\n  icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n  prefix: 'fas',\n  iconName: 'shopping-basket',\n  icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n  prefix: 'fas',\n  iconName: 'shopping-cart',\n  icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n  prefix: 'fas',\n  iconName: 'shuttle-van',\n  icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n  prefix: 'fas',\n  iconName: 'sign',\n  icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n  prefix: 'fas',\n  iconName: 'sign-in-alt',\n  icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n  prefix: 'fas',\n  iconName: 'sign-language',\n  icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n  prefix: 'fas',\n  iconName: 'sign-out-alt',\n  icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"f96d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n  prefix: 'fas',\n  iconName: 'skating',\n  icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n  prefix: 'fas',\n  iconName: 'skiing',\n  icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'skiing-nordic',\n  icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n  prefix: 'fas',\n  iconName: 'sliders-h',\n  icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n  prefix: 'fas',\n  iconName: 'smile',\n  icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n  prefix: 'fas',\n  iconName: 'smile-beam',\n  icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n  prefix: 'fas',\n  iconName: 'smile-wink',\n  icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n  prefix: 'fas',\n  iconName: 'smoking-ban',\n  icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n  prefix: 'fas',\n  iconName: 'sms',\n  icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n  prefix: 'fas',\n  iconName: 'snowboarding',\n  icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [], \"f96e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down',\n  icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-down-alt',\n  icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up',\n  icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-alpha-up-alt',\n  icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down',\n  icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-down-alt',\n  icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up',\n  icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-amount-up-alt',\n  icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down',\n  icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-down-alt',\n  icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up',\n  icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n  prefix: 'fas',\n  iconName: 'sort-numeric-up-alt',\n  icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n  prefix: 'fas',\n  iconName: 'space-shuttle',\n  icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n  prefix: 'fas',\n  iconName: 'square-root-alt',\n  icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n  prefix: 'fas',\n  iconName: 'star-half-alt',\n  icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n  prefix: 'fas',\n  iconName: 'step-backward',\n  icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n  prefix: 'fas',\n  iconName: 'step-forward',\n  icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n  prefix: 'fas',\n  iconName: 'sticky-note',\n  icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n  prefix: 'fas',\n  iconName: 'stop-circle',\n  icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"f96f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n  prefix: 'fas',\n  iconName: 'store-alt',\n  icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n  prefix: 'fas',\n  iconName: 'store-alt-slash',\n  icon: [640, 512, [], \"f970\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [640, 512, [], \"f971\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n  prefix: 'fas',\n  iconName: 'stream',\n  icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n  prefix: 'fas',\n  iconName: 'subway',\n  icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n  prefix: 'fas',\n  iconName: 'surprise',\n  icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n  prefix: 'fas',\n  iconName: 'swimmer',\n  icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n  prefix: 'fas',\n  iconName: 'swimming-pool',\n  icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n  prefix: 'fas',\n  iconName: 'sync',\n  icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n  prefix: 'fas',\n  iconName: 'sync-alt',\n  icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n  prefix: 'fas',\n  iconName: 'table-tennis',\n  icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n  prefix: 'fas',\n  iconName: 'tablet-alt',\n  icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n  prefix: 'fas',\n  iconName: 'tachometer-alt',\n  icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n  prefix: 'fas',\n  iconName: 'tasks',\n  icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n  prefix: 'fas',\n  iconName: 'tenge',\n  icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n  prefix: 'fas',\n  iconName: 'th',\n  icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n  prefix: 'fas',\n  iconName: 'th-large',\n  icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n  prefix: 'fas',\n  iconName: 'th-list',\n  icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n  prefix: 'fas',\n  iconName: 'theater-masks',\n  icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n  prefix: 'fas',\n  iconName: 'thermometer-empty',\n  icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n  prefix: 'fas',\n  iconName: 'thermometer-full',\n  icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n  prefix: 'fas',\n  iconName: 'thermometer-half',\n  icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n  prefix: 'fas',\n  iconName: 'thermometer-quarter',\n  icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'thermometer-three-quarters',\n  icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n  prefix: 'fas',\n  iconName: 'ticket-alt',\n  icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n  prefix: 'fas',\n  iconName: 'times',\n  icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n  prefix: 'fas',\n  iconName: 'times-circle',\n  icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n  prefix: 'fas',\n  iconName: 'tint',\n  icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n  prefix: 'fas',\n  iconName: 'tint-slash',\n  icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n  prefix: 'fas',\n  iconName: 'tired',\n  icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [640, 512, [], \"f972\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n  prefix: 'fas',\n  iconName: 'tools',\n  icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n  prefix: 'fas',\n  iconName: 'torah',\n  icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"f941\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n  prefix: 'fas',\n  iconName: 'tram',\n  icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n  prefix: 'fas',\n  iconName: 'transgender-alt',\n  icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n  prefix: 'fas',\n  iconName: 'trash-alt',\n  icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n  prefix: 'fas',\n  iconName: 'trash-restore',\n  icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n  prefix: 'fas',\n  iconName: 'trash-restore-alt',\n  icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n  prefix: 'fas',\n  iconName: 'truck-loading',\n  icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n  prefix: 'fas',\n  iconName: 'tshirt',\n  icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n  prefix: 'fas',\n  iconName: 'undo',\n  icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n  prefix: 'fas',\n  iconName: 'undo-alt',\n  icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n  prefix: 'fas',\n  iconName: 'university',\n  icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n  prefix: 'fas',\n  iconName: 'unlink',\n  icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n  prefix: 'fas',\n  iconName: 'unlock-alt',\n  icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n  prefix: 'fas',\n  iconName: 'user-alt',\n  icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n  prefix: 'fas',\n  iconName: 'user-alt-slash',\n  icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n  prefix: 'fas',\n  iconName: 'user-circle',\n  icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n  prefix: 'fas',\n  iconName: 'user-cog',\n  icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n  prefix: 'fas',\n  iconName: 'user-edit',\n  icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n  prefix: 'fas',\n  iconName: 'user-friends',\n  icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n  prefix: 'fas',\n  iconName: 'user-md',\n  icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n  prefix: 'fas',\n  iconName: 'user-times',\n  icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n  prefix: 'fas',\n  iconName: 'users-cog',\n  icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"f973\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n  prefix: 'fas',\n  iconName: 'utensil-spoon',\n  icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n  prefix: 'fas',\n  iconName: 'vector-square',\n  icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"f974\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [640, 512, [], \"f975\", \"M114,227.56H92.44a28.44,28.44,0,0,0,0,56.88H114c50.68,0,76.06,61.28,40.23,97.12L139,396.81A28.44,28.44,0,1,0,179.19,437l15.25-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-26.61,17-45.91,38.22-53.37l-244.5-189A55.58,55.58,0,0,1,114,227.56ZM633.82,458.09,470.62,332c4.17-25.39,24.91-47.52,55.39-47.52h21.55a28.44,28.44,0,1,0,0-56.88H526c-50.68,0-76.06-61.28-40.23-97.12L501,115.19A28.44,28.44,0,0,0,460.81,75L445.56,90.22c-35.84,35.84-97.11,10.46-97.11-40.23V28.45a28.45,28.45,0,0,0-56.9,0V50c0,50.69-61.27,76.07-97.11,40.23L179.19,75A28.43,28.43,0,0,0,139,75c-.13.14-.15.32-.28.46L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM335.43,227.48l-62.87-48.59A46.55,46.55,0,0,1,288,176a48,48,0,0,1,48,48C336,225.22,335.52,226.29,335.43,227.48Z\"]\n};\nvar faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"f976\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n  prefix: 'fas',\n  iconName: 'volleyball-ball',\n  icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n  prefix: 'fas',\n  iconName: 'volume-down',\n  icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n  prefix: 'fas',\n  iconName: 'volume-mute',\n  icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n  prefix: 'fas',\n  iconName: 'volume-up',\n  icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n  prefix: 'fas',\n  iconName: 'vote-yea',\n  icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n  prefix: 'fas',\n  iconName: 'walking',\n  icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n  prefix: 'fas',\n  iconName: 'weight',\n  icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n  prefix: 'fas',\n  iconName: 'window-close',\n  icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n  prefix: 'fas',\n  iconName: 'wine-glass-alt',\n  icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n  faAd: faAd,\n  faAddressBook: faAddressBook,\n  faAddressCard: faAddressCard,\n  faAdjust: faAdjust,\n  faAirFreshener: faAirFreshener,\n  faAlignCenter: faAlignCenter,\n  faAlignJustify: faAlignJustify,\n  faAlignLeft: faAlignLeft,\n  faAlignRight: faAlignRight,\n  faAllergies: faAllergies,\n  faAmbulance: faAmbulance,\n  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n  faAnchor: faAnchor,\n  faAngleDoubleDown: faAngleDoubleDown,\n  faAngleDoubleLeft: faAngleDoubleLeft,\n  faAngleDoubleRight: faAngleDoubleRight,\n  faAngleDoubleUp: faAngleDoubleUp,\n  faAngleDown: faAngleDown,\n  faAngleLeft: faAngleLeft,\n  faAngleRight: faAngleRight,\n  faAngleUp: faAngleUp,\n  faAngry: faAngry,\n  faAnkh: faAnkh,\n  faAppleAlt: faAppleAlt,\n  faArchive: faArchive,\n  faArchway: faArchway,\n  faArrowAltCircleDown: faArrowAltCircleDown,\n  faArrowAltCircleLeft: faArrowAltCircleLeft,\n  faArrowAltCircleRight: faArrowAltCircleRight,\n  faArrowAltCircleUp: faArrowAltCircleUp,\n  faArrowCircleDown: faArrowCircleDown,\n  faArrowCircleLeft: faArrowCircleLeft,\n  faArrowCircleRight: faArrowCircleRight,\n  faArrowCircleUp: faArrowCircleUp,\n  faArrowDown: faArrowDown,\n  faArrowLeft: faArrowLeft,\n  faArrowRight: faArrowRight,\n  faArrowUp: faArrowUp,\n  faArrowsAlt: faArrowsAlt,\n  faArrowsAltH: faArrowsAltH,\n  faArrowsAltV: faArrowsAltV,\n  faAssistiveListeningSystems: faAssistiveListeningSystems,\n  faAsterisk: faAsterisk,\n  faAt: faAt,\n  faAtlas: faAtlas,\n  faAtom: faAtom,\n  faAudioDescription: faAudioDescription,\n  faAward: faAward,\n  faBaby: faBaby,\n  faBabyCarriage: faBabyCarriage,\n  faBackspace: faBackspace,\n  faBackward: faBackward,\n  faBacon: faBacon,\n  faBacteria: faBacteria,\n  faBacterium: faBacterium,\n  faBahai: faBahai,\n  faBalanceScale: faBalanceScale,\n  faBalanceScaleLeft: faBalanceScaleLeft,\n  faBalanceScaleRight: faBalanceScaleRight,\n  faBan: faBan,\n  faBandAid: faBandAid,\n  faBarcode: faBarcode,\n  faBars: faBars,\n  faBaseballBall: faBaseballBall,\n  faBasketballBall: faBasketballBall,\n  faBath: faBath,\n  faBatteryEmpty: faBatteryEmpty,\n  faBatteryFull: faBatteryFull,\n  faBatteryHalf: faBatteryHalf,\n  faBatteryQuarter: faBatteryQuarter,\n  faBatteryThreeQuarters: faBatteryThreeQuarters,\n  faBed: faBed,\n  faBeer: faBeer,\n  faBell: faBell,\n  faBellSlash: faBellSlash,\n  faBezierCurve: faBezierCurve,\n  faBible: faBible,\n  faBicycle: faBicycle,\n  faBiking: faBiking,\n  faBinoculars: faBinoculars,\n  faBiohazard: faBiohazard,\n  faBirthdayCake: faBirthdayCake,\n  faBlender: faBlender,\n  faBlenderPhone: faBlenderPhone,\n  faBlind: faBlind,\n  faBlog: faBlog,\n  faBold: faBold,\n  faBolt: faBolt,\n  faBomb: faBomb,\n  faBone: faBone,\n  faBong: faBong,\n  faBook: faBook,\n  faBookDead: faBookDead,\n  faBookMedical: faBookMedical,\n  faBookOpen: faBookOpen,\n  faBookReader: faBookReader,\n  faBookmark: faBookmark,\n  faBorderAll: faBorderAll,\n  faBorderNone: faBorderNone,\n  faBorderStyle: faBorderStyle,\n  faBowlingBall: faBowlingBall,\n  faBox: faBox,\n  faBoxOpen: faBoxOpen,\n  faBoxTissue: faBoxTissue,\n  faBoxes: faBoxes,\n  faBraille: faBraille,\n  faBrain: faBrain,\n  faBreadSlice: faBreadSlice,\n  faBriefcase: faBriefcase,\n  faBriefcaseMedical: faBriefcaseMedical,\n  faBroadcastTower: faBroadcastTower,\n  faBroom: faBroom,\n  faBrush: faBrush,\n  faBug: faBug,\n  faBuilding: faBuilding,\n  faBullhorn: faBullhorn,\n  faBullseye: faBullseye,\n  faBurn: faBurn,\n  faBus: faBus,\n  faBusAlt: faBusAlt,\n  faBusinessTime: faBusinessTime,\n  faCalculator: faCalculator,\n  faCalendar: faCalendar,\n  faCalendarAlt: faCalendarAlt,\n  faCalendarCheck: faCalendarCheck,\n  faCalendarDay: faCalendarDay,\n  faCalendarMinus: faCalendarMinus,\n  faCalendarPlus: faCalendarPlus,\n  faCalendarTimes: faCalendarTimes,\n  faCalendarWeek: faCalendarWeek,\n  faCamera: faCamera,\n  faCameraRetro: faCameraRetro,\n  faCampground: faCampground,\n  faCandyCane: faCandyCane,\n  faCannabis: faCannabis,\n  faCapsules: faCapsules,\n  faCar: faCar,\n  faCarAlt: faCarAlt,\n  faCarBattery: faCarBattery,\n  faCarCrash: faCarCrash,\n  faCarSide: faCarSide,\n  faCaravan: faCaravan,\n  faCaretDown: faCaretDown,\n  faCaretLeft: faCaretLeft,\n  faCaretRight: faCaretRight,\n  faCaretSquareDown: faCaretSquareDown,\n  faCaretSquareLeft: faCaretSquareLeft,\n  faCaretSquareRight: faCaretSquareRight,\n  faCaretSquareUp: faCaretSquareUp,\n  faCaretUp: faCaretUp,\n  faCarrot: faCarrot,\n  faCartArrowDown: faCartArrowDown,\n  faCartPlus: faCartPlus,\n  faCashRegister: faCashRegister,\n  faCat: faCat,\n  faCertificate: faCertificate,\n  faChair: faChair,\n  faChalkboard: faChalkboard,\n  faChalkboardTeacher: faChalkboardTeacher,\n  faChargingStation: faChargingStation,\n  faChartArea: faChartArea,\n  faChartBar: faChartBar,\n  faChartLine: faChartLine,\n  faChartPie: faChartPie,\n  faCheck: faCheck,\n  faCheckCircle: faCheckCircle,\n  faCheckDouble: faCheckDouble,\n  faCheckSquare: faCheckSquare,\n  faCheese: faCheese,\n  faChess: faChess,\n  faChessBishop: faChessBishop,\n  faChessBoard: faChessBoard,\n  faChessKing: faChessKing,\n  faChessKnight: faChessKnight,\n  faChessPawn: faChessPawn,\n  faChessQueen: faChessQueen,\n  faChessRook: faChessRook,\n  faChevronCircleDown: faChevronCircleDown,\n  faChevronCircleLeft: faChevronCircleLeft,\n  faChevronCircleRight: faChevronCircleRight,\n  faChevronCircleUp: faChevronCircleUp,\n  faChevronDown: faChevronDown,\n  faChevronLeft: faChevronLeft,\n  faChevronRight: faChevronRight,\n  faChevronUp: faChevronUp,\n  faChild: faChild,\n  faChurch: faChurch,\n  faCircle: faCircle,\n  faCircleNotch: faCircleNotch,\n  faCity: faCity,\n  faClinicMedical: faClinicMedical,\n  faClipboard: faClipboard,\n  faClipboardCheck: faClipboardCheck,\n  faClipboardList: faClipboardList,\n  faClock: faClock,\n  faClone: faClone,\n  faClosedCaptioning: faClosedCaptioning,\n  faCloud: faCloud,\n  faCloudDownloadAlt: faCloudDownloadAlt,\n  faCloudMeatball: faCloudMeatball,\n  faCloudMoon: faCloudMoon,\n  faCloudMoonRain: faCloudMoonRain,\n  faCloudRain: faCloudRain,\n  faCloudShowersHeavy: faCloudShowersHeavy,\n  faCloudSun: faCloudSun,\n  faCloudSunRain: faCloudSunRain,\n  faCloudUploadAlt: faCloudUploadAlt,\n  faCocktail: faCocktail,\n  faCode: faCode,\n  faCodeBranch: faCodeBranch,\n  faCoffee: faCoffee,\n  faCog: faCog,\n  faCogs: faCogs,\n  faCoins: faCoins,\n  faColumns: faColumns,\n  faComment: faComment,\n  faCommentAlt: faCommentAlt,\n  faCommentDollar: faCommentDollar,\n  faCommentDots: faCommentDots,\n  faCommentMedical: faCommentMedical,\n  faCommentSlash: faCommentSlash,\n  faComments: faComments,\n  faCommentsDollar: faCommentsDollar,\n  faCompactDisc: faCompactDisc,\n  faCompass: faCompass,\n  faCompress: faCompress,\n  faCompressAlt: faCompressAlt,\n  faCompressArrowsAlt: faCompressArrowsAlt,\n  faConciergeBell: faConciergeBell,\n  faCookie: faCookie,\n  faCookieBite: faCookieBite,\n  faCopy: faCopy,\n  faCopyright: faCopyright,\n  faCouch: faCouch,\n  faCreditCard: faCreditCard,\n  faCrop: faCrop,\n  faCropAlt: faCropAlt,\n  faCross: faCross,\n  faCrosshairs: faCrosshairs,\n  faCrow: faCrow,\n  faCrown: faCrown,\n  faCrutch: faCrutch,\n  faCube: faCube,\n  faCubes: faCubes,\n  faCut: faCut,\n  faDatabase: faDatabase,\n  faDeaf: faDeaf,\n  faDemocrat: faDemocrat,\n  faDesktop: faDesktop,\n  faDharmachakra: faDharmachakra,\n  faDiagnoses: faDiagnoses,\n  faDice: faDice,\n  faDiceD20: faDiceD20,\n  faDiceD6: faDiceD6,\n  faDiceFive: faDiceFive,\n  faDiceFour: faDiceFour,\n  faDiceOne: faDiceOne,\n  faDiceSix: faDiceSix,\n  faDiceThree: faDiceThree,\n  faDiceTwo: faDiceTwo,\n  faDigitalTachograph: faDigitalTachograph,\n  faDirections: faDirections,\n  faDisease: faDisease,\n  faDivide: faDivide,\n  faDizzy: faDizzy,\n  faDna: faDna,\n  faDog: faDog,\n  faDollarSign: faDollarSign,\n  faDolly: faDolly,\n  faDollyFlatbed: faDollyFlatbed,\n  faDonate: faDonate,\n  faDoorClosed: faDoorClosed,\n  faDoorOpen: faDoorOpen,\n  faDotCircle: faDotCircle,\n  faDove: faDove,\n  faDownload: faDownload,\n  faDraftingCompass: faDraftingCompass,\n  faDragon: faDragon,\n  faDrawPolygon: faDrawPolygon,\n  faDrum: faDrum,\n  faDrumSteelpan: faDrumSteelpan,\n  faDrumstickBite: faDrumstickBite,\n  faDumbbell: faDumbbell,\n  faDumpster: faDumpster,\n  faDumpsterFire: faDumpsterFire,\n  faDungeon: faDungeon,\n  faEdit: faEdit,\n  faEgg: faEgg,\n  faEject: faEject,\n  faEllipsisH: faEllipsisH,\n  faEllipsisV: faEllipsisV,\n  faEnvelope: faEnvelope,\n  faEnvelopeOpen: faEnvelopeOpen,\n  faEnvelopeOpenText: faEnvelopeOpenText,\n  faEnvelopeSquare: faEnvelopeSquare,\n  faEquals: faEquals,\n  faEraser: faEraser,\n  faEthernet: faEthernet,\n  faEuroSign: faEuroSign,\n  faExchangeAlt: faExchangeAlt,\n  faExclamation: faExclamation,\n  faExclamationCircle: faExclamationCircle,\n  faExclamationTriangle: faExclamationTriangle,\n  faExpand: faExpand,\n  faExpandAlt: faExpandAlt,\n  faExpandArrowsAlt: faExpandArrowsAlt,\n  faExternalLinkAlt: faExternalLinkAlt,\n  faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n  faEye: faEye,\n  faEyeDropper: faEyeDropper,\n  faEyeSlash: faEyeSlash,\n  faFan: faFan,\n  faFastBackward: faFastBackward,\n  faFastForward: faFastForward,\n  faFaucet: faFaucet,\n  faFax: faFax,\n  faFeather: faFeather,\n  faFeatherAlt: faFeatherAlt,\n  faFemale: faFemale,\n  faFighterJet: faFighterJet,\n  faFile: faFile,\n  faFileAlt: faFileAlt,\n  faFileArchive: faFileArchive,\n  faFileAudio: faFileAudio,\n  faFileCode: faFileCode,\n  faFileContract: faFileContract,\n  faFileCsv: faFileCsv,\n  faFileDownload: faFileDownload,\n  faFileExcel: faFileExcel,\n  faFileExport: faFileExport,\n  faFileImage: faFileImage,\n  faFileImport: faFileImport,\n  faFileInvoice: faFileInvoice,\n  faFileInvoiceDollar: faFileInvoiceDollar,\n  faFileMedical: faFileMedical,\n  faFileMedicalAlt: faFileMedicalAlt,\n  faFilePdf: faFilePdf,\n  faFilePowerpoint: faFilePowerpoint,\n  faFilePrescription: faFilePrescription,\n  faFileSignature: faFileSignature,\n  faFileUpload: faFileUpload,\n  faFileVideo: faFileVideo,\n  faFileWord: faFileWord,\n  faFill: faFill,\n  faFillDrip: faFillDrip,\n  faFilm: faFilm,\n  faFilter: faFilter,\n  faFingerprint: faFingerprint,\n  faFire: faFire,\n  faFireAlt: faFireAlt,\n  faFireExtinguisher: faFireExtinguisher,\n  faFirstAid: faFirstAid,\n  faFish: faFish,\n  faFistRaised: faFistRaised,\n  faFlag: faFlag,\n  faFlagCheckered: faFlagCheckered,\n  faFlagUsa: faFlagUsa,\n  faFlask: faFlask,\n  faFlushed: faFlushed,\n  faFolder: faFolder,\n  faFolderMinus: faFolderMinus,\n  faFolderOpen: faFolderOpen,\n  faFolderPlus: faFolderPlus,\n  faFont: faFont,\n  faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n  faFootballBall: faFootballBall,\n  faForward: faForward,\n  faFrog: faFrog,\n  faFrown: faFrown,\n  faFrownOpen: faFrownOpen,\n  faFunnelDollar: faFunnelDollar,\n  faFutbol: faFutbol,\n  faGamepad: faGamepad,\n  faGasPump: faGasPump,\n  faGavel: faGavel,\n  faGem: faGem,\n  faGenderless: faGenderless,\n  faGhost: faGhost,\n  faGift: faGift,\n  faGifts: faGifts,\n  faGlassCheers: faGlassCheers,\n  faGlassMartini: faGlassMartini,\n  faGlassMartiniAlt: faGlassMartiniAlt,\n  faGlassWhiskey: faGlassWhiskey,\n  faGlasses: faGlasses,\n  faGlobe: faGlobe,\n  faGlobeAfrica: faGlobeAfrica,\n  faGlobeAmericas: faGlobeAmericas,\n  faGlobeAsia: faGlobeAsia,\n  faGlobeEurope: faGlobeEurope,\n  faGolfBall: faGolfBall,\n  faGopuram: faGopuram,\n  faGraduationCap: faGraduationCap,\n  faGreaterThan: faGreaterThan,\n  faGreaterThanEqual: faGreaterThanEqual,\n  faGrimace: faGrimace,\n  faGrin: faGrin,\n  faGrinAlt: faGrinAlt,\n  faGrinBeam: faGrinBeam,\n  faGrinBeamSweat: faGrinBeamSweat,\n  faGrinHearts: faGrinHearts,\n  faGrinSquint: faGrinSquint,\n  faGrinSquintTears: faGrinSquintTears,\n  faGrinStars: faGrinStars,\n  faGrinTears: faGrinTears,\n  faGrinTongue: faGrinTongue,\n  faGrinTongueSquint: faGrinTongueSquint,\n  faGrinTongueWink: faGrinTongueWink,\n  faGrinWink: faGrinWink,\n  faGripHorizontal: faGripHorizontal,\n  faGripLines: faGripLines,\n  faGripLinesVertical: faGripLinesVertical,\n  faGripVertical: faGripVertical,\n  faGuitar: faGuitar,\n  faHSquare: faHSquare,\n  faHamburger: faHamburger,\n  faHammer: faHammer,\n  faHamsa: faHamsa,\n  faHandHolding: faHandHolding,\n  faHandHoldingHeart: faHandHoldingHeart,\n  faHandHoldingMedical: faHandHoldingMedical,\n  faHandHoldingUsd: faHandHoldingUsd,\n  faHandHoldingWater: faHandHoldingWater,\n  faHandLizard: faHandLizard,\n  faHandMiddleFinger: faHandMiddleFinger,\n  faHandPaper: faHandPaper,\n  faHandPeace: faHandPeace,\n  faHandPointDown: faHandPointDown,\n  faHandPointLeft: faHandPointLeft,\n  faHandPointRight: faHandPointRight,\n  faHandPointUp: faHandPointUp,\n  faHandPointer: faHandPointer,\n  faHandRock: faHandRock,\n  faHandScissors: faHandScissors,\n  faHandSparkles: faHandSparkles,\n  faHandSpock: faHandSpock,\n  faHands: faHands,\n  faHandsHelping: faHandsHelping,\n  faHandsWash: faHandsWash,\n  faHandshake: faHandshake,\n  faHandshakeAltSlash: faHandshakeAltSlash,\n  faHandshakeSlash: faHandshakeSlash,\n  faHanukiah: faHanukiah,\n  faHardHat: faHardHat,\n  faHashtag: faHashtag,\n  faHatCowboy: faHatCowboy,\n  faHatCowboySide: faHatCowboySide,\n  faHatWizard: faHatWizard,\n  faHdd: faHdd,\n  faHeadSideCough: faHeadSideCough,\n  faHeadSideCoughSlash: faHeadSideCoughSlash,\n  faHeadSideMask: faHeadSideMask,\n  faHeadSideVirus: faHeadSideVirus,\n  faHeading: faHeading,\n  faHeadphones: faHeadphones,\n  faHeadphonesAlt: faHeadphonesAlt,\n  faHeadset: faHeadset,\n  faHeart: faHeart,\n  faHeartBroken: faHeartBroken,\n  faHeartbeat: faHeartbeat,\n  faHelicopter: faHelicopter,\n  faHighlighter: faHighlighter,\n  faHiking: faHiking,\n  faHippo: faHippo,\n  faHistory: faHistory,\n  faHockeyPuck: faHockeyPuck,\n  faHollyBerry: faHollyBerry,\n  faHome: faHome,\n  faHorse: faHorse,\n  faHorseHead: faHorseHead,\n  faHospital: faHospital,\n  faHospitalAlt: faHospitalAlt,\n  faHospitalSymbol: faHospitalSymbol,\n  faHospitalUser: faHospitalUser,\n  faHotTub: faHotTub,\n  faHotdog: faHotdog,\n  faHotel: faHotel,\n  faHourglass: faHourglass,\n  faHourglassEnd: faHourglassEnd,\n  faHourglassHalf: faHourglassHalf,\n  faHourglassStart: faHourglassStart,\n  faHouseDamage: faHouseDamage,\n  faHouseUser: faHouseUser,\n  faHryvnia: faHryvnia,\n  faICursor: faICursor,\n  faIceCream: faIceCream,\n  faIcicles: faIcicles,\n  faIcons: faIcons,\n  faIdBadge: faIdBadge,\n  faIdCard: faIdCard,\n  faIdCardAlt: faIdCardAlt,\n  faIgloo: faIgloo,\n  faImage: faImage,\n  faImages: faImages,\n  faInbox: faInbox,\n  faIndent: faIndent,\n  faIndustry: faIndustry,\n  faInfinity: faInfinity,\n  faInfo: faInfo,\n  faInfoCircle: faInfoCircle,\n  faItalic: faItalic,\n  faJedi: faJedi,\n  faJoint: faJoint,\n  faJournalWhills: faJournalWhills,\n  faKaaba: faKaaba,\n  faKey: faKey,\n  faKeyboard: faKeyboard,\n  faKhanda: faKhanda,\n  faKiss: faKiss,\n  faKissBeam: faKissBeam,\n  faKissWinkHeart: faKissWinkHeart,\n  faKiwiBird: faKiwiBird,\n  faLandmark: faLandmark,\n  faLanguage: faLanguage,\n  faLaptop: faLaptop,\n  faLaptopCode: faLaptopCode,\n  faLaptopHouse: faLaptopHouse,\n  faLaptopMedical: faLaptopMedical,\n  faLaugh: faLaugh,\n  faLaughBeam: faLaughBeam,\n  faLaughSquint: faLaughSquint,\n  faLaughWink: faLaughWink,\n  faLayerGroup: faLayerGroup,\n  faLeaf: faLeaf,\n  faLemon: faLemon,\n  faLessThan: faLessThan,\n  faLessThanEqual: faLessThanEqual,\n  faLevelDownAlt: faLevelDownAlt,\n  faLevelUpAlt: faLevelUpAlt,\n  faLifeRing: faLifeRing,\n  faLightbulb: faLightbulb,\n  faLink: faLink,\n  faLiraSign: faLiraSign,\n  faList: faList,\n  faListAlt: faListAlt,\n  faListOl: faListOl,\n  faListUl: faListUl,\n  faLocationArrow: faLocationArrow,\n  faLock: faLock,\n  faLockOpen: faLockOpen,\n  faLongArrowAltDown: faLongArrowAltDown,\n  faLongArrowAltLeft: faLongArrowAltLeft,\n  faLongArrowAltRight: faLongArrowAltRight,\n  faLongArrowAltUp: faLongArrowAltUp,\n  faLowVision: faLowVision,\n  faLuggageCart: faLuggageCart,\n  faLungs: faLungs,\n  faLungsVirus: faLungsVirus,\n  faMagic: faMagic,\n  faMagnet: faMagnet,\n  faMailBulk: faMailBulk,\n  faMale: faMale,\n  faMap: faMap,\n  faMapMarked: faMapMarked,\n  faMapMarkedAlt: faMapMarkedAlt,\n  faMapMarker: faMapMarker,\n  faMapMarkerAlt: faMapMarkerAlt,\n  faMapPin: faMapPin,\n  faMapSigns: faMapSigns,\n  faMarker: faMarker,\n  faMars: faMars,\n  faMarsDouble: faMarsDouble,\n  faMarsStroke: faMarsStroke,\n  faMarsStrokeH: faMarsStrokeH,\n  faMarsStrokeV: faMarsStrokeV,\n  faMask: faMask,\n  faMedal: faMedal,\n  faMedkit: faMedkit,\n  faMeh: faMeh,\n  faMehBlank: faMehBlank,\n  faMehRollingEyes: faMehRollingEyes,\n  faMemory: faMemory,\n  faMenorah: faMenorah,\n  faMercury: faMercury,\n  faMeteor: faMeteor,\n  faMicrochip: faMicrochip,\n  faMicrophone: faMicrophone,\n  faMicrophoneAlt: faMicrophoneAlt,\n  faMicrophoneAltSlash: faMicrophoneAltSlash,\n  faMicrophoneSlash: faMicrophoneSlash,\n  faMicroscope: faMicroscope,\n  faMinus: faMinus,\n  faMinusCircle: faMinusCircle,\n  faMinusSquare: faMinusSquare,\n  faMitten: faMitten,\n  faMobile: faMobile,\n  faMobileAlt: faMobileAlt,\n  faMoneyBill: faMoneyBill,\n  faMoneyBillAlt: faMoneyBillAlt,\n  faMoneyBillWave: faMoneyBillWave,\n  faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n  faMoneyCheck: faMoneyCheck,\n  faMoneyCheckAlt: faMoneyCheckAlt,\n  faMonument: faMonument,\n  faMoon: faMoon,\n  faMortarPestle: faMortarPestle,\n  faMosque: faMosque,\n  faMotorcycle: faMotorcycle,\n  faMountain: faMountain,\n  faMouse: faMouse,\n  faMousePointer: faMousePointer,\n  faMugHot: faMugHot,\n  faMusic: faMusic,\n  faNetworkWired: faNetworkWired,\n  faNeuter: faNeuter,\n  faNewspaper: faNewspaper,\n  faNotEqual: faNotEqual,\n  faNotesMedical: faNotesMedical,\n  faObjectGroup: faObjectGroup,\n  faObjectUngroup: faObjectUngroup,\n  faOilCan: faOilCan,\n  faOm: faOm,\n  faOtter: faOtter,\n  faOutdent: faOutdent,\n  faPager: faPager,\n  faPaintBrush: faPaintBrush,\n  faPaintRoller: faPaintRoller,\n  faPalette: faPalette,\n  faPallet: faPallet,\n  faPaperPlane: faPaperPlane,\n  faPaperclip: faPaperclip,\n  faParachuteBox: faParachuteBox,\n  faParagraph: faParagraph,\n  faParking: faParking,\n  faPassport: faPassport,\n  faPastafarianism: faPastafarianism,\n  faPaste: faPaste,\n  faPause: faPause,\n  faPauseCircle: faPauseCircle,\n  faPaw: faPaw,\n  faPeace: faPeace,\n  faPen: faPen,\n  faPenAlt: faPenAlt,\n  faPenFancy: faPenFancy,\n  faPenNib: faPenNib,\n  faPenSquare: faPenSquare,\n  faPencilAlt: faPencilAlt,\n  faPencilRuler: faPencilRuler,\n  faPeopleArrows: faPeopleArrows,\n  faPeopleCarry: faPeopleCarry,\n  faPepperHot: faPepperHot,\n  faPercent: faPercent,\n  faPercentage: faPercentage,\n  faPersonBooth: faPersonBooth,\n  faPhone: faPhone,\n  faPhoneAlt: faPhoneAlt,\n  faPhoneSlash: faPhoneSlash,\n  faPhoneSquare: faPhoneSquare,\n  faPhoneSquareAlt: faPhoneSquareAlt,\n  faPhoneVolume: faPhoneVolume,\n  faPhotoVideo: faPhotoVideo,\n  faPiggyBank: faPiggyBank,\n  faPills: faPills,\n  faPizzaSlice: faPizzaSlice,\n  faPlaceOfWorship: faPlaceOfWorship,\n  faPlane: faPlane,\n  faPlaneArrival: faPlaneArrival,\n  faPlaneDeparture: faPlaneDeparture,\n  faPlaneSlash: faPlaneSlash,\n  faPlay: faPlay,\n  faPlayCircle: faPlayCircle,\n  faPlug: faPlug,\n  faPlus: faPlus,\n  faPlusCircle: faPlusCircle,\n  faPlusSquare: faPlusSquare,\n  faPodcast: faPodcast,\n  faPoll: faPoll,\n  faPollH: faPollH,\n  faPoo: faPoo,\n  faPooStorm: faPooStorm,\n  faPoop: faPoop,\n  faPortrait: faPortrait,\n  faPoundSign: faPoundSign,\n  faPowerOff: faPowerOff,\n  faPray: faPray,\n  faPrayingHands: faPrayingHands,\n  faPrescription: faPrescription,\n  faPrescriptionBottle: faPrescriptionBottle,\n  faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n  faPrint: faPrint,\n  faProcedures: faProcedures,\n  faProjectDiagram: faProjectDiagram,\n  faPumpMedical: faPumpMedical,\n  faPumpSoap: faPumpSoap,\n  faPuzzlePiece: faPuzzlePiece,\n  faQrcode: faQrcode,\n  faQuestion: faQuestion,\n  faQuestionCircle: faQuestionCircle,\n  faQuidditch: faQuidditch,\n  faQuoteLeft: faQuoteLeft,\n  faQuoteRight: faQuoteRight,\n  faQuran: faQuran,\n  faRadiation: faRadiation,\n  faRadiationAlt: faRadiationAlt,\n  faRainbow: faRainbow,\n  faRandom: faRandom,\n  faReceipt: faReceipt,\n  faRecordVinyl: faRecordVinyl,\n  faRecycle: faRecycle,\n  faRedo: faRedo,\n  faRedoAlt: faRedoAlt,\n  faRegistered: faRegistered,\n  faRemoveFormat: faRemoveFormat,\n  faReply: faReply,\n  faReplyAll: faReplyAll,\n  faRepublican: faRepublican,\n  faRestroom: faRestroom,\n  faRetweet: faRetweet,\n  faRibbon: faRibbon,\n  faRing: faRing,\n  faRoad: faRoad,\n  faRobot: faRobot,\n  faRocket: faRocket,\n  faRoute: faRoute,\n  faRss: faRss,\n  faRssSquare: faRssSquare,\n  faRubleSign: faRubleSign,\n  faRuler: faRuler,\n  faRulerCombined: faRulerCombined,\n  faRulerHorizontal: faRulerHorizontal,\n  faRulerVertical: faRulerVertical,\n  faRunning: faRunning,\n  faRupeeSign: faRupeeSign,\n  faSadCry: faSadCry,\n  faSadTear: faSadTear,\n  faSatellite: faSatellite,\n  faSatelliteDish: faSatelliteDish,\n  faSave: faSave,\n  faSchool: faSchool,\n  faScrewdriver: faScrewdriver,\n  faScroll: faScroll,\n  faSdCard: faSdCard,\n  faSearch: faSearch,\n  faSearchDollar: faSearchDollar,\n  faSearchLocation: faSearchLocation,\n  faSearchMinus: faSearchMinus,\n  faSearchPlus: faSearchPlus,\n  faSeedling: faSeedling,\n  faServer: faServer,\n  faShapes: faShapes,\n  faShare: faShare,\n  faShareAlt: faShareAlt,\n  faShareAltSquare: faShareAltSquare,\n  faShareSquare: faShareSquare,\n  faShekelSign: faShekelSign,\n  faShieldAlt: faShieldAlt,\n  faShieldVirus: faShieldVirus,\n  faShip: faShip,\n  faShippingFast: faShippingFast,\n  faShoePrints: faShoePrints,\n  faShoppingBag: faShoppingBag,\n  faShoppingBasket: faShoppingBasket,\n  faShoppingCart: faShoppingCart,\n  faShower: faShower,\n  faShuttleVan: faShuttleVan,\n  faSign: faSign,\n  faSignInAlt: faSignInAlt,\n  faSignLanguage: faSignLanguage,\n  faSignOutAlt: faSignOutAlt,\n  faSignal: faSignal,\n  faSignature: faSignature,\n  faSimCard: faSimCard,\n  faSink: faSink,\n  faSitemap: faSitemap,\n  faSkating: faSkating,\n  faSkiing: faSkiing,\n  faSkiingNordic: faSkiingNordic,\n  faSkull: faSkull,\n  faSkullCrossbones: faSkullCrossbones,\n  faSlash: faSlash,\n  faSleigh: faSleigh,\n  faSlidersH: faSlidersH,\n  faSmile: faSmile,\n  faSmileBeam: faSmileBeam,\n  faSmileWink: faSmileWink,\n  faSmog: faSmog,\n  faSmoking: faSmoking,\n  faSmokingBan: faSmokingBan,\n  faSms: faSms,\n  faSnowboarding: faSnowboarding,\n  faSnowflake: faSnowflake,\n  faSnowman: faSnowman,\n  faSnowplow: faSnowplow,\n  faSoap: faSoap,\n  faSocks: faSocks,\n  faSolarPanel: faSolarPanel,\n  faSort: faSort,\n  faSortAlphaDown: faSortAlphaDown,\n  faSortAlphaDownAlt: faSortAlphaDownAlt,\n  faSortAlphaUp: faSortAlphaUp,\n  faSortAlphaUpAlt: faSortAlphaUpAlt,\n  faSortAmountDown: faSortAmountDown,\n  faSortAmountDownAlt: faSortAmountDownAlt,\n  faSortAmountUp: faSortAmountUp,\n  faSortAmountUpAlt: faSortAmountUpAlt,\n  faSortDown: faSortDown,\n  faSortNumericDown: faSortNumericDown,\n  faSortNumericDownAlt: faSortNumericDownAlt,\n  faSortNumericUp: faSortNumericUp,\n  faSortNumericUpAlt: faSortNumericUpAlt,\n  faSortUp: faSortUp,\n  faSpa: faSpa,\n  faSpaceShuttle: faSpaceShuttle,\n  faSpellCheck: faSpellCheck,\n  faSpider: faSpider,\n  faSpinner: faSpinner,\n  faSplotch: faSplotch,\n  faSprayCan: faSprayCan,\n  faSquare: faSquare,\n  faSquareFull: faSquareFull,\n  faSquareRootAlt: faSquareRootAlt,\n  faStamp: faStamp,\n  faStar: faStar,\n  faStarAndCrescent: faStarAndCrescent,\n  faStarHalf: faStarHalf,\n  faStarHalfAlt: faStarHalfAlt,\n  faStarOfDavid: faStarOfDavid,\n  faStarOfLife: faStarOfLife,\n  faStepBackward: faStepBackward,\n  faStepForward: faStepForward,\n  faStethoscope: faStethoscope,\n  faStickyNote: faStickyNote,\n  faStop: faStop,\n  faStopCircle: faStopCircle,\n  faStopwatch: faStopwatch,\n  faStopwatch20: faStopwatch20,\n  faStore: faStore,\n  faStoreAlt: faStoreAlt,\n  faStoreAltSlash: faStoreAltSlash,\n  faStoreSlash: faStoreSlash,\n  faStream: faStream,\n  faStreetView: faStreetView,\n  faStrikethrough: faStrikethrough,\n  faStroopwafel: faStroopwafel,\n  faSubscript: faSubscript,\n  faSubway: faSubway,\n  faSuitcase: faSuitcase,\n  faSuitcaseRolling: faSuitcaseRolling,\n  faSun: faSun,\n  faSuperscript: faSuperscript,\n  faSurprise: faSurprise,\n  faSwatchbook: faSwatchbook,\n  faSwimmer: faSwimmer,\n  faSwimmingPool: faSwimmingPool,\n  faSynagogue: faSynagogue,\n  faSync: faSync,\n  faSyncAlt: faSyncAlt,\n  faSyringe: faSyringe,\n  faTable: faTable,\n  faTableTennis: faTableTennis,\n  faTablet: faTablet,\n  faTabletAlt: faTabletAlt,\n  faTablets: faTablets,\n  faTachometerAlt: faTachometerAlt,\n  faTag: faTag,\n  faTags: faTags,\n  faTape: faTape,\n  faTasks: faTasks,\n  faTaxi: faTaxi,\n  faTeeth: faTeeth,\n  faTeethOpen: faTeethOpen,\n  faTemperatureHigh: faTemperatureHigh,\n  faTemperatureLow: faTemperatureLow,\n  faTenge: faTenge,\n  faTerminal: faTerminal,\n  faTextHeight: faTextHeight,\n  faTextWidth: faTextWidth,\n  faTh: faTh,\n  faThLarge: faThLarge,\n  faThList: faThList,\n  faTheaterMasks: faTheaterMasks,\n  faThermometer: faThermometer,\n  faThermometerEmpty: faThermometerEmpty,\n  faThermometerFull: faThermometerFull,\n  faThermometerHalf: faThermometerHalf,\n  faThermometerQuarter: faThermometerQuarter,\n  faThermometerThreeQuarters: faThermometerThreeQuarters,\n  faThumbsDown: faThumbsDown,\n  faThumbsUp: faThumbsUp,\n  faThumbtack: faThumbtack,\n  faTicketAlt: faTicketAlt,\n  faTimes: faTimes,\n  faTimesCircle: faTimesCircle,\n  faTint: faTint,\n  faTintSlash: faTintSlash,\n  faTired: faTired,\n  faToggleOff: faToggleOff,\n  faToggleOn: faToggleOn,\n  faToilet: faToilet,\n  faToiletPaper: faToiletPaper,\n  faToiletPaperSlash: faToiletPaperSlash,\n  faToolbox: faToolbox,\n  faTools: faTools,\n  faTooth: faTooth,\n  faTorah: faTorah,\n  faToriiGate: faToriiGate,\n  faTractor: faTractor,\n  faTrademark: faTrademark,\n  faTrafficLight: faTrafficLight,\n  faTrailer: faTrailer,\n  faTrain: faTrain,\n  faTram: faTram,\n  faTransgender: faTransgender,\n  faTransgenderAlt: faTransgenderAlt,\n  faTrash: faTrash,\n  faTrashAlt: faTrashAlt,\n  faTrashRestore: faTrashRestore,\n  faTrashRestoreAlt: faTrashRestoreAlt,\n  faTree: faTree,\n  faTrophy: faTrophy,\n  faTruck: faTruck,\n  faTruckLoading: faTruckLoading,\n  faTruckMonster: faTruckMonster,\n  faTruckMoving: faTruckMoving,\n  faTruckPickup: faTruckPickup,\n  faTshirt: faTshirt,\n  faTty: faTty,\n  faTv: faTv,\n  faUmbrella: faUmbrella,\n  faUmbrellaBeach: faUmbrellaBeach,\n  faUnderline: faUnderline,\n  faUndo: faUndo,\n  faUndoAlt: faUndoAlt,\n  faUniversalAccess: faUniversalAccess,\n  faUniversity: faUniversity,\n  faUnlink: faUnlink,\n  faUnlock: faUnlock,\n  faUnlockAlt: faUnlockAlt,\n  faUpload: faUpload,\n  faUser: faUser,\n  faUserAlt: faUserAlt,\n  faUserAltSlash: faUserAltSlash,\n  faUserAstronaut: faUserAstronaut,\n  faUserCheck: faUserCheck,\n  faUserCircle: faUserCircle,\n  faUserClock: faUserClock,\n  faUserCog: faUserCog,\n  faUserEdit: faUserEdit,\n  faUserFriends: faUserFriends,\n  faUserGraduate: faUserGraduate,\n  faUserInjured: faUserInjured,\n  faUserLock: faUserLock,\n  faUserMd: faUserMd,\n  faUserMinus: faUserMinus,\n  faUserNinja: faUserNinja,\n  faUserNurse: faUserNurse,\n  faUserPlus: faUserPlus,\n  faUserSecret: faUserSecret,\n  faUserShield: faUserShield,\n  faUserSlash: faUserSlash,\n  faUserTag: faUserTag,\n  faUserTie: faUserTie,\n  faUserTimes: faUserTimes,\n  faUsers: faUsers,\n  faUsersCog: faUsersCog,\n  faUsersSlash: faUsersSlash,\n  faUtensilSpoon: faUtensilSpoon,\n  faUtensils: faUtensils,\n  faVectorSquare: faVectorSquare,\n  faVenus: faVenus,\n  faVenusDouble: faVenusDouble,\n  faVenusMars: faVenusMars,\n  faVial: faVial,\n  faVials: faVials,\n  faVideo: faVideo,\n  faVideoSlash: faVideoSlash,\n  faVihara: faVihara,\n  faVirus: faVirus,\n  faVirusSlash: faVirusSlash,\n  faViruses: faViruses,\n  faVoicemail: faVoicemail,\n  faVolleyballBall: faVolleyballBall,\n  faVolumeDown: faVolumeDown,\n  faVolumeMute: faVolumeMute,\n  faVolumeOff: faVolumeOff,\n  faVolumeUp: faVolumeUp,\n  faVoteYea: faVoteYea,\n  faVrCardboard: faVrCardboard,\n  faWalking: faWalking,\n  faWallet: faWallet,\n  faWarehouse: faWarehouse,\n  faWater: faWater,\n  faWaveSquare: faWaveSquare,\n  faWeight: faWeight,\n  faWeightHanging: faWeightHanging,\n  faWheelchair: faWheelchair,\n  faWifi: faWifi,\n  faWind: faWind,\n  faWindowClose: faWindowClose,\n  faWindowMaximize: faWindowMaximize,\n  faWindowMinimize: faWindowMinimize,\n  faWindowRestore: faWindowRestore,\n  faWineBottle: faWineBottle,\n  faWineGlass: faWineGlass,\n  faWineGlassAlt: faWineGlassAlt,\n  faWonSign: faWonSign,\n  faWrench: faWrench,\n  faXRay: faXRay,\n  faYenSign: faYenSign,\n  faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","import React, {Component} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faColumns, faRedo, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport { saveState } from '../../../actions/dashboard';\n\nclass TopButtons extends Component {\n    constructor() {\n        super();\n        this.state = {\n            displayColumnList: false,\n        }\n    }\n\n    buildFormData = (request, data, parentKey) => {\n        if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {\n          Object.keys(data).forEach(key => {\n            this.buildFormData(request, data[key], parentKey ? `${parentKey}[${key}]` : `[${key}]`);\n          });\n        } else {\n            const value = data === null ? '' : data;\n            let finalKey = parentKey;\n            if(parentKey.indexOf('$') > -1 && !this.props.component.focus === 'Contract') {\n                finalKey = parentKey.replace('$','');\n            }\n            request[`data${finalKey}`] = value;\n        }\n    }\n\n    jsonToFormData = (data, request) => {\n        this.buildFormData(request, data);\n\n        return request;\n    }\n\n    saveColumnState = (columns) => {\n        let columnDataArray = [];\n        columns.map((column) => {\n            columnDataArray.push({\n                field: column.field,\n                hidden: (column.hidden) ? true : false,\n                size: column.size,\n            });\n            return column;\n        });\n\n        const request = {\n            view: this.props.viewId,\n            grid: this.props.componentId,\n        };\n\n        let sortDataArray = [];\n\n        this.props.sort.map((item) => {\n            sortDataArray.push({\n                field: item.field,\n                direction: item.direction\n            })\n        })\n\n        const formValues = {\n            columns: columnDataArray,\n            sortData: sortDataArray,\n        }\n\n        this.jsonToFormData(formValues, request);\n        saveState(request);\n\n        this.setState({\n            displayColumnList: false,\n        });\n    }\n\n    resetColumnState = () => {\n        const request = {\n            view: this.props.viewId,\n            grid: this.props.componentId,\n            data: null\n        };\n\n        saveState(request);\n\n        this.setState({\n            displayColumnList: false,\n        }, () => this.props.refreshComponent());\n    }\n\n\n    render() {\n        const { displayColumnList } = this.state;\n        const { columns, hideColumn, refreshComponent } = this.props;\n        return (\n            <div className=\"top-menu-actions\">\n                <button className=\"btn btn-rounded btn-icon btn-default btn-flat m-r-10\" onClick={() => {\n                    refreshComponent()\n                }}>\n                    <FontAwesomeIcon icon={faRedo} />\n                </button>\n                <div>\n                    <button className=\"btn btn-rounded btn-icon btn-default btn-flat\" onClick={() => {\n                        const showList = displayColumnList\n                        this.setState({displayColumnList: !showList});\n                    }}>\n                        <FontAwesomeIcon icon={faColumns} />\n                    </button>\n                    <div>\n                        {displayColumnList ? (\n                            <div className=\"column-list\">\n                                {columns.map((column, i) =>\n                                    <div className=\"column-list-item\" key={i} onClick={() => hideColumn(column.field)}>\n                                        <i>{column.hidden ? '' : <FontAwesomeIcon icon={faCheck} />}</i>\n                                        <span>{column.field}</span>\n                                    </div>\n                                )}\n                                <br/>\n                                <button onClick={() => this.saveColumnState(columns)} >Save grid state</button>\n                                <br/>\n                                <button onClick={() => this.resetColumnState()} >Reset default state</button>\n                                <br/>\n                            </div>\n                        ) : ''}\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nexport default TopButtons;\n","import React, {Component} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearchPlus } from '@fortawesome/free-solid-svg-icons';\n\n\nclass SearchBox extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            search: this.props.search,\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.search.length !== prevProps.search.length && prevProps.search.length !== 0) {\n            this.setState({\n                search: [],\n            })\n        }\n    }\n\n    render() {\n        const {onSearch, searchFunc, showSearchModal} = this.props;\n        return (\n\n            <div className=\"search-form\">\n                <form onSubmit={e => e.preventDefault()}>\n                    <div className=\"form-group\">\n                        <div className=\"input-group\">\n                            <input\n                                className=\"form-control rounded-left\"\n                                type=\"text\"\n                                value={this.state.search}\n                                onChange={(e) => {\n                                    this.setState({\n                                        search: e.target.value\n                                    }, () => {\n                                        onSearch(this.state.search)\n                                    })\n                                }}\n                            />\n                            <button\n                                className=\"input-group-addon rounded-right\"\n                                type=\"submit\"\n                                onClick={searchFunc}\n                            ><FontAwesomeIcon icon={faSearchPlus} /></button>\n                        </div>\n                    </div>\n                    {(this.props.isSearchable) ? (\n                        <div className=\"top-menu-actions\">\n                            <button className=\"btn btn-rounded btn-icon btn-default btn-flat m-l-10\" onClick={() => {\n                                showSearchModal()\n                            }}>\n                                <FontAwesomeIcon icon={faSearchPlus} />\n                            </button>\n                        </div>\n                    ) : (null)}\n                </form>\n            </div>\n        )\n    }\n}\n\nexport default SearchBox;\n","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","function removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\n/**\n * Return the actively focused element safely.\n *\n * @param doc the document to checl\n */\n\nexport default function activeElement(doc) {\n  if (doc === void 0) {\n    doc = ownerDocument();\n  }\n\n  // Support: IE 9 only\n  // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n  try {\n    var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n    // document.activeElement from an <iframe>\n\n    if (!active || !active.nodeName) return null;\n    return active;\n  } catch (e) {\n    /* ie throws if no active element */\n    return doc.body;\n  }\n}","/* eslint-disable no-bitwise, no-cond-assign */\n// HTML DOM and SVG DOM may have different support levels,\n// so we need to check on context instead of a document root element.\nexport default function contains(context, node) {\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","function removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n *   fetchdata().then((newData) => {\n *      if (isMounted()) {\n *        setData(newData);\n *      }\n *   })\n * })\n * ```\n */\n\nexport default function useMounted() {\n  var mounted = useRef(true);\n  var isMounted = useRef(function () {\n    return mounted.current;\n  });\n  useEffect(function () {\n    return function () {\n      mounted.current = false;\n    };\n  }, []);\n  return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n  var onUnmount = useUpdatedRef(fn);\n  useEffect(function () {\n    return function () {\n      return onUnmount.current();\n    };\n  }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n  var valueRef = useRef(value);\n  valueRef.current = value;\n  return valueRef;\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n  var ref = useRef(null);\n  useEffect(function () {\n    ref.current = value;\n  });\n  return ref.current;\n}","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded befor being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n  var ref = useRef(value);\n  useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  var ref = useCommittedRef(fn);\n  return useCallback(function () {\n    return ref.current && ref.current.apply(ref, arguments);\n  }, [ref]);\n}","import hasClass from './hasClass';\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","export default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    ;\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import ownerWindow from './ownerWindow';\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (canUseDOM) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n  if ('window' in node && node.window === node) return node;\n  if (isDocument(node)) return node.defaultView || false;\n  return false;\n}","export default function isDocument(element) {\n  return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n  var win = isWindow(node) || doc.defaultView;\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n  var win = isWindow(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nexport function ariaHidden(show, node) {\n  if (!node) return;\n\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\nexport function hideSiblings(container, _ref2) {\n  var dialog = _ref2.dialog,\n      backdrop = _ref2.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\nexport function showSiblings(container, _ref3) {\n  var dialog = _ref3.dialog,\n      backdrop = _ref3.backdrop;\n  siblings(container, [dialog, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n\n    return false;\n  });\n  return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = void 0;\n    this.handleContainerOverflow = void 0;\n    this.modals = void 0;\n    this.containers = void 0;\n    this.data = void 0;\n    this.scrollbarSize = void 0;\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = getScrollbarSize();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden'\n    }; // we are only interested in the actual `style` here\n    // because we will override it\n\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n    }\n\n    css(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var style = containerState.style;\n    Object.keys(style).forEach(function (key) {\n      container.style[key] = style[key];\n    });\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      hideSiblings(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      // right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: isOverflowing(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        showSiblings(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      // otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      ariaHidden(false, dialog);\n      ariaHidden(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nexport default ModalManager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\n/* eslint-disable react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n  if (!manager) manager = new ModalManager();\n  return manager;\n}\n\nfunction useModalManager(provided) {\n  var modalManager = provided || getManager();\n  var modal = useRef({\n    dialog: null,\n    backdrop: null\n  });\n  return Object.assign(modal.current, {\n    add: function add(container, className) {\n      return modalManager.add(modal.current, container, className);\n    },\n    remove: function remove() {\n      return modalManager.remove(modal.current);\n    },\n    isTopModal: function isTopModal() {\n      return modalManager.isTopModal(modal.current);\n    },\n    setDialogRef: useCallback(function (ref) {\n      modal.current.dialog = ref;\n    }, []),\n    setBackdropRef: useCallback(function (ref) {\n      modal.current.backdrop = ref;\n    }, [])\n  });\n}\n\nvar Modal = forwardRef(function (_ref, ref) {\n  var _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$role = _ref.role,\n      role = _ref$role === void 0 ? 'dialog' : _ref$role,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      _ref$backdrop = _ref.backdrop,\n      backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n      _ref$keyboard = _ref.keyboard,\n      keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n      onBackdropClick = _ref.onBackdropClick,\n      onEscapeKeyDown = _ref.onEscapeKeyDown,\n      transition = _ref.transition,\n      backdropTransition = _ref.backdropTransition,\n      _ref$autoFocus = _ref.autoFocus,\n      autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n      _ref$enforceFocus = _ref.enforceFocus,\n      enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n      _ref$restoreFocus = _ref.restoreFocus,\n      restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n      restoreFocusOptions = _ref.restoreFocusOptions,\n      renderDialog = _ref.renderDialog,\n      _ref$renderBackdrop = _ref.renderBackdrop,\n      renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n    return /*#__PURE__*/React.createElement(\"div\", props);\n  } : _ref$renderBackdrop,\n      providedManager = _ref.manager,\n      containerRef = _ref.container,\n      containerClassName = _ref.containerClassName,\n      onShow = _ref.onShow,\n      _ref$onHide = _ref.onHide,\n      onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n      onExit = _ref.onExit,\n      onExited = _ref.onExited,\n      onExiting = _ref.onExiting,\n      onEnter = _ref.onEnter,\n      onEntering = _ref.onEntering,\n      onEntered = _ref.onEntered,\n      rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n  var container = useWaitForDOMRef(containerRef);\n  var modal = useModalManager(providedManager);\n  var isMounted = useMounted();\n  var prevShow = usePrevious(show);\n\n  var _useState = useState(!show),\n      exited = _useState[0],\n      setExited = _useState[1];\n\n  var lastFocusRef = useRef(null);\n  useImperativeHandle(ref, function () {\n    return modal;\n  }, [modal]);\n\n  if (canUseDOM && !prevShow && show) {\n    lastFocusRef.current = activeElement();\n  }\n\n  if (!transition && !show && !exited) {\n    setExited(true);\n  } else if (show && exited) {\n    setExited(false);\n  }\n\n  var handleShow = useEventCallback(function () {\n    modal.add(container, containerClassName);\n    removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n    removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n    // and so steals focus from it\n    function () {\n      return setTimeout(handleEnforceFocus);\n    }, true);\n\n    if (onShow) {\n      onShow();\n    } // autofocus after onShow to not trigger a focus event for previous\n    // modals before this one is shown.\n\n\n    if (autoFocus) {\n      var currentActiveElement = activeElement(document);\n\n      if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n        lastFocusRef.current = currentActiveElement;\n        modal.dialog.focus();\n      }\n    }\n  });\n  var handleHide = useEventCallback(function () {\n    modal.remove();\n    removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n    removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n    if (restoreFocus) {\n      var _lastFocusRef$current;\n\n      // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n      (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n      lastFocusRef.current = null;\n    }\n  }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n  // Show logic when:\n  //  - show is `true` _and_ `container` has resolved\n\n  useEffect(function () {\n    if (!show || !container) return;\n    handleShow();\n  }, [show, container,\n  /* should never change: */\n  handleShow]); // Hide cleanup logic when:\n  //  - `exited` switches to true\n  //  - component unmounts;\n\n  useEffect(function () {\n    if (!exited) return;\n    handleHide();\n  }, [exited, handleHide]);\n  useWillUnmount(function () {\n    handleHide();\n  }); // --------------------------------\n\n  var handleEnforceFocus = useEventCallback(function () {\n    if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n      return;\n    }\n\n    var currentActiveElement = activeElement();\n\n    if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n      modal.dialog.focus();\n    }\n  });\n  var handleBackdropClick = useEventCallback(function (e) {\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n    if (backdrop === true) {\n      onHide();\n    }\n  });\n  var handleDocumentKeyDown = useEventCallback(function (e) {\n    if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n      if (!e.defaultPrevented) {\n        onHide();\n      }\n    }\n  });\n  var removeFocusListenerRef = useRef();\n  var removeKeydownListenerRef = useRef();\n\n  var handleHidden = function handleHidden() {\n    setExited(true);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    onExited == null ? void 0 : onExited.apply(void 0, args);\n  };\n\n  var Transition = transition;\n\n  if (!container || !(show || Transition && !exited)) {\n    return null;\n  }\n\n  var dialogProps = _extends(_extends({\n    role: role,\n    ref: modal.setDialogRef,\n    // apparently only works on the dialog role element\n    'aria-modal': role === 'dialog' ? true : undefined\n  }, rest), {}, {\n    style: style,\n    className: className,\n    tabIndex: -1\n  });\n\n  var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, React.cloneElement(children, {\n    role: 'document'\n  }));\n\n  if (Transition) {\n    dialog = /*#__PURE__*/React.createElement(Transition, {\n      appear: true,\n      unmountOnExit: true,\n      \"in\": !!show,\n      onExit: onExit,\n      onExiting: onExiting,\n      onExited: handleHidden,\n      onEnter: onEnter,\n      onEntering: onEntering,\n      onEntered: onEntered\n    }, dialog);\n  }\n\n  var backdropElement = null;\n\n  if (backdrop) {\n    var BackdropTransition = backdropTransition;\n    backdropElement = renderBackdrop({\n      ref: modal.setBackdropRef,\n      onClick: handleBackdropClick\n    });\n\n    if (BackdropTransition) {\n      backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n        appear: true,\n        \"in\": !!show\n      }, backdropElement);\n    }\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: PropTypes.bool,\n\n  /**\n   * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: PropTypes.any,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: PropTypes.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: PropTypes.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js static\n   * renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: PropTypes.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: PropTypes.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   *\n   * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n   */\n  onEscapeKeyDown: PropTypes.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: PropTypes.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: PropTypes.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: PropTypes.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: PropTypes.elementType,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: PropTypes.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: PropTypes.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: PropTypes.bool,\n\n  /**\n   * Options passed to focus function when `restoreFocus` is set to `true`\n   *\n   * @link  https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n   */\n  restoreFocusOptions: PropTypes.shape({\n    preventScroll: PropTypes.bool\n  }),\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: PropTypes.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n  Manager: ModalManager\n});","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n  var _ref;\n\n  if (typeof document === 'undefined') return null;\n  if (ref == null) return ownerDocument().body;\n  if (typeof ref === 'function') ref = ref();\n  if (ref && 'current' in ref) ref = ref.current;\n  if ((_ref = ref) == null ? void 0 : _ref.nodeType) return ref || null;\n  return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n  var _useState = useState(function () {\n    return resolveContainerRef(ref);\n  }),\n      resolvedRef = _useState[0],\n      setRef = _useState[1];\n\n  if (!resolvedRef) {\n    var earlyRef = resolveContainerRef(ref);\n    if (earlyRef) setRef(earlyRef);\n  }\n\n  useEffect(function () {\n    if (onResolved && resolvedRef) {\n      onResolved(resolvedRef);\n    }\n  }, [onResolved, resolvedRef]);\n  useEffect(function () {\n    var nextRef = resolveContainerRef(ref);\n\n    if (nextRef !== resolvedRef) {\n      setRef(nextRef);\n    }\n  }, [ref, resolvedRef]);\n  return resolvedRef;\n}","import ownerWindow from './ownerWindow';\nexport default function getComputedStyle(node, psuedoElement) {\n  return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n  var doc = ownerDocument(node);\n  return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n  return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n  var css = '';\n  var transforms = '';\n\n  if (typeof property === 'string') {\n    return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n  }\n\n  Object.keys(property).forEach(function (key) {\n    var value = property[key];\n\n    if (!value && value !== 0) {\n      node.style.removeProperty(hyphenate(key));\n    } else if (isTransform(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += hyphenate(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += \"transform: \" + transforms + \";\";\n  }\n\n  node.style.cssText += \";\" + css;\n}\n\nexport default style;","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n    _this.adjustAndStore = function (prop, element, adjust) {\n      var _css;\n\n      var actual = element.style[prop];\n      element.dataset[prop] = actual;\n      css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n    };\n\n    _this.restore = function (prop, element) {\n      var value = element.dataset[prop];\n\n      if (value !== undefined) {\n        var _css2;\n\n        delete element.dataset[prop];\n        css(element, (_css2 = {}, _css2[prop] = value, _css2));\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = getScrollbarSize();\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('paddingRight', el, size);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, -size);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this3 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this3.restore('paddingRight', el);\n    });\n    qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n    qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","import canUseDOM from './canUseDOM';\nimport css from './css';\nimport listen from './listen';\nexport var TRANSITION_SUPPORTED = canUseDOM && 'ontransitionend' in window;\nexport function parseDuration(node) {\n  var str = css(node, 'transitionDuration') || '';\n  var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nfunction triggerTransitionEnd(element) {\n  var evt = document.createEvent('HTMLEvents');\n  evt.initEvent('transitionend', true, true);\n  element.dispatchEvent(evt);\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n  if (padding === void 0) {\n    padding = 5;\n  }\n\n  var called = false;\n  var handle = setTimeout(function () {\n    if (!called) triggerTransitionEnd(element);\n  }, duration + padding);\n  var remove = listen(element, 'transitionend', function () {\n    called = true;\n  }, {\n    once: true\n  });\n  return function () {\n    clearTimeout(handle);\n    remove();\n  };\n}\n\nfunction transitionEnd(element, handler, duration) {\n  if (duration == null) duration = parseDuration(element) || 0;\n  var removeEmulate = emulateTransitionEnd(element, duration);\n  var remove = listen(element, 'transitionend', handler);\n  return function () {\n    removeEmulate();\n    remove();\n  };\n}\n\nexport default transitionEnd;","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = React.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"className\", \"children\"]);\n\n  var handleEnter = useCallback(function (node) {\n    triggerBrowserReflow(node);\n    if (props.onEnter) props.onEnter(node);\n  }, [props]);\n  return /*#__PURE__*/React.createElement(Transition, _extends({\n    ref: ref,\n    addEndListener: transitionEnd\n  }, props, {\n    onEnter: handleEnter\n  }), function (status, innerProps) {\n    return React.cloneElement(children, _extends({}, innerProps, {\n      className: classNames('fade', className, children.props.className, fadeStyles[status])\n    }));\n  });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n  node.offsetHeight; // eslint-disable-line no-unused-expressions\n}","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport forwardRef from '@restart/context/forwardRef';\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n  var prefixes = _ref.prefixes,\n      children = _ref.children;\n  var copiedPrefixes = useMemo(function () {\n    return _extends({}, prefixes);\n  }, [prefixes]);\n  return /*#__PURE__*/React.createElement(Provider, {\n    value: copiedPrefixes\n  }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = useContext(ThemeContext);\n  return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  return forwardRef(function (_ref2, ref) {\n    var props = _extends({}, _ref2);\n\n    props[forwardRefAs] = ref; // eslint-disable-next-line react/prop-types\n\n    var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n      bsPrefix: bsPrefix\n    }));\n  }, {\n    displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n  });\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\nexport default function createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n      _ref$Component = _ref.Component,\n      Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = React.forwardRef( // eslint-disable-next-line react/prop-types\n  function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return /*#__PURE__*/React.createElement(Tag, _extends({\n      ref: ref,\n      className: classNames(className, resolvedPrefix)\n    }, props));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = React.createContext({\n  onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n  }), /*#__PURE__*/React.createElement(\"div\", {\n    className: bsPrefix + \"-content\"\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n  label: PropTypes.string.isRequired,\n  onClick: PropTypes.func\n};\nvar defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = React.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"label\", \"onClick\", \"className\"]);\n\n  return /*#__PURE__*/React.createElement(\"button\", _extends({\n    ref: ref,\n    type: \"button\",\n    className: classNames('close', className),\n    onClick: onClick\n  }, props), /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only\"\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = useContext(ModalContext);\n  var handleClick = useEventCallback(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classNames(className, bsPrefix)\n  }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n    label: closeLabel,\n    onClick: handleClick\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n  return React.forwardRef(function (p, ref) {\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classNames(p.className, className)\n    }));\n  });\n});","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport React from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport Body from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport Footer from './ModalFooter';\nimport Header from './ModalHeader';\nimport Title from './ModalTitle';\nimport { createBootstrapComponent } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, props);\n}\n\nfunction BackdropTransition(props) {\n  return /*#__PURE__*/React.createElement(Fade, props);\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n    _this.state = {\n      style: {}\n    };\n    _this.modalContext = {\n      onHide: function onHide() {\n        return _this.props.onHide();\n      }\n    };\n\n    _this.setModalRef = function (ref) {\n      _this._modal = ref;\n    };\n\n    _this.handleDialogMouseDown = function () {\n      _this._waitingForMouseUp = true;\n    };\n\n    _this.handleMouseUp = function (e) {\n      if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n        _this._ignoreBackdropClick = true;\n      }\n\n      _this._waitingForMouseUp = false;\n    };\n\n    _this.handleClick = function (e) {\n      if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n        _this._ignoreBackdropClick = false;\n        return;\n      }\n\n      _this.props.onHide();\n    };\n\n    _this.handleEnter = function (node) {\n      var _this$props;\n\n      if (node) {\n        node.style.display = 'block';\n\n        _this.updateDialogStyle(node);\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n    };\n\n    _this.handleEntering = function (node) {\n      var _this$props2;\n\n      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        args[_key3 - 1] = arguments[_key3];\n      }\n\n      if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n      addEventListener(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleExited = function (node) {\n      var _this$props3;\n\n      if (node) node.style.display = ''; // RHL removes it sometimes\n\n      for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n\n      if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n      removeEventListener(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleWindowResize = function () {\n      _this.updateDialogStyle(_this._modal.dialog);\n    };\n\n    _this.getModalManager = function () {\n      if (_this.props.manager) {\n        return _this.props.manager;\n      }\n\n      if (!manager) {\n        manager = new BootstrapModalManager();\n      }\n\n      return manager;\n    };\n\n    _this.renderBackdrop = function (props) {\n      var _this$props4 = _this.props,\n          bsPrefix = _this$props4.bsPrefix,\n          backdropClassName = _this$props4.backdropClassName,\n          animation = _this$props4.animation;\n      return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n        className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n      }));\n    };\n\n    return _this;\n  }\n\n  var _proto = Modal.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    // Clean up the listener if we need to.\n    removeEventListener(window, 'resize', this.handleWindowResize);\n  };\n\n  _proto.updateDialogStyle = function updateDialogStyle(node) {\n    if (!canUseDOM) return;\n    var containerIsOverflowing = this.getModalManager().isContainerOverflowing(this._modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n    this.setState({\n      style: {\n        paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n        paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n      }\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props5 = this.props,\n        bsPrefix = _this$props5.bsPrefix,\n        className = _this$props5.className,\n        style = _this$props5.style,\n        dialogClassName = _this$props5.dialogClassName,\n        children = _this$props5.children,\n        Dialog = _this$props5.dialogAs,\n        ariaLabelledby = _this$props5['aria-labelledby'],\n        show = _this$props5.show,\n        animation = _this$props5.animation,\n        backdrop = _this$props5.backdrop,\n        keyboard = _this$props5.keyboard,\n        onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n        onShow = _this$props5.onShow,\n        onHide = _this$props5.onHide,\n        container = _this$props5.container,\n        autoFocus = _this$props5.autoFocus,\n        enforceFocus = _this$props5.enforceFocus,\n        restoreFocus = _this$props5.restoreFocus,\n        restoreFocusOptions = _this$props5.restoreFocusOptions,\n        onEntered = _this$props5.onEntered,\n        onExit = _this$props5.onExit,\n        onExiting = _this$props5.onExiting,\n        _ = _this$props5.onExited,\n        _1 = _this$props5.onEntering,\n        _6 = _this$props5.onEnter,\n        _4 = _this$props5.onEntering,\n        _2 = _this$props5.backdropClassName,\n        props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n    var clickHandler = backdrop === true ? this.handleClick : null;\n\n    var baseModalStyle = _extends({}, style, {}, this.state.style); // Sets `display` always block when `animation` is false\n\n\n    if (!animation) baseModalStyle.display = 'block';\n    return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n      value: this.modalContext\n    }, /*#__PURE__*/React.createElement(BaseModal, {\n      show: show,\n      backdrop: backdrop,\n      container: container,\n      keyboard: keyboard,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      restoreFocusOptions: restoreFocusOptions,\n      onEscapeKeyDown: onEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEntered: onEntered,\n      onExit: onExit,\n      onExiting: onExiting,\n      manager: this.getModalManager(),\n      ref: this.setModalRef,\n      style: baseModalStyle,\n      className: classNames(className, bsPrefix),\n      containerClassName: bsPrefix + \"-open\",\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: this.renderBackdrop,\n      onClick: clickHandler,\n      onMouseUp: this.handleMouseUp,\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onExited: this.handleExited,\n      'aria-labelledby': ariaLabelledby\n    }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n      onMouseDown: this.handleDialogMouseDown,\n      className: dialogClassName\n    }), children)));\n  };\n\n  return Modal;\n}(React.Component);\n\nModal.defaultProps = defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal, 'modal');\nDecoratedModal.Body = Body;\nDecoratedModal.Header = Header;\nDecoratedModal.Title = Title;\nDecoratedModal.Footer = Footer;\nDecoratedModal.Dialog = ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default DecoratedModal;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n  Component: DivStyledAsH4\n});","function areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (newInputs[i] !== lastInputs[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = createElement(type, newProps);\n\n  return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n  // use Context.read for the theme when it's stable\n  if (typeof props.css === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type;\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  createElementArgArray[1] = newProps;\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n\n    return ele;\n  });\n});\n\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };\n","// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, state, className) {\n  var arr = [className];\n\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\" + applyPrefixToName(prefix, key));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (Array.isArray(value)) return value.filter(Boolean);\n  if (typeof value === 'object' && value !== null) return [value];\n  return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var newValue = onInputChange(inputValue, actionMeta);\n    if (typeof newValue === 'string') return newValue;\n  }\n\n  return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  var docEl = document.documentElement; // suck it, flow...\n\n  if (style.position === 'fixed') return docEl;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to, duration, callback) {\n  if (duration === void 0) {\n    duration = 200;\n  }\n\n  if (callback === void 0) {\n    callback = noop;\n  }\n\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n\n    if (currentTime < duration) {\n      window.requestAnimationFrame(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n\n  animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\nexport { getScrollParent as a, getScrollTop as b, animatedScrollTo as c, isMobileDevice as d, cleanValue as e, scrollIntoView as f, getBoundingClientObj as g, classNames as h, isTouchCapable as i, isDocumentElement as j, handleInputChange as k, noop as n, scrollTo as s };\n","import { Component } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { g as getBoundingClientObj, a as getScrollParent, b as getScrollTop, c as animatedScrollTo, s as scrollTo } from './utils-06b0d5a4.browser.esm.js';\nimport _css from '@emotion/css';\nimport AutosizeInput from 'react-input-autosize';\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: maxHeight\n  }; // something went wrong, return default state\n\n  if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = window.innerHeight;\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        } // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      } // 4. Forked beviour when there isn't enough space below\n      // AUTO: flip the menu, render above\n\n\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n      if (placement === 'bottom') {\n        scrollTo(scrollParent, scrollDown);\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      }\n\n      break;\n\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      } // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n\n\n      return {\n        placement: 'bottom',\n        maxHeight: maxHeight\n      };\n\n    default:\n      throw new Error(\"Invalid placement provided \\\"\" + placement + \"\\\".\");\n  } // fulfil contract with flow: implicit return value of undefined\n\n\n  return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {\n    label: 'menu'\n  }, _ref3[alignToControl(placement)] = '100%', _ref3.backgroundColor = colors.neutral0, _ref3.borderRadius = borderRadius, _ref3.boxShadow = '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)', _ref3.marginBottom = spacing.menuGutter, _ref3.marginTop = spacing.menuGutter, _ref3.position = 'absolute', _ref3.width = '100%', _ref3.zIndex = 1, _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose(MenuPlacer, _Component);\n\n  function MenuPlacer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n    _this.state = {\n      maxHeight: _this.props.maxMenuHeight,\n      placement: null\n    };\n\n    _this.getPlacement = function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      var getPortalPlacement = _this.context.getPortalPlacement;\n      if (!ref) return; // DO NOT scroll if position is fixed\n\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    };\n\n    _this.getUpdatedProps = function () {\n      var menuPlacement = _this.props.menuPlacement;\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n      return _extends({}, _this.props, {\n        placement: placement,\n        maxHeight: _this.state.maxHeight\n      });\n    };\n\n    return _this;\n  }\n\n  var _proto = MenuPlacer.prototype;\n\n  _proto.render = function render() {\n    var children = this.props.children;\n    return children({\n      ref: this.getPlacement,\n      placerProps: this.getUpdatedProps()\n    });\n  };\n\n  return MenuPlacer;\n}(Component);\nMenuPlacer.contextTypes = {\n  getPortalPlacement: PropTypes.func\n};\n\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('menu', props),\n    className: cx({\n      menu: true\n    }, className)\n  }, innerProps, {\n    ref: innerRef\n  }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n  var maxHeight = _ref4.maxHeight,\n      baseUnit = _ref4.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isMulti = props.isMulti,\n      innerRef = props.innerRef;\n  return jsx(\"div\", {\n    css: getStyles('menuList', props),\n    className: cx({\n      'menu-list': true,\n      'menu-list--is-multi': isMulti\n    }, className),\n    ref: innerRef\n  }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n  var _ref5$theme = _ref5.theme,\n      baseUnit = _ref5$theme.spacing.baseUnit,\n      colors = _ref5$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: baseUnit * 2 + \"px \" + baseUnit * 3 + \"px\",\n    textAlign: 'center'\n  };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('noOptionsMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--no-options': true\n    }, className)\n  }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends({\n    css: getStyles('loadingMessage', props),\n    className: cx({\n      'menu-notice': true,\n      'menu-notice--loading': true\n    }, className)\n  }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n  var rect = _ref6.rect,\n      offset = _ref6.offset,\n      position = _ref6.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inheritsLoose(MenuPortal, _Component2);\n\n  function MenuPortal() {\n    var _this2;\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _Component2.call.apply(_Component2, [this].concat(args)) || this;\n    _this2.state = {\n      placement: null\n    };\n\n    _this2.getPortalPlacement = function (_ref7) {\n      var placement = _ref7.placement;\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n      if (placement !== initialPlacement) {\n        _this2.setState({\n          placement: placement\n        });\n      }\n    };\n\n    return _this2;\n  }\n\n  var _proto2 = MenuPortal.prototype;\n\n  _proto2.getChildContext = function getChildContext() {\n    return {\n      getPortalPlacement: this.getPortalPlacement\n    };\n  } // callback for occassions where the menu must \"flip\"\n  ;\n\n  _proto2.render = function render() {\n    var _this$props2 = this.props,\n        appendTo = _this$props2.appendTo,\n        children = _this$props2.children,\n        controlElement = _this$props2.controlElement,\n        menuPlacement = _this$props2.menuPlacement,\n        position = _this$props2.menuPosition,\n        getStyles = _this$props2.getStyles;\n    var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n    if (!appendTo && !isFixed || !controlElement) {\n      return null;\n    }\n\n    var placement = this.state.placement || coercePlacement(menuPlacement);\n    var rect = getBoundingClientObj(controlElement);\n    var scrollDistance = isFixed ? 0 : window.pageYOffset;\n    var offset = rect[placement] + scrollDistance;\n    var state = {\n      offset: offset,\n      position: position,\n      rect: rect\n    }; // same wrapper element whether fixed or portalled\n\n    var menuWrapper = jsx(\"div\", {\n      css: getStyles('menuPortal', state)\n    }, children);\n    return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n  };\n\n  return MenuPortal;\n}(Component);\nMenuPortal.childContextTypes = {\n  getPortalPlacement: PropTypes.func\n};\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length) {\n      return false;\n    }\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // Custom handling for React\n\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i)) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n}\n\nfunction _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : null,\n    pointerEvents: isDisabled ? 'none' : null,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends$1({\n    css: getStyles('container', props),\n    className: cx({\n      '--is-disabled': isDisabled,\n      '--is-rtl': isRtl\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    alignItems: 'center',\n    display: 'flex',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: spacing.baseUnit / 2 + \"px \" + spacing.baseUnit * 2 + \"px\",\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer = function ValueContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      isMulti = props.isMulti,\n      getStyles = props.getStyles,\n      hasValue = props.hasValue;\n  return jsx(\"div\", {\n    css: getStyles('valueContainer', props),\n    className: cx({\n      'value-container': true,\n      'value-container--is-multi': isMulti,\n      'value-container--has-value': hasValue\n    }, className)\n  }, children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles;\n  return jsx(\"div\", {\n    css: getStyles('indicatorsContainer', props),\n    className: cx({\n      indicators: true\n    }, className)\n  }, children);\n};\n\nfunction _templateObject() {\n  var data = _taggedTemplateLiteralLoose([\"\\n  0%, 80%, 100% { opacity: 0; }\\n  40% { opacity: 1; }\\n\"]);\n\n  _templateObject = function _templateObject() {\n    return data;\n  };\n\n  return data;\n}\n\nfunction _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; }\n\nfunction _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n  name: \"19bqh2r\",\n  styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\"\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = _objectWithoutPropertiesLoose(_ref, [\"size\"]);\n\n  return jsx(\"svg\", _extends$2({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    css: _ref2\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return jsx(Svg, _extends$2({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return jsx(Svg, _extends$2({\n    size: 20\n  }, props), jsx(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n  var isFocused = _ref3.isFocused,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  return {\n    label: 'indicatorContainer',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends$2({}, innerProps, {\n    css: getStyles('dropdownIndicator', props),\n    className: cx({\n      indicator: true,\n      'dropdown-indicator': true\n    }, className)\n  }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends$2({}, innerProps, {\n    css: getStyles('clearIndicator', props),\n    className: cx({\n      indicator: true,\n      'clear-indicator': true\n    }, className)\n  }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n  var isDisabled = _ref4.isDisabled,\n      _ref4$theme = _ref4.theme,\n      baseUnit = _ref4$theme.spacing.baseUnit,\n      colors = _ref4$theme.colors;\n  return {\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"span\", _extends$2({}, innerProps, {\n    css: getStyles('indicatorSeparator', props),\n    className: cx({\n      'indicator-separator': true\n    }, className)\n  }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n  var isFocused = _ref5.isFocused,\n      size = _ref5.size,\n      _ref5$theme = _ref5.theme,\n      colors = _ref5$theme.colors,\n      baseUnit = _ref5$theme.spacing.baseUnit;\n  return {\n    label: 'loadingIndicator',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n  var delay = _ref6.delay,\n      offset = _ref6.offset;\n  return jsx(\"span\", {\n    css:\n    /*#__PURE__*/\n    _css({\n      animation: loadingDotAnimations + \" 1s ease-in-out \" + delay + \"ms infinite;\",\n      backgroundColor: 'currentColor',\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : null,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n  });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isRtl = props.isRtl;\n  return jsx(\"div\", _extends$2({}, innerProps, {\n    css: getStyles('loadingIndicator', props),\n    className: cx({\n      indicator: true,\n      'loading-indicator': true\n    }, className)\n  }), jsx(LoadingDot, {\n    delay: 0,\n    offset: isRtl\n  }), jsx(LoadingDot, {\n    delay: 160,\n    offset: true\n  }), jsx(LoadingDot, {\n    delay: 320,\n    offset: !isRtl\n  }));\n};\nLoadingIndicator.defaultProps = {\n  size: 4\n};\n\nfunction _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }\nvar css = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    label: 'control',\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \" + colors.primary : null,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps,\n      menuIsOpen = props.menuIsOpen;\n  return jsx(\"div\", _extends$3({\n    ref: innerRef,\n    css: getStyles('control', props),\n    className: cx({\n      control: true,\n      'control--is-disabled': isDisabled,\n      'control--is-focused': isFocused,\n      'control--menu-is-open': menuIsOpen\n    }, className)\n  }, innerProps), children);\n};\n\nfunction _objectWithoutPropertiesLoose$1(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      label = props.label,\n      theme = props.theme,\n      selectProps = props.selectProps;\n  return jsx(\"div\", {\n    css: getStyles('group', props),\n    className: cx({\n      group: true\n    }, className)\n  }, jsx(Heading, _extends$4({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    cx: cx\n  }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    label: 'group',\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: '500',\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\nvar GroupHeading = function GroupHeading(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      theme = props.theme,\n      selectProps = props.selectProps,\n      cleanProps = _objectWithoutPropertiesLoose$1(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", _extends$4({\n    css: getStyles('groupHeading', _extends$4({\n      theme: theme\n    }, cleanProps)),\n    className: cx({\n      'group-heading': true\n    }, className)\n  }, cleanProps));\n};\n\nfunction _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose$2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80\n  };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n  return {\n    label: 'input',\n    background: 0,\n    border: 0,\n    fontSize: 'inherit',\n    opacity: isHidden ? 0 : 1,\n    outline: 0,\n    padding: 0,\n    color: 'inherit'\n  };\n};\n\nvar Input = function Input(_ref2) {\n  var className = _ref2.className,\n      cx = _ref2.cx,\n      getStyles = _ref2.getStyles,\n      innerRef = _ref2.innerRef,\n      isHidden = _ref2.isHidden,\n      isDisabled = _ref2.isDisabled,\n      theme = _ref2.theme,\n      selectProps = _ref2.selectProps,\n      props = _objectWithoutPropertiesLoose$2(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n  return jsx(\"div\", {\n    css: getStyles('input', _extends$5({\n      theme: theme\n    }, props))\n  }, jsx(AutosizeInput, _extends$5({\n    className: cx({\n      input: true\n    }, className),\n    inputRef: innerRef,\n    inputStyle: inputStyle(isHidden),\n    disabled: isDisabled\n  }, props)));\n};\n\nfunction _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    label: 'multiValue',\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n\n  };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n    whiteSpace: 'nowrap'\n  };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused && colors.dangerLight,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nfunction MultiValueRemove(_ref5) {\n  var children = _ref5.children,\n      innerProps = _ref5.innerProps;\n  return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n    size: 14\n  }));\n}\n\nvar MultiValue = function MultiValue(props) {\n  var children = props.children,\n      className = props.className,\n      components = props.components,\n      cx = props.cx,\n      data = props.data,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      removeProps = props.removeProps,\n      selectProps = props.selectProps;\n  var Container = components.Container,\n      Label = components.Label,\n      Remove = components.Remove;\n  return jsx(ClassNames, null, function (_ref6) {\n    var css = _ref6.css,\n        emotionCx = _ref6.cx;\n    return jsx(Container, {\n      data: data,\n      innerProps: _extends$6({}, innerProps, {\n        className: emotionCx(css(getStyles('multiValue', props)), cx({\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className))\n      }),\n      selectProps: selectProps\n    }, jsx(Label, {\n      data: data,\n      innerProps: {\n        className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n          'multi-value__label': true\n        }, className))\n      },\n      selectProps: selectProps\n    }, children), jsx(Remove, {\n      data: data,\n      innerProps: _extends$6({\n        className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n          'multi-value__remove': true\n        }, className))\n      }, removeProps),\n      selectProps: selectProps\n    }));\n  });\n};\n\nMultiValue.defaultProps = {\n  cropWithEllipsis: true\n};\n\nfunction _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'option',\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: spacing.baseUnit * 2 + \"px \" + spacing.baseUnit * 3 + \"px\",\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n    }\n  };\n};\n\nvar Option = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends$7({\n    css: getStyles('option', props),\n    className: cx({\n      option: true,\n      'option--is-disabled': isDisabled,\n      'option--is-focused': isFocused,\n      'option--is-selected': isSelected\n    }, className),\n    ref: innerRef\n  }, innerProps), children);\n};\n\nfunction _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'placeholder',\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    position: 'absolute',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends$8({\n    css: getStyles('placeholder', props),\n    className: cx({\n      placeholder: true\n    }, className)\n  }, innerProps), children);\n};\n\nfunction _extends$9() { _extends$9 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }\nvar css$1 = function css(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'singleValue',\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: \"calc(100% - \" + spacing.baseUnit * 2 + \"px)\",\n    overflow: 'hidden',\n    position: 'absolute',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n  return jsx(\"div\", _extends$9({\n    css: getStyles('singleValue', props),\n    className: cx({\n      'single-value': true,\n      'single-value--is-disabled': isDisabled\n    }, className)\n  }, innerProps), children);\n};\n\nfunction _extends$a() { _extends$a = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _extends$a({}, components, props.components);\n};\n\nexport { MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, defaultComponents as w, exportedEqual as x, components as y };\n","import React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { i as isTouchCapable, d as isMobileDevice, e as cleanValue, f as scrollIntoView, h as classNames, n as noop, j as isDocumentElement } from './utils-06b0d5a4.browser.esm.js';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, M as MenuPlacer, w as defaultComponents, x as exportedEqual } from './index-4322c0ed.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n  base: 'A',\n  letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n  base: 'AA',\n  letters: /[\\uA732]/g\n}, {\n  base: 'AE',\n  letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n  base: 'AO',\n  letters: /[\\uA734]/g\n}, {\n  base: 'AU',\n  letters: /[\\uA736]/g\n}, {\n  base: 'AV',\n  letters: /[\\uA738\\uA73A]/g\n}, {\n  base: 'AY',\n  letters: /[\\uA73C]/g\n}, {\n  base: 'B',\n  letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n  base: 'C',\n  letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n  base: 'D',\n  letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n  base: 'DZ',\n  letters: /[\\u01F1\\u01C4]/g\n}, {\n  base: 'Dz',\n  letters: /[\\u01F2\\u01C5]/g\n}, {\n  base: 'E',\n  letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n  base: 'F',\n  letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n  base: 'G',\n  letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n  base: 'H',\n  letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n  base: 'I',\n  letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n  base: 'J',\n  letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n  base: 'K',\n  letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n  base: 'L',\n  letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n  base: 'LJ',\n  letters: /[\\u01C7]/g\n}, {\n  base: 'Lj',\n  letters: /[\\u01C8]/g\n}, {\n  base: 'M',\n  letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n  base: 'N',\n  letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n  base: 'NJ',\n  letters: /[\\u01CA]/g\n}, {\n  base: 'Nj',\n  letters: /[\\u01CB]/g\n}, {\n  base: 'O',\n  letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n  base: 'OI',\n  letters: /[\\u01A2]/g\n}, {\n  base: 'OO',\n  letters: /[\\uA74E]/g\n}, {\n  base: 'OU',\n  letters: /[\\u0222]/g\n}, {\n  base: 'P',\n  letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n  base: 'Q',\n  letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n  base: 'R',\n  letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n  base: 'S',\n  letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n  base: 'T',\n  letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n  base: 'TZ',\n  letters: /[\\uA728]/g\n}, {\n  base: 'U',\n  letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n  base: 'V',\n  letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n  base: 'VY',\n  letters: /[\\uA760]/g\n}, {\n  base: 'W',\n  letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n  base: 'X',\n  letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n  base: 'Y',\n  letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n  base: 'Z',\n  letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n  base: 'a',\n  letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n  base: 'aa',\n  letters: /[\\uA733]/g\n}, {\n  base: 'ae',\n  letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n  base: 'ao',\n  letters: /[\\uA735]/g\n}, {\n  base: 'au',\n  letters: /[\\uA737]/g\n}, {\n  base: 'av',\n  letters: /[\\uA739\\uA73B]/g\n}, {\n  base: 'ay',\n  letters: /[\\uA73D]/g\n}, {\n  base: 'b',\n  letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n  base: 'c',\n  letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n  base: 'd',\n  letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n  base: 'dz',\n  letters: /[\\u01F3\\u01C6]/g\n}, {\n  base: 'e',\n  letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n  base: 'f',\n  letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n  base: 'g',\n  letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n  base: 'h',\n  letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n  base: 'hv',\n  letters: /[\\u0195]/g\n}, {\n  base: 'i',\n  letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n  base: 'j',\n  letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n  base: 'k',\n  letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n  base: 'l',\n  letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n  base: 'lj',\n  letters: /[\\u01C9]/g\n}, {\n  base: 'm',\n  letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n  base: 'n',\n  letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n  base: 'nj',\n  letters: /[\\u01CC]/g\n}, {\n  base: 'o',\n  letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n  base: 'oi',\n  letters: /[\\u01A3]/g\n}, {\n  base: 'ou',\n  letters: /[\\u0223]/g\n}, {\n  base: 'oo',\n  letters: /[\\uA74F]/g\n}, {\n  base: 'p',\n  letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n  base: 'q',\n  letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n  base: 'r',\n  letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n  base: 's',\n  letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n  base: 't',\n  letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n  base: 'tz',\n  letters: /[\\uA729]/g\n}, {\n  base: 'u',\n  letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n  base: 'v',\n  letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n  base: 'vy',\n  letters: /[\\uA761]/g\n}, {\n  base: 'w',\n  letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n  base: 'x',\n  letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n  base: 'y',\n  letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n  base: 'z',\n  letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n  for (var i = 0; i < diacritics.length; i++) {\n    str = str.replace(diacritics[i].letters, diacritics[i].base);\n  }\n\n  return str;\n};\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n  return option.label + \" \" + option.value;\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    var _ignoreCase$ignoreAcc = _extends({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignoreCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n      candidate = stripDiacritics(candidate);\n    }\n\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nfunction _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n  name: \"1laao21-a11yText\",\n  styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFNIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICAgIDxzcGFuXG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\"\n};\n\nvar A11yText = function A11yText(props) {\n  return jsx(\"span\", _extends$1({\n    css: _ref\n  }, props));\n};\n\nfunction _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction DummyInput(_ref) {\n  var inProp = _ref.in,\n      out = _ref.out,\n      onExited = _ref.onExited,\n      appear = _ref.appear,\n      enter = _ref.enter,\n      exit = _ref.exit,\n      innerRef = _ref.innerRef,\n      emotion = _ref.emotion,\n      props = _objectWithoutPropertiesLoose(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n  return jsx(\"input\", _extends$2({\n    ref: innerRef\n  }, props, {\n    css:\n    /*#__PURE__*/\n    _css({\n      label: 'dummyInput',\n      // get rid of any default styles\n      background: 0,\n      border: 0,\n      fontSize: 'inherit',\n      outline: 0,\n      padding: 0,\n      // important! without `width` browsers won't allow focus\n      width: 1,\n      // remove cursor on desktop\n      color: 'transparent',\n      // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n      left: -100,\n      opacity: 0,\n      position: 'relative',\n      transform: 'scale(0)'\n    }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGluOiBpblByb3AsXG4gIG91dCxcbiAgb25FeGl0ZWQsXG4gIGFwcGVhcixcbiAgZW50ZXIsXG4gIGV4aXQsXG4gIGlubmVyUmVmLFxuICBlbW90aW9uLFxuICAuLi5wcm9wc1xufTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY3NzPXt7XG4gICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgIC8vIGdldCByaWQgb2YgYW55IGRlZmF1bHQgc3R5bGVzXG4gICAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgLy8gaW1wb3J0YW50ISB3aXRob3V0IGB3aWR0aGAgYnJvd3NlcnMgd29uJ3QgYWxsb3cgZm9jdXNcbiAgICAgICAgd2lkdGg6IDEsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gbW9iaWxlIHdoaWxzdCBtYWludGFpbmluZyBcInNjcm9sbCBpbnRvIHZpZXdcIiBiZWhhdmlvdXJcbiAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n  }));\n}\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose(NodeResolver, _Component);\n\n  function NodeResolver() {\n    return _Component.apply(this, arguments) || this;\n  }\n\n  var _proto = NodeResolver.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.props.innerRef(findDOMNode(this));\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.props.innerRef(null);\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nfunction _inheritsLoose$1(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\nvar canUseDOM = !!( window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose$1(ScrollLock, _Component);\n\n  function ScrollLock() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n    _this.originalStyles = {};\n    _this.listenerOptions = {\n      capture: false,\n      passive: false\n    };\n    return _this;\n  }\n\n  var _proto = ScrollLock.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    if (!canUseDOM) return;\n    var _this$props = this.props,\n        accountForScrollbars = _this$props.accountForScrollbars,\n        touchScrollTarget = _this$props.touchScrollTarget;\n    var target = document.body;\n    var targetStyle = target && target.style;\n\n    if (accountForScrollbars) {\n      // store any styles already applied to the body\n      STYLE_KEYS.forEach(function (key) {\n        var val = targetStyle && targetStyle[key];\n        _this2.originalStyles[key] = val;\n      });\n    } // apply the lock styles and padding if this is the first scroll lock\n\n\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n      var clientWidth = document.body ? document.body.clientWidth : 0;\n      var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n      Object.keys(LOCK_STYLES).forEach(function (key) {\n        var val = LOCK_STYLES[key];\n\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n\n      if (targetStyle) {\n        targetStyle.paddingRight = adjustedPadding + \"px\";\n      }\n    } // account for touch devices\n\n\n    if (target && isTouchDevice()) {\n      // Mobile Safari ignores { overflow: hidden } declaration on the body.\n      target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n      if (touchScrollTarget) {\n        touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n        touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n      }\n    } // increment active scroll locks\n\n\n    activeScrollLocks += 1;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this3 = this;\n\n    if (!canUseDOM) return;\n    var _this$props2 = this.props,\n        accountForScrollbars = _this$props2.accountForScrollbars,\n        touchScrollTarget = _this$props2.touchScrollTarget;\n    var target = document.body;\n    var targetStyle = target && target.style; // safely decrement active scroll locks\n\n    activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n    if (accountForScrollbars && activeScrollLocks < 1) {\n      STYLE_KEYS.forEach(function (key) {\n        var val = _this3.originalStyles[key];\n\n        if (targetStyle) {\n          targetStyle[key] = val;\n        }\n      });\n    } // remove touch listeners\n\n\n    if (target && isTouchDevice()) {\n      target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n      if (touchScrollTarget) {\n        touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n        touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n      }\n    }\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return ScrollLock;\n}(Component);\n\nScrollLock.defaultProps = {\n  accountForScrollbars: true\n};\n\nfunction _inheritsLoose$2(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n  name: \"1dsbpcp\",\n  styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n  map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\"\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inheritsLoose$2(ScrollBlock, _PureComponent);\n\n  function ScrollBlock() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _PureComponent.call.apply(_PureComponent, [this].concat(args)) || this;\n    _this.state = {\n      touchScrollTarget: null\n    };\n\n    _this.getScrollTarget = function (ref) {\n      if (ref === _this.state.touchScrollTarget) return;\n\n      _this.setState({\n        touchScrollTarget: ref\n      });\n    };\n\n    _this.blurSelectInput = function () {\n      if (document.activeElement) {\n        document.activeElement.blur();\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = ScrollBlock.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        isEnabled = _this$props.isEnabled;\n    var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n    if (!isEnabled) return children;\n    /*\n     * Div\n     * ------------------------------\n     * blocks scrolling on non-body elements behind the menu\n      * NodeResolver\n     * ------------------------------\n     * we need a reference to the scrollable element to \"unlock\" scroll on\n     * mobile devices\n      * ScrollLock\n     * ------------------------------\n     * actually does the scroll locking\n     */\n\n    return jsx(\"div\", null, jsx(\"div\", {\n      onClick: this.blurSelectInput,\n      css: _ref$1\n    }), jsx(NodeResolver, {\n      innerRef: this.getScrollTarget\n    }, children), touchScrollTarget ? jsx(ScrollLock, {\n      touchScrollTarget: touchScrollTarget\n    }) : null);\n  };\n\n  return ScrollBlock;\n}(PureComponent);\n\nfunction _objectWithoutPropertiesLoose$1(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose$3(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose$3(ScrollCaptor, _Component);\n\n  function ScrollCaptor() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n    _this.isBottom = false;\n    _this.isTop = false;\n    _this.scrollTarget = void 0;\n    _this.touchStart = void 0;\n\n    _this.cancelScroll = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.handleEventDelta = function (event, delta) {\n      var _this$props = _this.props,\n          onBottomArrive = _this$props.onBottomArrive,\n          onBottomLeave = _this$props.onBottomLeave,\n          onTopArrive = _this$props.onTopArrive,\n          onTopLeave = _this$props.onTopLeave;\n      var _this$scrollTarget = _this.scrollTarget,\n          scrollTop = _this$scrollTarget.scrollTop,\n          scrollHeight = _this$scrollTarget.scrollHeight,\n          clientHeight = _this$scrollTarget.clientHeight;\n      var target = _this.scrollTarget;\n      var isDeltaPositive = delta > 0;\n      var availableScroll = scrollHeight - clientHeight - scrollTop;\n      var shouldCancelScroll = false; // reset bottom/top flags\n\n      if (availableScroll > delta && _this.isBottom) {\n        if (onBottomLeave) onBottomLeave(event);\n        _this.isBottom = false;\n      }\n\n      if (isDeltaPositive && _this.isTop) {\n        if (onTopLeave) onTopLeave(event);\n        _this.isTop = false;\n      } // bottom limit\n\n\n      if (isDeltaPositive && delta > availableScroll) {\n        if (onBottomArrive && !_this.isBottom) {\n          onBottomArrive(event);\n        }\n\n        target.scrollTop = scrollHeight;\n        shouldCancelScroll = true;\n        _this.isBottom = true; // top limit\n      } else if (!isDeltaPositive && -delta > scrollTop) {\n        if (onTopArrive && !_this.isTop) {\n          onTopArrive(event);\n        }\n\n        target.scrollTop = 0;\n        shouldCancelScroll = true;\n        _this.isTop = true;\n      } // cancel scroll\n\n\n      if (shouldCancelScroll) {\n        _this.cancelScroll(event);\n      }\n    };\n\n    _this.onWheel = function (event) {\n      _this.handleEventDelta(event, event.deltaY);\n    };\n\n    _this.onTouchStart = function (event) {\n      // set touch start so we can calculate touchmove delta\n      _this.touchStart = event.changedTouches[0].clientY;\n    };\n\n    _this.onTouchMove = function (event) {\n      var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n      _this.handleEventDelta(event, deltaY);\n    };\n\n    _this.getScrollTarget = function (ref) {\n      _this.scrollTarget = ref;\n    };\n\n    return _this;\n  }\n\n  var _proto = ScrollCaptor.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.startListening(this.scrollTarget);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.stopListening(this.scrollTarget);\n  };\n\n  _proto.startListening = function startListening(el) {\n    // bail early if no element is available to attach to\n    if (!el) return; // all the if statements are to appease Flow 😢\n\n    if (typeof el.addEventListener === 'function') {\n      el.addEventListener('wheel', this.onWheel, false);\n    }\n\n    if (typeof el.addEventListener === 'function') {\n      el.addEventListener('touchstart', this.onTouchStart, false);\n    }\n\n    if (typeof el.addEventListener === 'function') {\n      el.addEventListener('touchmove', this.onTouchMove, false);\n    }\n  };\n\n  _proto.stopListening = function stopListening(el) {\n    // all the if statements are to appease Flow 😢\n    if (typeof el.removeEventListener === 'function') {\n      el.removeEventListener('wheel', this.onWheel, false);\n    }\n\n    if (typeof el.removeEventListener === 'function') {\n      el.removeEventListener('touchstart', this.onTouchStart, false);\n    }\n\n    if (typeof el.removeEventListener === 'function') {\n      el.removeEventListener('touchmove', this.onTouchMove, false);\n    }\n  };\n\n  _proto.render = function render() {\n    return React.createElement(NodeResolver, {\n      innerRef: this.getScrollTarget\n    }, this.props.children);\n  };\n\n  return ScrollCaptor;\n}(Component);\n\nfunction ScrollCaptorSwitch(_ref) {\n  var _ref$isEnabled = _ref.isEnabled,\n      isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,\n      props = _objectWithoutPropertiesLoose$1(_ref, [\"isEnabled\"]);\n\n  return isEnabled ? React.createElement(ScrollCaptor, props) : props.children;\n}\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event, context) {\n  if (context === void 0) {\n    context = {};\n  }\n\n  var _context = context,\n      isSearchable = _context.isSearchable,\n      isMulti = _context.isMulti,\n      label = _context.label,\n      isDisabled = _context.isDisabled;\n\n  switch (event) {\n    case 'menu':\n      return \"Use Up and Down to choose options\" + (isDisabled ? '' : ', press Enter to select the currently focused option') + \", press Escape to exit the menu, press Tab to select the option and exit the menu.\";\n\n    case 'input':\n      return (label ? label : 'Select') + \" is focused \" + (isSearchable ? ',type to refine list' : '') + \", press Down to open the menu, \" + (isMulti ? ' press left to focus selected values' : '');\n\n    case 'value':\n      return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n  }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n  var value = context.value,\n      isDisabled = context.isDisabled;\n  if (!value) return;\n\n  switch (event) {\n    case 'deselect-option':\n    case 'pop-value':\n    case 'remove-value':\n      return \"option \" + value + \", deselected.\";\n\n    case 'select-option':\n      return isDisabled ? \"option \" + value + \" is disabled. Select another option.\" : \"option \" + value + \", selected.\";\n  }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n  var focusedValue = _ref.focusedValue,\n      getOptionLabel = _ref.getOptionLabel,\n      selectValue = _ref.selectValue;\n  return \"value \" + getOptionLabel(focusedValue) + \" focused, \" + (selectValue.indexOf(focusedValue) + 1) + \" of \" + selectValue.length + \".\";\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n  var focusedOption = _ref2.focusedOption,\n      getOptionLabel = _ref2.getOptionLabel,\n      options = _ref2.options;\n  return \"option \" + getOptionLabel(focusedOption) + \" focused\" + (focusedOption.isDisabled ? ' disabled' : '') + \", \" + (options.indexOf(focusedOption) + 1) + \" of \" + options.length + \".\";\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n  var inputValue = _ref3.inputValue,\n      screenReaderMessage = _ref3.screenReaderMessage;\n  return \"\" + screenReaderMessage + (inputValue ? ' for search term ' + inputValue : '') + \".\";\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nfunction _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$1,\n  valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source, target) {\n  if (target === void 0) {\n    target = {};\n  }\n\n  // initialize with source styles\n  var styles = _extends$3({}, source); // massage in target styles\n\n\n  Object.keys(target).forEach(function (key) {\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nfunction _objectWithoutPropertiesLoose$2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }\n\nfunction _inheritsLoose$4(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nvar defaultProps = {\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel,\n  getOptionValue: getOptionValue,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return count + \" result\" + (count !== 1 ? 's' : '') + \" available\";\n  },\n  styles: {},\n  tabIndex: '0',\n  tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose$4(Select, _Component);\n\n  // Misc. Instance Properties\n  // ------------------------------\n  // TODO\n  // Refs\n  // ------------------------------\n  // Lifecycle\n  // ------------------------------\n  function Select(_props) {\n    var _this;\n\n    _this = _Component.call(this, _props) || this;\n    _this.state = {\n      ariaLiveSelection: '',\n      ariaLiveContext: '',\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      menuOptions: {\n        render: [],\n        focusable: []\n      },\n      selectValue: []\n    };\n    _this.blockOptionHover = false;\n    _this.isComposing = false;\n    _this.clearFocusValueOnUpdate = false;\n    _this.commonProps = void 0;\n    _this.components = void 0;\n    _this.hasGroups = false;\n    _this.initialTouchX = 0;\n    _this.initialTouchY = 0;\n    _this.inputIsHiddenAfterUpdate = void 0;\n    _this.instancePrefix = '';\n    _this.openAfterFocus = false;\n    _this.scrollToFocusedOptionOnUpdate = false;\n    _this.userIsDragging = void 0;\n    _this.controlRef = null;\n\n    _this.getControlRef = function (ref) {\n      _this.controlRef = ref;\n    };\n\n    _this.focusedOptionRef = null;\n\n    _this.getFocusedOptionRef = function (ref) {\n      _this.focusedOptionRef = ref;\n    };\n\n    _this.menuListRef = null;\n\n    _this.getMenuListRef = function (ref) {\n      _this.menuListRef = ref;\n    };\n\n    _this.inputRef = null;\n\n    _this.getInputRef = function (ref) {\n      _this.inputRef = ref;\n    };\n\n    _this.cacheComponents = function (components) {\n      _this.components = defaultComponents({\n        components: components\n      });\n    };\n\n    _this.focus = _this.focusInput;\n    _this.blur = _this.blurInput;\n\n    _this.onChange = function (newValue, actionMeta) {\n      var _this$props = _this.props,\n          onChange = _this$props.onChange,\n          name = _this$props.name;\n      onChange(newValue, _extends$4({}, actionMeta, {\n        name: name\n      }));\n    };\n\n    _this.setValue = function (newValue, action, option) {\n      if (action === void 0) {\n        action = 'set-value';\n      }\n\n      var _this$props2 = _this.props,\n          closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n          isMulti = _this$props2.isMulti;\n\n      _this.onInputChange('', {\n        action: 'set-value'\n      });\n\n      if (closeMenuOnSelect) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } // when the select value should change, we should reset focusedValue\n\n\n      _this.clearFocusValueOnUpdate = true;\n\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    };\n\n    _this.selectOption = function (newValue) {\n      var _this$props3 = _this.props,\n          blurInputOnSelect = _this$props3.blurInputOnSelect,\n          isMulti = _this$props3.isMulti;\n      var selectValue = _this.state.selectValue;\n\n      if (isMulti) {\n        if (_this.isOptionSelected(newValue, selectValue)) {\n          var candidate = _this.getOptionValue(newValue);\n\n          _this.setValue(selectValue.filter(function (i) {\n            return _this.getOptionValue(i) !== candidate;\n          }), 'deselect-option', newValue);\n\n          _this.announceAriaLiveSelection({\n            event: 'deselect-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          if (!_this.isOptionDisabled(newValue, selectValue)) {\n            _this.setValue([].concat(selectValue, [newValue]), 'select-option', newValue);\n\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue)\n              }\n            });\n          } else {\n            // announce that option is disabled\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue),\n                isDisabled: true\n              }\n            });\n          }\n        }\n      } else {\n        if (!_this.isOptionDisabled(newValue, selectValue)) {\n          _this.setValue(newValue, 'select-option');\n\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          // announce that option is disabled\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue),\n              isDisabled: true\n            }\n          });\n        }\n      }\n\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    };\n\n    _this.removeValue = function (removedValue) {\n      var selectValue = _this.state.selectValue;\n\n      var candidate = _this.getOptionValue(removedValue);\n\n      var newValue = selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n\n      _this.announceAriaLiveSelection({\n        event: 'remove-value',\n        context: {\n          value: removedValue ? _this.getOptionLabel(removedValue) : ''\n        }\n      });\n\n      _this.focusInput();\n    };\n\n    _this.clearValue = function () {\n      var isMulti = _this.props.isMulti;\n\n      _this.onChange(isMulti ? [] : null, {\n        action: 'clear'\n      });\n    };\n\n    _this.popValue = function () {\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n      var newValue = selectValue.slice(0, selectValue.length - 1);\n\n      _this.announceAriaLiveSelection({\n        event: 'pop-value',\n        context: {\n          value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n        }\n      });\n\n      _this.onChange(newValue.length ? newValue : null, {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    };\n\n    _this.getOptionLabel = function (data) {\n      return _this.props.getOptionLabel(data);\n    };\n\n    _this.getOptionValue = function (data) {\n      return _this.props.getOptionValue(data);\n    };\n\n    _this.getStyles = function (key, props) {\n      var base = defaultStyles[key](props);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    };\n\n    _this.getElementId = function (element) {\n      return _this.instancePrefix + \"-\" + element;\n    };\n\n    _this.getActiveDescendentId = function () {\n      var menuIsOpen = _this.props.menuIsOpen;\n      var _this$state = _this.state,\n          menuOptions = _this$state.menuOptions,\n          focusedOption = _this$state.focusedOption;\n      if (!focusedOption || !menuIsOpen) return undefined;\n      var index = menuOptions.focusable.indexOf(focusedOption);\n      var option = menuOptions.render[index];\n      return option && option.key;\n    };\n\n    _this.announceAriaLiveSelection = function (_ref2) {\n      var event = _ref2.event,\n          context = _ref2.context;\n\n      _this.setState({\n        ariaLiveSelection: valueEventAriaMessage(event, context)\n      });\n    };\n\n    _this.announceAriaLiveContext = function (_ref3) {\n      var event = _ref3.event,\n          context = _ref3.context;\n\n      _this.setState({\n        ariaLiveContext: instructionsAriaMessage(event, _extends$4({}, context, {\n          label: _this.props['aria-label']\n        }))\n      });\n    };\n\n    _this.onMenuMouseDown = function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n\n      event.stopPropagation();\n      event.preventDefault();\n\n      _this.focusInput();\n    };\n\n    _this.onMenuMouseMove = function (event) {\n      _this.blockOptionHover = false;\n    };\n\n    _this.onControlMouseDown = function (event) {\n      var openMenuOnClick = _this.props.openMenuOnClick;\n\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        if ( // $FlowFixMe\n        event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n          _this.onMenuClose();\n        }\n      }\n\n      if ( // $FlowFixMe\n      event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n        event.preventDefault();\n      }\n    };\n\n    _this.onDropdownIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n          isMulti = _this$props4.isMulti,\n          menuIsOpen = _this$props4.menuIsOpen;\n\n      _this.focusInput();\n\n      if (menuIsOpen) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    };\n\n    _this.onClearIndicatorMouseDown = function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      _this.clearValue();\n\n      event.stopPropagation();\n      _this.openAfterFocus = false;\n\n      if (event.type === 'touchend') {\n        _this.focusInput();\n      } else {\n        setTimeout(function () {\n          return _this.focusInput();\n        });\n      }\n    };\n\n    _this.onScroll = function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    };\n\n    _this.onCompositionStart = function () {\n      _this.isComposing = true;\n    };\n\n    _this.onCompositionEnd = function () {\n      _this.isComposing = false;\n    };\n\n    _this.onTouchStart = function (_ref4) {\n      var touches = _ref4.touches;\n      var touch = touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    };\n\n    _this.onTouchMove = function (_ref5) {\n      var touches = _ref5.touches;\n      var touch = touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    };\n\n    _this.onTouchEnd = function (event) {\n      if (_this.userIsDragging) return; // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      } // reset move vars\n\n\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    };\n\n    _this.onControlTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onControlMouseDown(event);\n    };\n\n    _this.onClearIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onClearIndicatorMouseDown(event);\n    };\n\n    _this.onDropdownIndicatorTouchEnd = function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onDropdownIndicatorMouseDown(event);\n    };\n\n    _this.handleInputChange = function (event) {\n      var inputValue = event.currentTarget.value;\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.onInputChange(inputValue, {\n        action: 'input-change'\n      });\n\n      _this.onMenuOpen();\n    };\n\n    _this.onInputFocus = function (event) {\n      var _this$props5 = _this.props,\n          isSearchable = _this$props5.isSearchable,\n          isMulti = _this$props5.isMulti;\n\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n\n      _this.setState({\n        isFocused: true\n      });\n\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n\n      _this.openAfterFocus = false;\n    };\n\n    _this.onInputBlur = function (event) {\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n\n        return;\n      }\n\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n\n      _this.onInputChange('', {\n        action: 'input-blur'\n      });\n\n      _this.onMenuClose();\n\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    };\n\n    _this.onOptionHover = function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    };\n\n    _this.shouldHideSelectedOptions = function () {\n      var _this$props6 = _this.props,\n          hideSelectedOptions = _this$props6.hideSelectedOptions,\n          isMulti = _this$props6.isMulti;\n      if (hideSelectedOptions === undefined) return isMulti;\n      return hideSelectedOptions;\n    };\n\n    _this.onKeyDown = function (event) {\n      var _this$props7 = _this.props,\n          isMulti = _this$props7.isMulti,\n          backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n          escapeClearsValue = _this$props7.escapeClearsValue,\n          inputValue = _this$props7.inputValue,\n          isClearable = _this$props7.isClearable,\n          isDisabled = _this$props7.isDisabled,\n          menuIsOpen = _this$props7.menuIsOpen,\n          onKeyDown = _this$props7.onKeyDown,\n          tabSelectsValue = _this$props7.tabSelectsValue,\n          openMenuOnFocus = _this$props7.openMenuOnFocus;\n      var _this$state2 = _this.state,\n          focusedOption = _this$state2.focusedOption,\n          focusedValue = _this$state2.focusedValue,\n          selectValue = _this$state2.selectValue;\n      if (isDisabled) return;\n\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n\n        if (event.defaultPrevented) {\n          return;\n        }\n      } // Block option hover events when the user has just pressed a key\n\n\n      _this.blockOptionHover = true;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('previous');\n\n          break;\n\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('next');\n\n          break;\n\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n\n          break;\n\n        case 'Tab':\n          if (_this.isComposing) return;\n\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n\n            _this.selectOption(focusedOption);\n\n            break;\n          }\n\n          return;\n\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.inputIsHiddenAfterUpdate = false;\n\n            _this.onInputChange('', {\n              action: 'menu-close'\n            });\n\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n\n          break;\n\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n\n            break;\n          }\n\n          if (!focusedOption) return;\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n\n          break;\n\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n\n          break;\n\n        case 'PageUp':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pageup');\n\n          break;\n\n        case 'PageDown':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pagedown');\n\n          break;\n\n        case 'Home':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('first');\n\n          break;\n\n        case 'End':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('last');\n\n          break;\n\n        default:\n          return;\n      }\n\n      event.preventDefault();\n    };\n\n    _this.buildMenuOptions = function (props, selectValue) {\n      var _props$inputValue = props.inputValue,\n          inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n          options = props.options;\n\n      var toOption = function toOption(option, id) {\n        var isDisabled = _this.isOptionDisabled(option, selectValue);\n\n        var isSelected = _this.isOptionSelected(option, selectValue);\n\n        var label = _this.getOptionLabel(option);\n\n        var value = _this.getOptionValue(option);\n\n        if (_this.shouldHideSelectedOptions() && isSelected || !_this.filterOption({\n          label: label,\n          value: value,\n          data: option\n        }, inputValue)) {\n          return;\n        }\n\n        var onHover = isDisabled ? undefined : function () {\n          return _this.onOptionHover(option);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this.selectOption(option);\n        };\n        var optionId = _this.getElementId('option') + \"-\" + id;\n        return {\n          innerProps: {\n            id: optionId,\n            onClick: onSelect,\n            onMouseMove: onHover,\n            onMouseOver: onHover,\n            tabIndex: -1\n          },\n          data: option,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: 'option',\n          value: value\n        };\n      };\n\n      return options.reduce(function (acc, item, itemIndex) {\n        if (item.options) {\n          // TODO needs a tidier implementation\n          if (!_this.hasGroups) _this.hasGroups = true;\n          var items = item.options;\n          var children = items.map(function (child, i) {\n            var option = toOption(child, itemIndex + \"-\" + i);\n            if (option) acc.focusable.push(child);\n            return option;\n          }).filter(Boolean);\n\n          if (children.length) {\n            var groupId = _this.getElementId('group') + \"-\" + itemIndex;\n            acc.render.push({\n              type: 'group',\n              key: groupId,\n              data: item,\n              options: children\n            });\n          }\n        } else {\n          var option = toOption(item, \"\" + itemIndex);\n\n          if (option) {\n            acc.render.push(option);\n            acc.focusable.push(item);\n          }\n        }\n\n        return acc;\n      }, {\n        render: [],\n        focusable: []\n      });\n    };\n\n    var _value = _props.value;\n    _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n    _this.cacheComponents(_props.components);\n\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n    var _selectValue = cleanValue(_value);\n\n    _this.buildMenuOptions = memoizeOne(_this.buildMenuOptions, function (newArgs, lastArgs) {\n      var _ref6 = newArgs,\n          newProps = _ref6[0],\n          newSelectValue = _ref6[1];\n      var _ref7 = lastArgs,\n          lastProps = _ref7[0],\n          lastSelectValue = _ref7[1];\n      return exportedEqual(newSelectValue, lastSelectValue) && exportedEqual(newProps.inputValue, lastProps.inputValue) && exportedEqual(newProps.options, lastProps.options);\n    }).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n    var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n      render: [],\n      focusable: []\n    };\n\n    _this.state.menuOptions = _menuOptions;\n    _this.state.selectValue = _selectValue;\n    return _this;\n  }\n\n  var _proto = Select.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.startListeningComposition();\n    this.startListeningToTouch();\n\n    if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n      // Listen to all scroll events, and filter them out inside of 'onScroll'\n      document.addEventListener('scroll', this.onScroll, true);\n    }\n\n    if (this.props.autoFocus) {\n      this.focusInput();\n    }\n  };\n\n  _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    var _this$props8 = this.props,\n        options = _this$props8.options,\n        value = _this$props8.value,\n        menuIsOpen = _this$props8.menuIsOpen,\n        inputValue = _this$props8.inputValue; // re-cache custom components\n\n    this.cacheComponents(nextProps.components); // rebuild the menu options\n\n    if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n      var selectValue = cleanValue(nextProps.value);\n      var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n        render: [],\n        focusable: []\n      };\n      var focusedValue = this.getNextFocusedValue(selectValue);\n      var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n      this.setState({\n        menuOptions: menuOptions,\n        selectValue: selectValue,\n        focusedOption: focusedOption,\n        focusedValue: focusedValue\n      });\n    } // some updates should toggle the state of the input visibility\n\n\n    if (this.inputIsHiddenAfterUpdate != null) {\n      this.setState({\n        inputIsHidden: this.inputIsHiddenAfterUpdate\n      });\n      delete this.inputIsHiddenAfterUpdate;\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var _this$props9 = this.props,\n        isDisabled = _this$props9.isDisabled,\n        menuIsOpen = _this$props9.menuIsOpen;\n    var isFocused = this.state.isFocused;\n\n    if ( // ensure focus is restored correctly when the control becomes enabled\n    isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n    isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n      this.focusInput();\n    } // scroll the focused option into view if necessary\n\n\n    if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n      scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      this.scrollToFocusedOptionOnUpdate = false;\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.stopListeningComposition();\n    this.stopListeningToTouch();\n    document.removeEventListener('scroll', this.onScroll, true);\n  };\n\n  // ==============================\n  // Consumer Handlers\n  // ==============================\n  _proto.onMenuOpen = function onMenuOpen() {\n    this.props.onMenuOpen();\n  };\n\n  _proto.onMenuClose = function onMenuClose() {\n    var _this$props10 = this.props,\n        isSearchable = _this$props10.isSearchable,\n        isMulti = _this$props10.isMulti;\n    this.announceAriaLiveContext({\n      event: 'input',\n      context: {\n        isSearchable: isSearchable,\n        isMulti: isMulti\n      }\n    });\n    this.onInputChange('', {\n      action: 'menu-close'\n    });\n    this.props.onMenuClose();\n  };\n\n  _proto.onInputChange = function onInputChange(newValue, actionMeta) {\n    this.props.onInputChange(newValue, actionMeta);\n  } // ==============================\n  // Methods\n  // ==============================\n  ;\n\n  _proto.focusInput = function focusInput() {\n    if (!this.inputRef) return;\n    this.inputRef.focus();\n  };\n\n  _proto.blurInput = function blurInput() {\n    if (!this.inputRef) return;\n    this.inputRef.blur();\n  } // aliased for consumers\n  ;\n\n  _proto.openMenu = function openMenu(focusOption) {\n    var _this2 = this;\n\n    var _this$state3 = this.state,\n        selectValue = _this$state3.selectValue,\n        isFocused = _this$state3.isFocused;\n    var menuOptions = this.buildMenuOptions(this.props, selectValue);\n    var isMulti = this.props.isMulti;\n    var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n    if (!isMulti) {\n      var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n      if (selectedIndex > -1) {\n        openAtIndex = selectedIndex;\n      }\n    } // only scroll if the menu isn't already open\n\n\n    this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n    this.inputIsHiddenAfterUpdate = false;\n    this.setState({\n      menuOptions: menuOptions,\n      focusedValue: null,\n      focusedOption: menuOptions.focusable[openAtIndex]\n    }, function () {\n      _this2.onMenuOpen();\n\n      _this2.announceAriaLiveContext({\n        event: 'menu'\n      });\n    });\n  };\n\n  _proto.focusValue = function focusValue(direction) {\n    var _this$props11 = this.props,\n        isMulti = _this$props11.isMulti,\n        isSearchable = _this$props11.isSearchable;\n    var _this$state4 = this.state,\n        selectValue = _this$state4.selectValue,\n        focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n    if (!isMulti) return;\n    this.setState({\n      focusedOption: null\n    });\n    var focusedIndex = selectValue.indexOf(focusedValue);\n\n    if (!focusedValue) {\n      focusedIndex = -1;\n      this.announceAriaLiveContext({\n        event: 'value'\n      });\n    }\n\n    var lastIndex = selectValue.length - 1;\n    var nextFocus = -1;\n    if (!selectValue.length) return;\n\n    switch (direction) {\n      case 'previous':\n        if (focusedIndex === 0) {\n          // don't cycle from the start to the end\n          nextFocus = 0;\n        } else if (focusedIndex === -1) {\n          // if nothing is focused, focus the last value first\n          nextFocus = lastIndex;\n        } else {\n          nextFocus = focusedIndex - 1;\n        }\n\n        break;\n\n      case 'next':\n        if (focusedIndex > -1 && focusedIndex < lastIndex) {\n          nextFocus = focusedIndex + 1;\n        }\n\n        break;\n    }\n\n    if (nextFocus === -1) {\n      this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n    }\n\n    this.setState({\n      inputIsHidden: nextFocus !== -1,\n      focusedValue: selectValue[nextFocus]\n    });\n  };\n\n  _proto.focusOption = function focusOption(direction) {\n    if (direction === void 0) {\n      direction = 'first';\n    }\n\n    var pageSize = this.props.pageSize;\n    var _this$state5 = this.state,\n        focusedOption = _this$state5.focusedOption,\n        menuOptions = _this$state5.menuOptions;\n    var options = menuOptions.focusable;\n    if (!options.length) return;\n    var nextFocus = 0; // handles 'first'\n\n    var focusedIndex = options.indexOf(focusedOption);\n\n    if (!focusedOption) {\n      focusedIndex = -1;\n      this.announceAriaLiveContext({\n        event: 'menu'\n      });\n    }\n\n    if (direction === 'up') {\n      nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n    } else if (direction === 'down') {\n      nextFocus = (focusedIndex + 1) % options.length;\n    } else if (direction === 'pageup') {\n      nextFocus = focusedIndex - pageSize;\n      if (nextFocus < 0) nextFocus = 0;\n    } else if (direction === 'pagedown') {\n      nextFocus = focusedIndex + pageSize;\n      if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n    } else if (direction === 'last') {\n      nextFocus = options.length - 1;\n    }\n\n    this.scrollToFocusedOptionOnUpdate = true;\n    this.setState({\n      focusedOption: options[nextFocus],\n      focusedValue: null\n    });\n    this.announceAriaLiveContext({\n      event: 'menu',\n      context: {\n        isDisabled: isOptionDisabled(options[nextFocus])\n      }\n    });\n  };\n\n  // ==============================\n  // Getters\n  // ==============================\n  _proto.getTheme = function getTheme() {\n    // Use the default theme if there are no customizations.\n    if (!this.props.theme) {\n      return defaultTheme;\n    } // If the theme prop is a function, assume the function\n    // knows how to merge the passed-in default theme with\n    // its own modifications.\n\n\n    if (typeof this.props.theme === 'function') {\n      return this.props.theme(defaultTheme);\n    } // Otherwise, if a plain theme object was passed in,\n    // overlay it with the default theme.\n\n\n    return _extends$4({}, defaultTheme, this.props.theme);\n  };\n\n  _proto.getCommonProps = function getCommonProps() {\n    var clearValue = this.clearValue,\n        getStyles = this.getStyles,\n        setValue = this.setValue,\n        selectOption = this.selectOption,\n        props = this.props;\n    var classNamePrefix = props.classNamePrefix,\n        isMulti = props.isMulti,\n        isRtl = props.isRtl,\n        options = props.options;\n    var selectValue = this.state.selectValue;\n    var hasValue = this.hasValue();\n\n    var getValue = function getValue() {\n      return selectValue;\n    };\n\n    var cx = classNames.bind(null, classNamePrefix);\n    return {\n      cx: cx,\n      clearValue: clearValue,\n      getStyles: getStyles,\n      getValue: getValue,\n      hasValue: hasValue,\n      isMulti: isMulti,\n      isRtl: isRtl,\n      options: options,\n      selectOption: selectOption,\n      setValue: setValue,\n      selectProps: props,\n      theme: this.getTheme()\n    };\n  };\n\n  _proto.getNextFocusedValue = function getNextFocusedValue(nextSelectValue) {\n    if (this.clearFocusValueOnUpdate) {\n      this.clearFocusValueOnUpdate = false;\n      return null;\n    }\n\n    var _this$state6 = this.state,\n        focusedValue = _this$state6.focusedValue,\n        lastSelectValue = _this$state6.selectValue;\n    var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n    if (lastFocusedIndex > -1) {\n      var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n      if (nextFocusedIndex > -1) {\n        // the focused value is still in the selectValue, return it\n        return focusedValue;\n      } else if (lastFocusedIndex < nextSelectValue.length) {\n        // the focusedValue is not present in the next selectValue array by\n        // reference, so return the new value at the same index\n        return nextSelectValue[lastFocusedIndex];\n      }\n    }\n\n    return null;\n  };\n\n  _proto.getNextFocusedOption = function getNextFocusedOption(options) {\n    var lastFocusedOption = this.state.focusedOption;\n    return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n  };\n\n  _proto.hasValue = function hasValue() {\n    var selectValue = this.state.selectValue;\n    return selectValue.length > 0;\n  };\n\n  _proto.hasOptions = function hasOptions() {\n    return !!this.state.menuOptions.render.length;\n  };\n\n  _proto.countOptions = function countOptions() {\n    return this.state.menuOptions.focusable.length;\n  };\n\n  _proto.isClearable = function isClearable() {\n    var _this$props12 = this.props,\n        isClearable = _this$props12.isClearable,\n        isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n    // multi select, by default, IS clearable\n\n    if (isClearable === undefined) return isMulti;\n    return isClearable;\n  };\n\n  _proto.isOptionDisabled = function isOptionDisabled(option, selectValue) {\n    return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n  };\n\n  _proto.isOptionSelected = function isOptionSelected(option, selectValue) {\n    var _this3 = this;\n\n    if (selectValue.indexOf(option) > -1) return true;\n\n    if (typeof this.props.isOptionSelected === 'function') {\n      return this.props.isOptionSelected(option, selectValue);\n    }\n\n    var candidate = this.getOptionValue(option);\n    return selectValue.some(function (i) {\n      return _this3.getOptionValue(i) === candidate;\n    });\n  };\n\n  _proto.filterOption = function filterOption(option, inputValue) {\n    return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n  };\n\n  _proto.formatOptionLabel = function formatOptionLabel(data, context) {\n    if (typeof this.props.formatOptionLabel === 'function') {\n      var inputValue = this.props.inputValue;\n      var selectValue = this.state.selectValue;\n      return this.props.formatOptionLabel(data, {\n        context: context,\n        inputValue: inputValue,\n        selectValue: selectValue\n      });\n    } else {\n      return this.getOptionLabel(data);\n    }\n  };\n\n  _proto.formatGroupLabel = function formatGroupLabel(data) {\n    return this.props.formatGroupLabel(data);\n  } // ==============================\n  // Mouse Handlers\n  // ==============================\n  ;\n\n  // ==============================\n  // Composition Handlers\n  // ==============================\n  _proto.startListeningComposition = function startListeningComposition() {\n    if (document && document.addEventListener) {\n      document.addEventListener('compositionstart', this.onCompositionStart, false);\n      document.addEventListener('compositionend', this.onCompositionEnd, false);\n    }\n  };\n\n  _proto.stopListeningComposition = function stopListeningComposition() {\n    if (document && document.removeEventListener) {\n      document.removeEventListener('compositionstart', this.onCompositionStart);\n      document.removeEventListener('compositionend', this.onCompositionEnd);\n    }\n  };\n\n  // ==============================\n  // Touch Handlers\n  // ==============================\n  _proto.startListeningToTouch = function startListeningToTouch() {\n    if (document && document.addEventListener) {\n      document.addEventListener('touchstart', this.onTouchStart, false);\n      document.addEventListener('touchmove', this.onTouchMove, false);\n      document.addEventListener('touchend', this.onTouchEnd, false);\n    }\n  };\n\n  _proto.stopListeningToTouch = function stopListeningToTouch() {\n    if (document && document.removeEventListener) {\n      document.removeEventListener('touchstart', this.onTouchStart);\n      document.removeEventListener('touchmove', this.onTouchMove);\n      document.removeEventListener('touchend', this.onTouchEnd);\n    }\n  };\n\n  // ==============================\n  // Renderers\n  // ==============================\n  _proto.constructAriaLiveMessage = function constructAriaLiveMessage() {\n    var _this$state7 = this.state,\n        ariaLiveContext = _this$state7.ariaLiveContext,\n        selectValue = _this$state7.selectValue,\n        focusedValue = _this$state7.focusedValue,\n        focusedOption = _this$state7.focusedOption;\n    var _this$props13 = this.props,\n        options = _this$props13.options,\n        menuIsOpen = _this$props13.menuIsOpen,\n        inputValue = _this$props13.inputValue,\n        screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n    var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n      focusedValue: focusedValue,\n      getOptionLabel: this.getOptionLabel,\n      selectValue: selectValue\n    }) : ''; // An aria live message representing the currently focused option in the select.\n\n    var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n      focusedOption: focusedOption,\n      getOptionLabel: this.getOptionLabel,\n      options: options\n    }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n    var resultsMsg = resultsAriaMessage({\n      inputValue: inputValue,\n      screenReaderMessage: screenReaderStatus({\n        count: this.countOptions()\n      })\n    });\n    return focusedValueMsg + \" \" + focusedOptionMsg + \" \" + resultsMsg + \" \" + ariaLiveContext;\n  };\n\n  _proto.renderInput = function renderInput() {\n    var _this$props14 = this.props,\n        isDisabled = _this$props14.isDisabled,\n        isSearchable = _this$props14.isSearchable,\n        inputId = _this$props14.inputId,\n        inputValue = _this$props14.inputValue,\n        tabIndex = _this$props14.tabIndex;\n    var Input = this.components.Input;\n    var inputIsHidden = this.state.inputIsHidden;\n    var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n    var ariaAttributes = {\n      'aria-autocomplete': 'list',\n      'aria-label': this.props['aria-label'],\n      'aria-labelledby': this.props['aria-labelledby']\n    };\n\n    if (!isSearchable) {\n      // use a dummy input to maintain focus/blur functionality\n      return React.createElement(DummyInput, _extends$4({\n        id: id,\n        innerRef: this.getInputRef,\n        onBlur: this.onInputBlur,\n        onChange: noop,\n        onFocus: this.onInputFocus,\n        readOnly: true,\n        disabled: isDisabled,\n        tabIndex: tabIndex,\n        value: \"\"\n      }, ariaAttributes));\n    }\n\n    var _this$commonProps = this.commonProps,\n        cx = _this$commonProps.cx,\n        theme = _this$commonProps.theme,\n        selectProps = _this$commonProps.selectProps;\n    return React.createElement(Input, _extends$4({\n      autoCapitalize: \"none\",\n      autoComplete: \"off\",\n      autoCorrect: \"off\",\n      cx: cx,\n      getStyles: this.getStyles,\n      id: id,\n      innerRef: this.getInputRef,\n      isDisabled: isDisabled,\n      isHidden: inputIsHidden,\n      onBlur: this.onInputBlur,\n      onChange: this.handleInputChange,\n      onFocus: this.onInputFocus,\n      selectProps: selectProps,\n      spellCheck: \"false\",\n      tabIndex: tabIndex,\n      theme: theme,\n      type: \"text\",\n      value: inputValue\n    }, ariaAttributes));\n  };\n\n  _proto.renderPlaceholderOrValue = function renderPlaceholderOrValue() {\n    var _this4 = this;\n\n    var _this$components = this.components,\n        MultiValue = _this$components.MultiValue,\n        MultiValueContainer = _this$components.MultiValueContainer,\n        MultiValueLabel = _this$components.MultiValueLabel,\n        MultiValueRemove = _this$components.MultiValueRemove,\n        SingleValue = _this$components.SingleValue,\n        Placeholder = _this$components.Placeholder;\n    var commonProps = this.commonProps;\n    var _this$props15 = this.props,\n        controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n        isDisabled = _this$props15.isDisabled,\n        isMulti = _this$props15.isMulti,\n        inputValue = _this$props15.inputValue,\n        placeholder = _this$props15.placeholder;\n    var _this$state8 = this.state,\n        selectValue = _this$state8.selectValue,\n        focusedValue = _this$state8.focusedValue,\n        isFocused = _this$state8.isFocused;\n\n    if (!this.hasValue() || !controlShouldRenderValue) {\n      return inputValue ? null : React.createElement(Placeholder, _extends$4({}, commonProps, {\n        key: \"placeholder\",\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), placeholder);\n    }\n\n    if (isMulti) {\n      var selectValues = selectValue.map(function (opt, index) {\n        var isOptionFocused = opt === focusedValue;\n        return React.createElement(MultiValue, _extends$4({}, commonProps, {\n          components: {\n            Container: MultiValueContainer,\n            Label: MultiValueLabel,\n            Remove: MultiValueRemove\n          },\n          isFocused: isOptionFocused,\n          isDisabled: isDisabled,\n          key: _this4.getOptionValue(opt),\n          index: index,\n          removeProps: {\n            onClick: function onClick() {\n              return _this4.removeValue(opt);\n            },\n            onTouchEnd: function onTouchEnd() {\n              return _this4.removeValue(opt);\n            },\n            onMouseDown: function onMouseDown(e) {\n              e.preventDefault();\n              e.stopPropagation();\n            }\n          },\n          data: opt\n        }), _this4.formatOptionLabel(opt, 'value'));\n      });\n      return selectValues;\n    }\n\n    if (inputValue) {\n      return null;\n    }\n\n    var singleValue = selectValue[0];\n    return React.createElement(SingleValue, _extends$4({}, commonProps, {\n      data: singleValue,\n      isDisabled: isDisabled\n    }), this.formatOptionLabel(singleValue, 'value'));\n  };\n\n  _proto.renderClearIndicator = function renderClearIndicator() {\n    var ClearIndicator = this.components.ClearIndicator;\n    var commonProps = this.commonProps;\n    var _this$props16 = this.props,\n        isDisabled = _this$props16.isDisabled,\n        isLoading = _this$props16.isLoading;\n    var isFocused = this.state.isFocused;\n\n    if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n      return null;\n    }\n\n    var innerProps = {\n      onMouseDown: this.onClearIndicatorMouseDown,\n      onTouchEnd: this.onClearIndicatorTouchEnd,\n      'aria-hidden': 'true'\n    };\n    return React.createElement(ClearIndicator, _extends$4({}, commonProps, {\n      innerProps: innerProps,\n      isFocused: isFocused\n    }));\n  };\n\n  _proto.renderLoadingIndicator = function renderLoadingIndicator() {\n    var LoadingIndicator = this.components.LoadingIndicator;\n    var commonProps = this.commonProps;\n    var _this$props17 = this.props,\n        isDisabled = _this$props17.isDisabled,\n        isLoading = _this$props17.isLoading;\n    var isFocused = this.state.isFocused;\n    if (!LoadingIndicator || !isLoading) return null;\n    var innerProps = {\n      'aria-hidden': 'true'\n    };\n    return React.createElement(LoadingIndicator, _extends$4({}, commonProps, {\n      innerProps: innerProps,\n      isDisabled: isDisabled,\n      isFocused: isFocused\n    }));\n  };\n\n  _proto.renderIndicatorSeparator = function renderIndicatorSeparator() {\n    var _this$components2 = this.components,\n        DropdownIndicator = _this$components2.DropdownIndicator,\n        IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n    if (!DropdownIndicator || !IndicatorSeparator) return null;\n    var commonProps = this.commonProps;\n    var isDisabled = this.props.isDisabled;\n    var isFocused = this.state.isFocused;\n    return React.createElement(IndicatorSeparator, _extends$4({}, commonProps, {\n      isDisabled: isDisabled,\n      isFocused: isFocused\n    }));\n  };\n\n  _proto.renderDropdownIndicator = function renderDropdownIndicator() {\n    var DropdownIndicator = this.components.DropdownIndicator;\n    if (!DropdownIndicator) return null;\n    var commonProps = this.commonProps;\n    var isDisabled = this.props.isDisabled;\n    var isFocused = this.state.isFocused;\n    var innerProps = {\n      onMouseDown: this.onDropdownIndicatorMouseDown,\n      onTouchEnd: this.onDropdownIndicatorTouchEnd,\n      'aria-hidden': 'true'\n    };\n    return React.createElement(DropdownIndicator, _extends$4({}, commonProps, {\n      innerProps: innerProps,\n      isDisabled: isDisabled,\n      isFocused: isFocused\n    }));\n  };\n\n  _proto.renderMenu = function renderMenu() {\n    var _this5 = this;\n\n    var _this$components3 = this.components,\n        Group = _this$components3.Group,\n        GroupHeading = _this$components3.GroupHeading,\n        Menu = _this$components3.Menu,\n        MenuList = _this$components3.MenuList,\n        MenuPortal = _this$components3.MenuPortal,\n        LoadingMessage = _this$components3.LoadingMessage,\n        NoOptionsMessage = _this$components3.NoOptionsMessage,\n        Option = _this$components3.Option;\n    var commonProps = this.commonProps;\n    var _this$state9 = this.state,\n        focusedOption = _this$state9.focusedOption,\n        menuOptions = _this$state9.menuOptions;\n    var _this$props18 = this.props,\n        captureMenuScroll = _this$props18.captureMenuScroll,\n        inputValue = _this$props18.inputValue,\n        isLoading = _this$props18.isLoading,\n        loadingMessage = _this$props18.loadingMessage,\n        minMenuHeight = _this$props18.minMenuHeight,\n        maxMenuHeight = _this$props18.maxMenuHeight,\n        menuIsOpen = _this$props18.menuIsOpen,\n        menuPlacement = _this$props18.menuPlacement,\n        menuPosition = _this$props18.menuPosition,\n        menuPortalTarget = _this$props18.menuPortalTarget,\n        menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n        menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n        noOptionsMessage = _this$props18.noOptionsMessage,\n        onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n        onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n    if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n    var render = function render(props) {\n      // for performance, the menu options in state aren't changed when the\n      // focused option changes so we calculate additional props based on that\n      var isFocused = focusedOption === props.data;\n      props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n      return React.createElement(Option, _extends$4({}, commonProps, props, {\n        isFocused: isFocused\n      }), _this5.formatOptionLabel(props.data, 'menu'));\n    };\n\n    var menuUI;\n\n    if (this.hasOptions()) {\n      menuUI = menuOptions.render.map(function (item) {\n        if (item.type === 'group') {\n          var type = item.type,\n              group = _objectWithoutPropertiesLoose$2(item, [\"type\"]);\n\n          var headingId = item.key + \"-heading\";\n          return React.createElement(Group, _extends$4({}, commonProps, group, {\n            Heading: GroupHeading,\n            headingProps: {\n              id: headingId\n            },\n            label: _this5.formatGroupLabel(item.data)\n          }), item.options.map(function (option) {\n            return render(option);\n          }));\n        } else if (item.type === 'option') {\n          return render(item);\n        }\n      });\n    } else if (isLoading) {\n      var message = loadingMessage({\n        inputValue: inputValue\n      });\n      if (message === null) return null;\n      menuUI = React.createElement(LoadingMessage, commonProps, message);\n    } else {\n      var _message = noOptionsMessage({\n        inputValue: inputValue\n      });\n\n      if (_message === null) return null;\n      menuUI = React.createElement(NoOptionsMessage, commonProps, _message);\n    }\n\n    var menuPlacementProps = {\n      minMenuHeight: minMenuHeight,\n      maxMenuHeight: maxMenuHeight,\n      menuPlacement: menuPlacement,\n      menuPosition: menuPosition,\n      menuShouldScrollIntoView: menuShouldScrollIntoView\n    };\n    var menuElement = React.createElement(MenuPlacer, _extends$4({}, commonProps, menuPlacementProps), function (_ref8) {\n      var ref = _ref8.ref,\n          _ref8$placerProps = _ref8.placerProps,\n          placement = _ref8$placerProps.placement,\n          maxHeight = _ref8$placerProps.maxHeight;\n      return React.createElement(Menu, _extends$4({}, commonProps, menuPlacementProps, {\n        innerRef: ref,\n        innerProps: {\n          onMouseDown: _this5.onMenuMouseDown,\n          onMouseMove: _this5.onMenuMouseMove\n        },\n        isLoading: isLoading,\n        placement: placement\n      }), React.createElement(ScrollCaptorSwitch, {\n        isEnabled: captureMenuScroll,\n        onTopArrive: onMenuScrollToTop,\n        onBottomArrive: onMenuScrollToBottom\n      }, React.createElement(ScrollBlock, {\n        isEnabled: menuShouldBlockScroll\n      }, React.createElement(MenuList, _extends$4({}, commonProps, {\n        innerRef: _this5.getMenuListRef,\n        isLoading: isLoading,\n        maxHeight: maxHeight\n      }), menuUI))));\n    }); // positioning behaviour is almost identical for portalled and fixed,\n    // so we use the same component. the actual portalling logic is forked\n    // within the component based on `menuPosition`\n\n    return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal, _extends$4({}, commonProps, {\n      appendTo: menuPortalTarget,\n      controlElement: this.controlRef,\n      menuPlacement: menuPlacement,\n      menuPosition: menuPosition\n    }), menuElement) : menuElement;\n  };\n\n  _proto.renderFormField = function renderFormField() {\n    var _this6 = this;\n\n    var _this$props19 = this.props,\n        delimiter = _this$props19.delimiter,\n        isDisabled = _this$props19.isDisabled,\n        isMulti = _this$props19.isMulti,\n        name = _this$props19.name;\n    var selectValue = this.state.selectValue;\n    if (!name || isDisabled) return;\n\n    if (isMulti) {\n      if (delimiter) {\n        var value = selectValue.map(function (opt) {\n          return _this6.getOptionValue(opt);\n        }).join(delimiter);\n        return React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: value\n        });\n      } else {\n        var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n          return React.createElement(\"input\", {\n            key: \"i-\" + i,\n            name: name,\n            type: \"hidden\",\n            value: _this6.getOptionValue(opt)\n          });\n        }) : React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\"\n        });\n        return React.createElement(\"div\", null, input);\n      }\n    } else {\n      var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n      return React.createElement(\"input\", {\n        name: name,\n        type: \"hidden\",\n        value: _value2\n      });\n    }\n  };\n\n  _proto.renderLiveRegion = function renderLiveRegion() {\n    if (!this.state.isFocused) return null;\n    return React.createElement(A11yText, {\n      \"aria-live\": \"polite\"\n    }, React.createElement(\"p\", {\n      id: \"aria-selection-event\"\n    }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n      id: \"aria-context\"\n    }, \"\\xA0\", this.constructAriaLiveMessage()));\n  };\n\n  _proto.render = function render() {\n    var _this$components4 = this.components,\n        Control = _this$components4.Control,\n        IndicatorsContainer = _this$components4.IndicatorsContainer,\n        SelectContainer = _this$components4.SelectContainer,\n        ValueContainer = _this$components4.ValueContainer;\n    var _this$props20 = this.props,\n        className = _this$props20.className,\n        id = _this$props20.id,\n        isDisabled = _this$props20.isDisabled,\n        menuIsOpen = _this$props20.menuIsOpen;\n    var isFocused = this.state.isFocused;\n    var commonProps = this.commonProps = this.getCommonProps();\n    return React.createElement(SelectContainer, _extends$4({}, commonProps, {\n      className: className,\n      innerProps: {\n        id: id,\n        onKeyDown: this.onKeyDown\n      },\n      isDisabled: isDisabled,\n      isFocused: isFocused\n    }), this.renderLiveRegion(), React.createElement(Control, _extends$4({}, commonProps, {\n      innerRef: this.getControlRef,\n      innerProps: {\n        onMouseDown: this.onControlMouseDown,\n        onTouchEnd: this.onControlTouchEnd\n      },\n      isDisabled: isDisabled,\n      isFocused: isFocused,\n      menuIsOpen: menuIsOpen\n    }), React.createElement(ValueContainer, _extends$4({}, commonProps, {\n      isDisabled: isDisabled\n    }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends$4({}, commonProps, {\n      isDisabled: isDisabled\n    }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n  };\n\n  return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\n\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };\n","import React, { Component } from 'react';\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\nvar defaultProps = {\n  defaultInputValue: '',\n  defaultMenuIsOpen: false,\n  defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(StateManager, _Component);\n\n    function StateManager() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n      _this.select = void 0;\n      _this.state = {\n        inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n        menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n        value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n      };\n\n      _this.onChange = function (value, actionMeta) {\n        _this.callProp('onChange', value, actionMeta);\n\n        _this.setState({\n          value: value\n        });\n      };\n\n      _this.onInputChange = function (value, actionMeta) {\n        // TODO: for backwards compatibility, we allow the prop to return a new\n        // value, but now inputValue is a controllable prop we probably shouldn't\n        var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n        _this.setState({\n          inputValue: newValue !== undefined ? newValue : value\n        });\n      };\n\n      _this.onMenuOpen = function () {\n        _this.callProp('onMenuOpen');\n\n        _this.setState({\n          menuIsOpen: true\n        });\n      };\n\n      _this.onMenuClose = function () {\n        _this.callProp('onMenuClose');\n\n        _this.setState({\n          menuIsOpen: false\n        });\n      };\n\n      return _this;\n    }\n\n    var _proto = StateManager.prototype;\n\n    _proto.focus = function focus() {\n      this.select.focus();\n    };\n\n    _proto.blur = function blur() {\n      this.select.blur();\n    } // FIXME: untyped flow code, return any\n    ;\n\n    _proto.getProp = function getProp(key) {\n      return this.props[key] !== undefined ? this.props[key] : this.state[key];\n    } // FIXME: untyped flow code, return any\n    ;\n\n    _proto.callProp = function callProp(name) {\n      if (typeof this.props[name] === 'function') {\n        var _this$props;\n\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n\n        return (_this$props = this.props)[name].apply(_this$props, args);\n      }\n    };\n\n    _proto.render = function render() {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          defaultInputValue = _this$props2.defaultInputValue,\n          defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n          defaultValue = _this$props2.defaultValue,\n          props = _objectWithoutPropertiesLoose(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n      return React.createElement(SelectComponent, _extends({}, props, {\n        ref: function ref(_ref) {\n          _this2.select = _ref;\n        },\n        inputValue: this.getProp('inputValue'),\n        menuIsOpen: this.getProp('menuIsOpen'),\n        onChange: this.onChange,\n        onInputChange: this.onInputChange,\n        onMenuClose: this.onMenuClose,\n        onMenuOpen: this.onMenuOpen,\n        value: this.getProp('value')\n      }));\n    };\n\n    return StateManager;\n  }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };\n","import React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CacheProvider } from '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport './utils-06b0d5a4.browser.esm.js';\nexport { y as components } from './index-4322c0ed.browser.esm.js';\nimport { S as Select } from './Select-9fdb8cd0.browser.esm.js';\nexport { c as createFilter, a as defaultTheme, m as mergeStyles } from './Select-9fdb8cd0.browser.esm.js';\nimport '@emotion/css';\nimport 'react-input-autosize';\nimport { m as manageState } from './stateManager-04f734a2.browser.esm.js';\nimport createCache from '@emotion/cache';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar NonceProvider =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose(NonceProvider, _Component);\n\n  function NonceProvider(props) {\n    var _this;\n\n    _this = _Component.call(this, props) || this;\n\n    _this.createEmotionCache = function (nonce) {\n      return createCache({\n        nonce: nonce\n      });\n    };\n\n    _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n    return _this;\n  }\n\n  var _proto = NonceProvider.prototype;\n\n  _proto.render = function render() {\n    var emotionCache = this.createEmotionCache(this.props.nonce);\n    return React.createElement(CacheProvider, {\n      value: emotionCache\n    }, this.props.children);\n  };\n\n  return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      f.apply(this, args);\n    };\n  }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'a' : _ref$as,\n      disabled = _ref.disabled,\n      onKeyDown = _ref.onKeyDown,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"disabled\", \"onKeyDown\"]);\n\n  var handleClick = function handleClick(event) {\n    var href = props.href,\n        onClick = props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      handleClick(event);\n    }\n  };\n\n  if (isTrivialHref(props.href)) {\n    props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n    // otherwise, the cursor incorrectly styled (except with role='button')\n\n    props.href = props.href || '#';\n  }\n\n  if (disabled) {\n    props.tabIndex = -1;\n    props['aria-disabled'] = true;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    onClick: handleClick,\n    onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n  }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false,\n  type: 'button'\n};\nvar Button = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classNames(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n      as: as,\n      ref: ref,\n      className: classNames(classes, props.disabled && 'disabled')\n    }));\n  }\n\n  if (ref) {\n    props.ref = ref;\n  }\n\n  if (!as) {\n    props.type = type;\n  }\n\n  var Component = as || 'button';\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    className: classes\n  }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: PropTypes.string.isRequired,\n  as: PropTypes.elementType\n};\nvar defaultProps = {\n  type: 'valid'\n};\nvar Feedback = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      className = _ref.className,\n      type = _ref.type,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, type && type + \"-feedback\")\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nFeedback.defaultProps = defaultProps;\nexport default Feedback;","import React from 'react';\nvar FormContext = React.createContext({\n  controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckInput = React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      isStatic = _ref.isStatic,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.defaultProps = defaultProps;\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix)\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  type: 'checkbox',\n  inline: false,\n  disabled: false,\n  isValid: false,\n  isInvalid: false,\n  title: ''\n};\nvar FormCheck = React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      inline = _ref.inline,\n      disabled = _ref.disabled,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      type = _ref.type,\n      label = _ref.label,\n      children = _ref.children,\n      propCustom = _ref.custom,\n      _ref$as = _ref.as,\n      as = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"]);\n\n  var custom = type === 'switch' ? true : propCustom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n    type: type === 'switch' ? 'checkbox' : type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    as: as\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n    title: title\n  }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid'\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.defaultProps = defaultProps;\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      lang = _ref.lang,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var type = 'file';\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    type: type,\n    lang: lang,\n    className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n  }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classNames(className, bsPrefix),\n    \"data-browse\": props['data-browse']\n  }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  disabled: false,\n  isValid: false,\n  isInvalid: false\n};\nvar FormFile = React.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      disabled = _ref.disabled,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      lang = _ref.lang,\n      dataBrowse = _ref['data-browse'],\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      _ref$inputAs = _ref.inputAs,\n      inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"]);\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var type = 'file';\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = useMemo(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    disabled: disabled,\n    as: inputAs,\n    lang: lang\n  }));\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: innerFormContext\n  }, /*#__PURE__*/React.createElement(Component, {\n    style: style,\n    className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n  }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n    \"data-browse\": dataBrowse\n  }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n    type: isValid ? 'valid' : 'invalid'\n  }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.defaultProps = defaultProps;\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      bsCustomPrefix = _ref.bsCustomPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      id = _ref.id,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      custom = _ref.custom,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'input' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n      prefix = _ref2[0],\n      defaultPrefix = _ref2[1];\n\n  bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else if (type === 'range') {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n  } else if (Component === 'select' && custom) {\n    var _classes4;\n\n    classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n  } else {\n    var _classes5;\n\n    classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    type: type,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n  }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.Feedback = Feedback;\nexport default FormControl;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = useMemo(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: context\n  }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix)\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span, offset, order;\n\n    if (propValue != null && typeof propValue === 'object') {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames.apply(void 0, [className].concat(spans, classes))\n  }));\n});\nCol.displayName = 'Col';\nexport default Col;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = React.forwardRef(function (_ref, ref) {\n  var _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'label' : _ref$as,\n      bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n  var _useContext = useContext(FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var columnClass = 'col-form-label';\n  if (typeof column === 'string') columnClass = columnClass + \"-\" + column;\n  var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n  process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n  htmlFor = htmlFor || controlId;\n  if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n    as: \"label\",\n    className: classes,\n    htmlFor: htmlFor\n  }, props));\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    React.createElement(Component, _extends({\n      ref: ref,\n      className: classes,\n      htmlFor: htmlFor\n    }, props))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'small' : _ref$as,\n      muted = _ref.muted,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\", \"muted\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, bsPrefix, muted && 'text-muted')\n  }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n    ref: ref,\n    type: \"switch\"\n  }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar defaultProps = {\n  inline: false\n};\nvar Form = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'form' : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n  }));\n});\nForm.displayName = 'Form';\nForm.defaultProps = defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = FormGroup;\nForm.Control = FormControl;\nForm.Check = FormCheck;\nForm.File = FormFile;\nForm.Switch = Switch;\nForm.Label = FormLabel;\nForm.Text = FormText;\nexport default Form;","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getListItems } from '../../../actions/dashboard';\n\nclass SelectList extends Component {\n    componentDidMount() {\n        getListItems(this.props.item.options.url.replace('http://localhost:8080/application/', ''), this.props.item.recid);\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.item.options.url !== prevProps.item.options.url) {\n            getListItems(this.props.item.options.url.replace('http://localhost:8080/application/', ''), this.props.item.recid)\n        }\n    }\n\n    render() {\n        const { item, onChange, value, isDisabled } =  this.props;\n        const listItems = (item.optionValues) ? item.optionValues : [];\n        return (\n            <div className=\"form-group\">\n                <select\n                    className=\"form-control\"\n                    name={item.name}\n                    value={value}\n                    onChange={(e) => {\n                        const listItem = listItems.find((c) => c.recid === e.target.value)\n                        onChange(listItem, item.name)\n                    }}\n                    disabled={isDisabled}\n                >\n                    <option>Select option</option>\n                    {listItems && listItems.map((listItem) =>\n                        <option key={listItem.recid} value={listItem.recid}>{listItem.text}</option>\n                    )}\n\n                </select>\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\nexport default connect(mapDispatchToProps)(SelectList);\n","/**\n * @hidden\n */\nexport var classNames = function () {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return args\n        .filter(function (arg) { return arg !== true && !!arg; })\n        .map(function (arg) {\n        return Array.isArray(arg)\n            ? classNames.apply(void 0, arg) : typeof arg === 'object'\n            ? Object\n                .keys(arg)\n                .map(function (key, idx) { return arg[idx] || (arg[key] && key) || null; })\n                .filter(function (el) { return el !== null; })\n                .join(' ')\n            : arg;\n    })\n        .filter(function (arg) { return !!arg; })\n        .join(' ');\n};\n//# sourceMappingURL=classNames.js.map","/* tslint:disable:no-bitwise */\n/**\n * @hidden\n */\nvar guid = function () {\n    var id = '';\n    var i;\n    var random;\n    for (i = 0; i < 32; i++) {\n        random = Math.random() * 16 | 0;\n        if (i === 8 || i === 12 || i === 16 || i === 20) {\n            id += '-';\n        }\n        id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n    }\n    return id;\n};\nexport { guid };\n//# sourceMappingURL=guid.js.map","/**\n * @hidden\n */\nvar Keys = {\n    backspace: 8,\n    tab: 9,\n    enter: 13,\n    shift: 16,\n    esc: 27,\n    space: 32,\n    pageUp: 33,\n    pageDown: 34,\n    end: 35,\n    home: 36,\n    left: 37,\n    up: 38,\n    right: 39,\n    down: 40,\n    delete: 46\n};\nexport { Keys };\n//# sourceMappingURL=keys.js.map","/**\n * @hidden\n */\nvar noop = function () { };\nexport { noop };\n//# sourceMappingURL=noop.js.map","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n *  other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport default function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n    if (eventHandler) {\n        var eventBaseData = {\n            syntheticEvent: dispatchedEvent,\n            nativeEvent: dispatchedEvent.nativeEvent,\n            target: target\n        };\n        eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n    }\n}\n//# sourceMappingURL=dispatchEvent.js.map","/**\n * @hidden\n */\nvar canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n    window.document &&\n    window.document.createElement);\nexport { canUseDOM };\n//# sourceMappingURL=canUseDOM.js.map","var proxy = function (a, b) { return function (e) { return b(a(e)); }; };\n\nvar bind = function (el, event, callback) { return el.addEventListener && el.addEventListener(event, callback); };\n\nvar unbind = function (el, event, callback) { return el && el.removeEventListener && el.removeEventListener(event, callback); };\n\nvar noop = function () { /* empty */ };\n\nvar preventDefault = function (e) { return e.preventDefault(); };\n\nvar touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n    if (e.type.match(touchRegExp)) {\n        return {\n            pageX: e.changedTouches[0].pageX,\n            pageY: e.changedTouches[0].pageY,\n            clientX: e.changedTouches[0].clientX,\n            clientY: e.changedTouches[0].clientY,\n            type: e.type,\n            originalEvent: e,\n            isTouch: true\n        };\n    }\n\n    return {\n        pageX: e.pageX,\n        pageY: e.pageY,\n        clientX: e.clientX,\n        clientY: e.clientY,\n        offsetX: e.offsetX,\n        offsetY: e.offsetY,\n        type: e.type,\n        ctrlKey: e.ctrlKey,\n        shiftKey: e.shiftKey,\n        altKey: e.altKey,\n        originalEvent: e\n    };\n}\n\nexport var Draggable = function Draggable(ref) {\n    var this$1 = this;\n    var press = ref.press; if ( press === void 0 ) press = noop;\n    var drag = ref.drag; if ( drag === void 0 ) drag = noop;\n    var release = ref.release; if ( release === void 0 ) release = noop;\n    var mouseOnly = ref.mouseOnly; if ( mouseOnly === void 0 ) mouseOnly = false;\n\n    this._pressHandler = proxy(normalizeEvent, press);\n    this._dragHandler = proxy(normalizeEvent, drag);\n    this._releaseHandler = proxy(normalizeEvent, release);\n    this._ignoreMouse = false;\n    this._mouseOnly = mouseOnly;\n\n    this._touchstart = function (e) {\n        if (e.touches.length === 1) {\n            this$1._pressHandler(e);\n        }\n    };\n\n    this._touchmove = function (e) {\n        if (e.touches.length === 1) {\n            this$1._dragHandler(e);\n        }\n    };\n\n    this._touchend = function (e) {\n        // the last finger has been lifted, and the user is not doing gesture.\n        // there might be a better way to handle this.\n        if (e.touches.length === 0 && e.changedTouches.length === 1) {\n            this$1._releaseHandler(e);\n            this$1._ignoreMouse = true;\n            setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n        }\n    };\n\n    this._restoreMouse = function () {\n        this$1._ignoreMouse = false;\n    };\n\n    this._mousedown = function (e) {\n        var which = e.which;\n\n        if ((which && which > 1) || this$1._ignoreMouse) {\n            return;\n        }\n\n        bind(document, \"mousemove\", this$1._mousemove);\n        bind(document, \"mouseup\", this$1._mouseup);\n        this$1._pressHandler(e);\n    };\n\n    this._mousemove = function (e) {\n        this$1._dragHandler(e);\n    };\n\n    this._mouseup = function (e) {\n        unbind(document, \"mousemove\", this$1._mousemove);\n        unbind(document, \"mouseup\", this$1._mouseup);\n        this$1._releaseHandler(e);\n    };\n\n    this._pointerdown = function (e) {\n        if (e.isPrimary && e.button === 0) {\n            bind(document, \"pointermove\", this$1._pointermove);\n            bind(document, \"pointerup\", this$1._pointerup);\n            bind(document, \"pointercancel\", this$1._pointerup);\n            bind(document, \"contextmenu\", preventDefault);\n\n            this$1._pressHandler(e);\n        }\n    };\n\n    this._pointermove = function (e) {\n        if (e.isPrimary) {\n            this$1._dragHandler(e);\n        }\n    };\n\n    this._pointerup = function (e) {\n        if (e.isPrimary) {\n            unbind(document, \"pointermove\", this$1._pointermove);\n            unbind(document, \"pointerup\", this$1._pointerup);\n            unbind(document, \"pointercancel\", this$1._pointerup);\n            unbind(document, \"contextmenu\", preventDefault);\n\n            this$1._releaseHandler(e);\n        }\n    };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent () {\n    return (typeof window !== 'undefined') && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo (element) {\n    if (element === this._element) {\n        return;\n    }\n\n    if (this._element) {\n        this._unbindFromCurrent();\n    }\n\n    this._element = element;\n    this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent () {\n    var element = this._element;\n\n    if (this._usePointers()) {\n        bind(element, \"pointerdown\", this._pointerdown);\n        return;\n    }\n\n    bind(element, \"mousedown\", this._mousedown);\n\n    if (!this._mouseOnly) {\n        bind(element, \"touchstart\", this._touchstart);\n        bind(element, \"touchmove\", this._touchmove);\n        bind(element, \"touchend\", this._touchend);\n    }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent () {\n    var element = this._element;\n\n    if (this._usePointers()) {\n        unbind(element, \"pointerdown\", this._pointerdown);\n        unbind(document, \"pointermove\", this._pointermove);\n        unbind(document, \"pointerup\", this._pointerup);\n        unbind(document, \"contextmenu\", preventDefault);\n        unbind(document, \"pointercancel\", this._pointerup);\n        return;\n    }\n\n    unbind(element, \"mousedown\", this._mousedown);\n\n    if (!this._mouseOnly) {\n        unbind(element, \"touchstart\", this._touchstart);\n        unbind(element, \"touchmove\", this._touchmove);\n        unbind(element, \"touchend\", this._touchend);\n    }\n};\n\nDraggable.prototype._usePointers = function _usePointers () {\n    return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.update = function update (ref) {\n        var press = ref.press; if ( press === void 0 ) press = noop;\n        var drag = ref.drag; if ( drag === void 0 ) drag = noop;\n        var release = ref.release; if ( release === void 0 ) release = noop;\n        var mouseOnly = ref.mouseOnly; if ( mouseOnly === void 0 ) mouseOnly = false;\n\n    this._pressHandler = proxy(normalizeEvent, press);\n    this._dragHandler = proxy(normalizeEvent, drag);\n    this._releaseHandler = proxy(normalizeEvent, release);\n    this._mouseOnly = mouseOnly;\n};\n\nDraggable.prototype.destroy = function destroy () {\n    this._unbindFromCurrent();\n    this._element = null;\n};\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\nvar Draggable = /** @class */ (function (_super) {\n    __extends(Draggable, _super);\n    function Draggable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.element = null;\n        _this.draggable = new KendoDraggable({\n            press: function (event) {\n                if (_this.element && _this.props.onPress) {\n                    _this.props.onPress.call(undefined, {\n                        target: _this,\n                        event: event,\n                        element: _this.element\n                    });\n                }\n            },\n            drag: function (event) {\n                if (_this.element && _this.props.onDrag) {\n                    _this.props.onDrag.call(undefined, {\n                        target: _this,\n                        event: event,\n                        element: _this.element\n                    });\n                }\n            },\n            release: function (event) {\n                if (_this.element && _this.props.onRelease) {\n                    _this.props.onRelease.call(undefined, {\n                        target: _this,\n                        event: event\n                    });\n                }\n            }\n        });\n        _this.assingRef = function (element) {\n            _this.element = element;\n        };\n        return _this;\n    }\n    Draggable.prototype.componentDidMount = function () {\n        if (this.element) {\n            this.draggable.bindTo(this.element);\n        }\n    };\n    Draggable.prototype.componentWillUnmount = function () {\n        this.draggable.destroy();\n    };\n    Draggable.prototype.render = function () {\n        return (React.cloneElement(React.Children.only(this.props.children), {\n            ref: this.assingRef\n        }));\n    };\n    Draggable.propTypes = {\n        children: PropTypes.element.isRequired\n    };\n    return Draggable;\n}(React.Component));\nexport { Draggable };\n//# sourceMappingURL=Draggable.js.map","/**\n * @hidden\n */\nexport var focusFirstFocusableChild = function (target) {\n    if (target) {\n        if ((target instanceof HTMLInputElement || target.tabIndex !== -1) && target.focus) {\n            target.focus();\n            return;\n        }\n        var element = target.querySelector('input, [tabindex]:not([tabindex=\"-1\"])');\n        if (element && element.focus) {\n            element.focus();\n        }\n    }\n};\n//# sourceMappingURL=focus.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nexport function useDir(elementRef, initialDir, args) {\n    // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n    var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n    React.useEffect(function () {\n        if (!dir && window && elementRef.current) {\n            // Note: getComputedStyle forces reflow\n            var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n            if (rtlCandidate) {\n                // rerender is needed as DOM is read after first render\n                setDir(rtlCandidate);\n            }\n        }\n    }, args);\n    return dir;\n}\n/**\n * An utility function for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility hook for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n */\nexport function useAsyncFocusBlur(_a) {\n    var onFocus = _a.onFocus, onBlur = _a.onBlur;\n    var tick = React.useRef(0);\n    var nextTick = React.useCallback(function (f) {\n        clearTimeout(tick.current);\n        tick.current = setTimeout(function () { return f(); });\n    }, [tick]);\n    var handleFocus = React.useCallback(function () {\n        var event = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            event[_i] = arguments[_i];\n        }\n        clearTimeout(tick.current);\n        if (onFocus) {\n            onFocus.call.apply(onFocus, [undefined].concat(event));\n        }\n    }, [onFocus, tick]);\n    var handleBlur = React.useCallback(function () {\n        var event = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            event[_i] = arguments[_i];\n        }\n        nextTick(function () { if (onBlur) {\n            onBlur.call.apply(onBlur, [undefined].concat(event));\n        } });\n    }, [nextTick]);\n    return {\n        onFocus: handleFocus,\n        onBlur: handleBlur\n    };\n}\n//# sourceMappingURL=useDir.js.map","import * as React from 'react';\n// Same as 'useDir'. Export to avoid breaking change.\n// 'useRtl' is incorrect naming, since applies that the returned value is `true` or `false`.\n// but instead, it is returning `ltr` or `rtl`.\n/**\n * @hidden\n */\nexport function useRtl(elementRef, initialDir, args) {\n    // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n    var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n    React.useEffect(function () {\n        if (!dir && window && elementRef.current) {\n            // Note: getComputedStyle forces reflow\n            var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n            if (rtlCandidate) {\n                // rerender is needed as DOM is read after first render\n                setDir(rtlCandidate);\n            }\n        }\n    }, args);\n    return dir;\n}\n//# sourceMappingURL=useRtl.js.map","import { fieldList } from './fieldList';\nvar getterCache = {};\ngetterCache.undefined = function () { return undefined; };\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserLastName = getter('user[0].lastName');\n *\n * console.log(firstUserLastName(values))\n *\n * // result: 'Doe'\n * ```\n */\nexport function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n    var fields = fieldList(field);\n    getterCache[field] = function (obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n        return result;\n    };\n    return getterCache[field];\n}\n//# sourceMappingURL=getter.js.map","/**\n * @hidden\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n/**\n * @hidden\n */\nexport function clone(obj) {\n    var result = {};\n    cloneObject(obj, result);\n    return result;\n}\n/**\n * @hidden\n */\nexport function cloneObject(obj, result) {\n    for (var field in obj) {\n        if (obj.hasOwnProperty(field)) {\n            var value = obj[field];\n            result[field] = cloneValue(value, result[field]);\n        }\n    }\n}\n/**\n * @hidden\n */\nexport function cloneValue(value, nextValue) {\n    if (Array.isArray(value)) {\n        return cloneArray(value);\n    }\n    else if (value instanceof Date) {\n        return cloneDate(value);\n    }\n    else if (value && typeof value === 'object') {\n        var newNextValue = nextValue || {};\n        cloneObject(value, newNextValue);\n        return newNextValue;\n    }\n    else {\n        return value;\n    }\n}\n/**\n * @hidden\n */\nexport function cloneArray(array) {\n    return array.map(function (value) { return cloneValue(value, undefined); });\n}\n//# sourceMappingURL=clone.js.map","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\nexport var getTabIndex = function (tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n    var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n    if (parsedTabIndex === NaN) {\n        return undefined;\n    }\n    return parsedTabIndex !== undefined\n        ? parsedTabIndex\n        : disabled ?\n            (useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX)\n            : DEFAULT_TABINDEX;\n};\n//# sourceMappingURL=getTabIndex.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nvar dots = '...';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n    __extends(PagerNumericButtons, _super);\n    function PagerNumericButtons() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handlePageChange = function (e, page) {\n            e.preventDefault();\n            _this.props.pageChange(page, e);\n        };\n        return _this;\n    }\n    PagerNumericButtons.prototype.render = function () {\n        var _this = this;\n        var prevDots = this.start > 1 && this.renderDots(this.start - 1);\n        var postDots = this.end < this.props.totalPages && this.renderDots(this.end + 1);\n        var buttons = [];\n        for (var idx = this.start; idx <= this.end; idx++) {\n            buttons.push(idx);\n        }\n        var numerics = buttons.map(function (page) { return (React.createElement(\"li\", { key: page },\n            React.createElement(\"a\", { href: \"#\", onClick: function (e) { return _this.handlePageChange(e, page); }, className: classNames('k-link', {\n                    'k-state-selected': _this.props.currentPage === page\n                }) }, page))); });\n        return (React.createElement(\"ul\", { className: \"k-pager-numbers k-reset\" },\n            prevDots,\n            numerics,\n            postDots));\n    };\n    PagerNumericButtons.prototype.renderDots = function (page) {\n        var _this = this;\n        return (React.createElement(\"li\", null,\n            React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.handlePageChange(e, page); }, href: \"#\" }, dots)));\n    };\n    Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n        get: function () {\n            return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n        get: function () {\n            var page = this.props.currentPage;\n            var buttonCount = this.props.buttonCount;\n            if (page > buttonCount) {\n                var reminder = (page % buttonCount);\n                return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n            }\n            return 1;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n//# sourceMappingURL=PagerNumericButtons.js.map","var defaultData = {\n    en: {\n        name: \"en\",\n        identity: {\n            version: {\n                _number: \"$Revision: 12418 $\",\n                _cldrVersion: \"29\"\n            },\n            language: \"en\"\n        },\n        territory: \"US\",\n        numbers: {\n            symbols: {\n                decimal: \".\",\n                group: \",\",\n                list: \";\",\n                percentSign: \"%\",\n                plusSign: \"+\",\n                minusSign: \"-\",\n                exponential: \"E\",\n                superscriptingExponent: \"×\",\n                perMille: \"‰\",\n                infinity: \"∞\",\n                nan: \"NaN\",\n                timeSeparator: \":\"\n            },\n            decimal: {\n                patterns: [\n                    \"n\"\n                ],\n                groupSize: [\n                    3\n                ]\n            },\n            scientific: {\n                patterns: [\n                    \"nEn\"\n                ],\n                groupSize: []\n            },\n            percent: {\n                patterns: [\n                    \"n%\"\n                ],\n                groupSize: [\n                    3\n                ]\n            },\n            currency: {\n                patterns: [\n                    \"$n\"\n                ],\n                groupSize: [\n                    3\n                ],\n                \"unitPattern-count-one\": \"n $\",\n                \"unitPattern-count-other\": \"n $\"\n            },\n            currencies: {\n                BGN: {\n                    displayName: \"Bulgarian Lev\",\n                    \"displayName-count-one\": \"Bulgarian lev\",\n                    \"displayName-count-other\": \"Bulgarian leva\",\n                    symbol: \"BGN\"\n                },\n                EUR: {\n                    displayName: \"Euro\",\n                    \"displayName-count-one\": \"euro\",\n                    \"displayName-count-other\": \"euros\",\n                    symbol: \"€\",\n                    \"symbol-alt-narrow\": \"€\"\n                },\n                USD: {\n                    displayName: \"US Dollar\",\n                    \"displayName-count-one\": \"US dollar\",\n                    \"displayName-count-other\": \"US dollars\",\n                    symbol: \"$\",\n                    \"symbol-alt-narrow\": \"$\"\n                }\n            },\n            localeCurrency: \"USD\",\n            accounting: {\n                patterns: [\n                    \"$n\",\n                    \"($n)\"\n                ],\n                groupSize: [\n                    3\n                ]\n            }\n        },\n        calendar: {\n            gmtFormat: \"GMT{0}\",\n            gmtZeroFormat: \"GMT\",\n            patterns: {\n                d: \"M/d/y\",\n                D: \"EEEE, MMMM d, y\",\n                m: \"MMM d\",\n                M: \"MMMM d\",\n                y: \"MMM y\",\n                Y: \"MMMM y\",\n                F: \"EEEE, MMMM d, y h:mm:ss a\",\n                g: \"M/d/y h:mm a\",\n                G: \"M/d/y h:mm:ss a\",\n                t: \"h:mm a\",\n                T: \"h:mm:ss a\",\n                s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n                u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n            },\n            dateTimeFormats: {\n                full: \"{1} 'at' {0}\",\n                long: \"{1} 'at' {0}\",\n                medium: \"{1}, {0}\",\n                short: \"{1}, {0}\",\n                availableFormats: {\n                    Bh: \"h B\",\n                    Bhm: \"h:mm B\",\n                    Bhms: \"h:mm:ss B\",\n                    d: \"d\",\n                    E: \"ccc\",\n                    EBhm: \"E h:mm B\",\n                    EBhms: \"E h:mm:ss B\",\n                    Ed: \"d E\",\n                    Ehm: \"E h:mm a\",\n                    EHm: \"E HH:mm\",\n                    Ehms: \"E h:mm:ss a\",\n                    EHms: \"E HH:mm:ss\",\n                    Gy: \"y G\",\n                    GyMMM: \"MMM y G\",\n                    GyMMMd: \"MMM d, y G\",\n                    GyMMMEd: \"E, MMM d, y G\",\n                    h: \"h a\",\n                    H: \"HH\",\n                    hm: \"h:mm a\",\n                    Hm: \"HH:mm\",\n                    hms: \"h:mm:ss a\",\n                    Hms: \"HH:mm:ss\",\n                    hmsv: \"h:mm:ss a v\",\n                    Hmsv: \"HH:mm:ss v\",\n                    hmv: \"h:mm a v\",\n                    Hmv: \"HH:mm v\",\n                    M: \"L\",\n                    Md: \"M/d\",\n                    MEd: \"E, M/d\",\n                    MMM: \"LLL\",\n                    MMMd: \"MMM d\",\n                    MMMEd: \"E, MMM d\",\n                    MMMMd: \"MMMM d\",\n                    \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n                    \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n                    ms: \"mm:ss\",\n                    y: \"y\",\n                    yM: \"M/y\",\n                    yMd: \"M/d/y\",\n                    yMEd: \"E, M/d/y\",\n                    yMMM: \"MMM y\",\n                    yMMMd: \"MMM d, y\",\n                    yMMMEd: \"E, MMM d, y\",\n                    yMMMM: \"MMMM y\",\n                    yQQQ: \"QQQ y\",\n                    yQQQQ: \"QQQQ y\",\n                    \"yw-count-one\": \"'week' w 'of' Y\",\n                    \"yw-count-other\": \"'week' w 'of' Y\"\n                }\n            },\n            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            },\n            dateFormats: {\n                full: \"EEEE, MMMM d, y\",\n                long: \"MMMM d, y\",\n                medium: \"MMM d, y\",\n                short: \"M/d/yy\"\n            },\n            days: {\n                format: {\n                    abbreviated: [\n                        \"Sun\",\n                        \"Mon\",\n                        \"Tue\",\n                        \"Wed\",\n                        \"Thu\",\n                        \"Fri\",\n                        \"Sat\"\n                    ],\n                    narrow: [\n                        \"S\",\n                        \"M\",\n                        \"T\",\n                        \"W\",\n                        \"T\",\n                        \"F\",\n                        \"S\"\n                    ],\n                    short: [\n                        \"Su\",\n                        \"Mo\",\n                        \"Tu\",\n                        \"We\",\n                        \"Th\",\n                        \"Fr\",\n                        \"Sa\"\n                    ],\n                    wide: [\n                        \"Sunday\",\n                        \"Monday\",\n                        \"Tuesday\",\n                        \"Wednesday\",\n                        \"Thursday\",\n                        \"Friday\",\n                        \"Saturday\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Sun\",\n                        \"Mon\",\n                        \"Tue\",\n                        \"Wed\",\n                        \"Thu\",\n                        \"Fri\",\n                        \"Sat\"\n                    ],\n                    narrow: [\n                        \"S\",\n                        \"M\",\n                        \"T\",\n                        \"W\",\n                        \"T\",\n                        \"F\",\n                        \"S\"\n                    ],\n                    short: [\n                        \"Su\",\n                        \"Mo\",\n                        \"Tu\",\n                        \"We\",\n                        \"Th\",\n                        \"Fr\",\n                        \"Sa\"\n                    ],\n                    wide: [\n                        \"Sunday\",\n                        \"Monday\",\n                        \"Tuesday\",\n                        \"Wednesday\",\n                        \"Thursday\",\n                        \"Friday\",\n                        \"Saturday\"\n                    ]\n                }\n            },\n            months: {\n                format: {\n                    abbreviated: [\n                        \"Jan\",\n                        \"Feb\",\n                        \"Mar\",\n                        \"Apr\",\n                        \"May\",\n                        \"Jun\",\n                        \"Jul\",\n                        \"Aug\",\n                        \"Sep\",\n                        \"Oct\",\n                        \"Nov\",\n                        \"Dec\"\n                    ],\n                    narrow: [\n                        \"J\",\n                        \"F\",\n                        \"M\",\n                        \"A\",\n                        \"M\",\n                        \"J\",\n                        \"J\",\n                        \"A\",\n                        \"S\",\n                        \"O\",\n                        \"N\",\n                        \"D\"\n                    ],\n                    wide: [\n                        \"January\",\n                        \"February\",\n                        \"March\",\n                        \"April\",\n                        \"May\",\n                        \"June\",\n                        \"July\",\n                        \"August\",\n                        \"September\",\n                        \"October\",\n                        \"November\",\n                        \"December\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Jan\",\n                        \"Feb\",\n                        \"Mar\",\n                        \"Apr\",\n                        \"May\",\n                        \"Jun\",\n                        \"Jul\",\n                        \"Aug\",\n                        \"Sep\",\n                        \"Oct\",\n                        \"Nov\",\n                        \"Dec\"\n                    ],\n                    narrow: [\n                        \"J\",\n                        \"F\",\n                        \"M\",\n                        \"A\",\n                        \"M\",\n                        \"J\",\n                        \"J\",\n                        \"A\",\n                        \"S\",\n                        \"O\",\n                        \"N\",\n                        \"D\"\n                    ],\n                    wide: [\n                        \"January\",\n                        \"February\",\n                        \"March\",\n                        \"April\",\n                        \"May\",\n                        \"June\",\n                        \"July\",\n                        \"August\",\n                        \"September\",\n                        \"October\",\n                        \"November\",\n                        \"December\"\n                    ]\n                }\n            },\n            quarters: {\n                format: {\n                    abbreviated: [\n                        \"Q1\",\n                        \"Q2\",\n                        \"Q3\",\n                        \"Q4\"\n                    ],\n                    narrow: [\n                        \"1\",\n                        \"2\",\n                        \"3\",\n                        \"4\"\n                    ],\n                    wide: [\n                        \"1st quarter\",\n                        \"2nd quarter\",\n                        \"3rd quarter\",\n                        \"4th quarter\"\n                    ]\n                },\n                \"stand-alone\": {\n                    abbreviated: [\n                        \"Q1\",\n                        \"Q2\",\n                        \"Q3\",\n                        \"Q4\"\n                    ],\n                    narrow: [\n                        \"1\",\n                        \"2\",\n                        \"3\",\n                        \"4\"\n                    ],\n                    wide: [\n                        \"1st quarter\",\n                        \"2nd quarter\",\n                        \"3rd quarter\",\n                        \"4th quarter\"\n                    ]\n                }\n            },\n            dayPeriods: {\n                format: {\n                    abbreviated: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    },\n                    narrow: {\n                        midnight: \"mi\",\n                        am: \"a\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"n\",\n                        pm: \"p\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    },\n                    wide: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"in the morning\",\n                        afternoon1: \"in the afternoon\",\n                        evening1: \"in the evening\",\n                        night1: \"at night\"\n                    }\n                },\n                \"stand-alone\": {\n                    abbreviated: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    },\n                    narrow: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    },\n                    wide: {\n                        midnight: \"midnight\",\n                        am: \"AM\",\n                        \"am-alt-variant\": \"am\",\n                        noon: \"noon\",\n                        pm: \"PM\",\n                        \"pm-alt-variant\": \"pm\",\n                        morning1: \"morning\",\n                        afternoon1: \"afternoon\",\n                        evening1: \"evening\",\n                        night1: \"night\"\n                    }\n                }\n            },\n            eras: {\n                format: {\n                    wide: {\n                        \"0\": \"Before Christ\",\n                        \"1\": \"Anno Domini\",\n                        \"0-alt-variant\": \"Before Common Era\",\n                        \"1-alt-variant\": \"Common Era\"\n                    },\n                    abbreviated: {\n                        \"0\": \"BC\",\n                        \"1\": \"AD\",\n                        \"0-alt-variant\": \"BCE\",\n                        \"1-alt-variant\": \"CE\"\n                    },\n                    narrow: {\n                        \"0\": \"B\",\n                        \"1\": \"A\",\n                        \"0-alt-variant\": \"BCE\",\n                        \"1-alt-variant\": \"CE\"\n                    }\n                }\n            },\n            dateFields: {\n                era: {\n                    wide: \"era\"\n                },\n                year: {\n                    wide: \"year\",\n                    short: \"yr.\",\n                    narrow: \"yr.\"\n                },\n                quarter: {\n                    wide: \"quarter\",\n                    short: \"qtr.\",\n                    narrow: \"qtr.\"\n                },\n                month: {\n                    wide: \"month\",\n                    short: \"mo.\",\n                    narrow: \"mo.\"\n                },\n                week: {\n                    wide: \"week\",\n                    short: \"wk.\",\n                    narrow: \"wk.\"\n                },\n                day: {\n                    wide: \"day\",\n                    short: \"day\",\n                    narrow: \"day\"\n                },\n                weekday: {\n                    wide: \"day of the week\"\n                },\n                dayperiod: {\n                    wide: \"AM/PM\"\n                },\n                hour: {\n                    wide: \"hour\",\n                    short: \"hr.\",\n                    narrow: \"hr.\"\n                },\n                minute: {\n                    wide: \"minute\",\n                    short: \"min.\",\n                    narrow: \"min.\"\n                },\n                second: {\n                    wide: \"second\",\n                    short: \"sec.\",\n                    narrow: \"sec.\"\n                },\n                zone: {\n                    wide: \"time zone\"\n                }\n            }\n        }\n    },\n    supplemental: {\n        likelySubtags: {\n            en: \"en-Latn-US\"\n        },\n        currencyData: {\n            region: {\n                US: [\n                    {\n                        USD: {\n                            _from: \"1792-01-01\"\n                        }\n                    }\n                ]\n            }\n        },\n        weekData: {\n            firstDay: {\n                US: \"sun\"\n            },\n            weekendStart: {\n                \"001\": \"sat\"\n            },\n            weekendEnd: {\n                \"001\": \"sun\"\n            }\n        }\n    }\n};\nexport default defaultData;","export default function isString(value) {\n    return typeof value === \"string\";\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n    \"NoLocale\": \"Missing locale info for '{0}'\",\n    \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n    \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n    \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n    \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n    \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n    \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n    \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n    \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n    \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n    var name = ref.name;\n    var message = ref.message;\n\n    if (!name || !message) {\n        throw new Error(\"{ name: string, message: string } object is required!\");\n    }\n\n    this.name = name;\n    this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n        var values = [], len = arguments.length;\n        while ( len-- ) values[ len ] = arguments[ len ];\n\n    var flattenValues = flatten(values);\n\n    var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n        return flattenValues[parseInt(index, 10)];\n    });\n\n    return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n        var values = [], len = arguments.length;\n        while ( len-- ) values[ len ] = arguments[ len ];\n\n    return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n    return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n    var predicate = function(prev, name) {\n        prev[name] = new IntlError({ name: name, message: errors[name] });\n        return prev;\n    };\n\n    return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n    errors,\n    IntlError,\n    toIntlErrors\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n    var parts = fullName.split(\"-\");\n    var language = parts[0];\n    var script = parts[1];\n    var territory = parts[2];\n\n    return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n    var likelySubtags = cldr.supplemental.likelySubtags;\n\n    for (var idx = 0; idx < suffixes.length; idx++) {\n        var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n        if (name) {\n            return name;\n        }\n    }\n\n    if (likelySubtags[language]) {\n        return likelySubtags[language];\n    }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n    var info;\n    if (isString(locale)) {\n        info = localeInfo(locale);\n    } else {\n        info = locale;\n    }\n    return info;\n}\n\nexport function localeInfo(locale) {\n    if (cldr[locale]) {\n        return cldr[locale];\n    }\n\n    var likelySubtags = cldr.supplemental.likelySubtags;\n    if (likelySubtags) {\n        var parts = locale.split(\"-\");\n        var language = parts[0];\n        var suffixes = parts.slice(1);\n        var fullName = localeFullName(language, suffixes);\n        var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n        if (info) {\n            return info;\n        }\n    }\n\n    throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n    var likelySubtags = cldr.supplemental.likelySubtags;\n    var parts = name.split(\"-\");\n    if (likelySubtags) {\n        var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n        if (likelyName) {\n            parts = likelyName.split(\"-\");\n        }\n    }\n\n    if (identity) {\n        for (var idx = parts.length - 1; idx >= 1; idx--) {\n            var part = parts[idx];\n            if (part === identity.variant || part === identity.script) {\n                parts.splice(idx, 1);\n            }\n        }\n    }\n\n    var length = parts.length;\n\n    if (length > 1) {\n        var territory = parts[length - 1];\n        return territory.toUpperCase();\n    }\n}\n\nexport default function localeTerritory(info) {\n    if (info.territory) {\n        return info.territory;\n    }\n\n    var name = info.name;\n    var identity = info.identity;\n    var territory;\n\n    if (identity && identity.territory) {\n        territory = identity.territory;\n    } else {\n        territory = territoryFromName(name, identity);\n    }\n\n    info.territory = territory;\n\n    return territory;\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n    var result = [];\n    for (var idx = 0; idx < arr.length; idx++) {\n        result.push(arr[idx].toLowerCase());\n    }\n    return result;\n}\n\nfunction lowerObject(obj) {\n    var result = {};\n    for (var field in obj) {\n        result[field] = obj[field].toLowerCase();\n    }\n    return result;\n}\n\nfunction cloneLower(obj) {\n    var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n    return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n    var type = options.type;\n    var nameType = options.nameType;\n    var standAlone = options.standAlone;\n    var lower = options.lower;\n    var info = getLocaleInfo(locale);\n    var formatType = standAlone ? \"stand-alone\" : \"format\";\n    var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n    var formatNames = info.calendar[type][formatType];\n    var result = formatNames[lowerNameType];\n    if (!result && lower) {\n        result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n    }\n    return result;\n}","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","export default function parseRangeDate(value) {\n    var parts = value.split('-');\n    var year = parseInt(parts[0], 10);\n    var month = parseInt(parts[1], 10) - 1;\n    var day = parseInt(parts[2], 10);\n\n    return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n    '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n    '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n    var info = getLocaleInfo(locale);\n    var currencies = info.numbers.currencies;\n    if (!currencies) {\n        if (throwIfNoValid) {\n            throw NoCurrency.error();\n        }\n\n        return;\n    }\n\n    var currencyDisplayInfo = currencies[currency];\n\n    if (!currencyDisplayInfo) {\n        if (throwIfNoValid) {\n            throw NoCurrencyDisplay.error();\n        }\n\n        return;\n    }\n\n    return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n    return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n    var latestValidUntil, latestValidUntilRange;\n    var latestStillValid, latestStillValidDate;\n\n    for (var idx = 0; idx < regionCurrencies.length; idx++) {\n        var currency = regionCurrencies[idx];\n        var code = Object.keys(currency)[0];\n        var info = currency[code];\n        if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n            if (!info._to) {\n                var stillValidDate = parseRangeDate(info._from);\n                if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n                    latestStillValid = code;\n                    latestStillValidDate = stillValidDate;\n                }\n            } else if (!latestStillValid) {\n                var validFrom = parseRangeDate(info._from);\n                var validTo = parseRangeDate(info._to);\n                if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n                    latestValidUntil = code;\n                    latestValidUntilRange = {\n                        from: validFrom,\n                        to: validTo\n                    };\n                }\n            }\n        }\n    }\n\n    return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n    if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n    var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n    if (!currencyInfo) {\n        return;\n    }\n\n    if (!currencyInfo.displays) {\n        var displays = [ currency ];\n        for (var field in currencyInfo) {\n            displays.push(currencyInfo[field]);\n        }\n        displays.sort(lengthComparer);\n        currencyInfo.displays = displays;\n    }\n\n    return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n    var value = options.value;\n    var currency = options.currency;\n    var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n    if (currencyDisplay === \"code\") {\n        return currency;\n    }\n\n    var currencyInfo = getCurrencyInfo(locale, currency, true);\n    var result;\n\n    if (currencyDisplay === SYMBOL) {\n        result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n    } else {\n        if (typeof value === undefined || value !== 1) {\n            result = currencyInfo[\"displayName-count-other\"];\n        } else {\n            result = currencyInfo[\"displayName-count-one\"];\n        }\n    }\n\n    return result;\n}\n\nexport function currencyFractionOptions(code) {\n    var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n    var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n    var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n    if (fractions && fractions._digits) {\n        maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n    }\n\n    return {\n        minimumFractionDigits: minimumFractionDigits,\n        maximumFractionDigits: maximumFractionDigits\n    };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n    if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n    if (GLOBAL_CURRENCIES[territory]) {\n        return GLOBAL_CURRENCIES[territory];\n    }\n\n    var currencyData = cldr.supplemental.currencyData;\n    if (!currencyData) {\n        if (throwIfNoValid) {\n            throw NoSupplementalCurrency.error();\n        }\n\n        return;\n    }\n\n    var regionCurrencies = currencyData.region[territory];\n\n    if (!regionCurrencies) {\n        if (throwIfNoValid) {\n            throw NoCurrencyRegion.error(territory);\n        }\n\n        return;\n    }\n\n    var currencyCode = regionCurrency(regionCurrencies);\n\n    return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n    var info = getLocaleInfo(locale);\n    var numbers = info.numbers;\n\n    if (!numbers.localeCurrency) {\n        var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n        if (!currency && throwIfNoValid) {\n            throw NoValidCurrency.error(info.name);\n        }\n\n        numbers.localeCurrency = currency;\n    }\n\n    return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n    var info = getLocaleInfo(locale);\n\n    if (!isNaN(info.firstDay)) {\n        return info.firstDay;\n    }\n\n    var weekData = cldr.supplemental.weekData;\n    if (!weekData) {\n        throw NoWeekData.error();\n    }\n\n    var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n    if (!firstDay) {\n        throw NoFirstDay.error();\n    }\n\n    info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n    return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n    var info = getLocaleInfo(locale);\n\n    if (info.weekendRange) {\n        return info.weekendRange;\n    }\n\n    var weekData = cldr.supplemental.weekData;\n    if (!weekData) {\n        throw NoWeekData.error();\n    }\n\n    var territory = localeTerritory(info);\n    var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n    var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n    info.weekendRange = {\n        start: DAYS_OF_WEEK.indexOf(start),\n        end: DAYS_OF_WEEK.indexOf(end)\n    };\n\n    return info.weekendRange;\n}\n","export default function isNegativeZero(value) {\n    return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n    if ( options === void 0 ) options = {};\n\n    if (!options.currency) {\n        options.currency = localeCurrency(info, true);\n    }\n\n    var display = currencyDisplay(info, options);\n\n    return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n    var symbols = info.numbers.symbols;\n    var decimalIndex = number.indexOf(symbols.decimal);\n    var groupSizes = options.groupSize.slice();\n    var groupSize = groupSizes.shift();\n\n    var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n    var integer = number.substring(start, integerEnd);\n    var result = number;\n    var integerLength = integer.length;\n\n    if (integerLength >= groupSize) {\n        var idx = integerLength;\n        var parts = [];\n\n        while (idx > -1) {\n            var value = integer.substring(idx - groupSize, idx);\n            if (value) {\n                parts.push(value);\n            }\n            idx -= groupSize;\n            var newGroupSize = groupSizes.shift();\n            groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n            if (groupSize === 0) {\n                value = integer.substring(0, idx);\n                if (value) {\n                    parts.push(value);\n                }\n                break;\n            }\n        }\n\n        integer = parts.reverse().join(symbols.group);\n        result = number.substring(0, start) + integer + number.substring(integerEnd);\n    }\n\n    return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n    return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n    if ( digits === void 0 ) digits = 2;\n    if ( right === void 0 ) right = false;\n\n    var count = digits - String(number).length;\n    var result = number;\n\n    if (count > 0) {\n        var padString = new Array(count + 1).join(\"0\");\n        result = right ? number + padString : padString + number;\n    }\n\n    return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n    var result = value;\n    var decimals = precision || 0;\n\n    result = result.toString().split('e');\n    result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n    result = result.toString().split('e');\n    result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n    return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n    var minimumFractionDigits = options.minimumFractionDigits;\n    var maximumFractionDigits = options.maximumFractionDigits;\n    var style = options.style;\n    var isCurrency = isCurrencyStyle(style);\n    var currencyFractions;\n    if (isCurrency) {\n        currencyFractions = currencyFractionOptions(options.currency);\n    }\n\n    if (minimumFractionDigits === undefined) {\n        minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n    }\n\n    if (maximumFractionDigits === undefined) {\n        if (style === PERCENT) {\n            maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n        } else if (isCurrency) {\n            maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n        } else {\n            maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n        }\n    }\n\n    return {\n        minimumFractionDigits: minimumFractionDigits,\n        maximumFractionDigits: maximumFractionDigits\n    };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n    var result = EMPTY;\n    for (var idx = 0, length = pattern.length; idx < length; idx++) {\n        var ch = pattern.charAt(idx);\n\n        if (ch === NUMBER_PLACEHOLDER) {\n            result += value;\n        } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n            result += symbol;\n        } else {\n            result += ch;\n        }\n    }\n    return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n    var currencyInfo = info.numbers.currency;\n    var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n    if (value < 0) {\n        pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n    }\n\n    return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n    var symbols = info.numbers.symbols;\n    var style = options.style;\n    var isCurrency = isCurrencyStyle(style);\n\n    //return number in exponential format\n    if (style === SCIENTIFIC) {\n        var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n        return exponential.replace(POINT, symbols.decimal);\n    }\n\n    var value = number;\n    var symbol;\n\n    if (isCurrency) {\n        options.value = value;\n        symbol = formatCurrencySymbol(info, options);\n    }\n\n    if (style === PERCENT) {\n        value *= 100;\n        symbol = symbols.percentSign;\n    }\n\n    var ref = fractionOptions(options);\n    var minimumFractionDigits = ref.minimumFractionDigits;\n    var maximumFractionDigits = ref.maximumFractionDigits;\n\n    value = round(value, maximumFractionDigits);\n\n    var negative = value < 0;\n    var negativeZero = isNegativeZero(number);\n\n    var parts = value.split(POINT);\n\n    var integer = parts[0];\n    var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n    //exclude \"-\" if number is negative.\n    if (negative) {\n        integer = integer.substring(1);\n    }\n\n    if (options.minimumIntegerDigits) {\n        integer = pad(integer, options.minimumIntegerDigits);\n    }\n\n    var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n    if (fraction) {\n        formattedValue += symbols.decimal + fraction;\n    }\n\n    var pattern;\n\n    if (isCurrency && options.currencyDisplay === \"name\") {\n        pattern = currencyUnitPattern(info, number);\n    } else {\n        var patterns = options.patterns;\n        pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n    }\n\n    if (pattern === NUMBER_PLACEHOLDER && !negative) {\n        return formattedValue;\n    }\n\n    var result = applyPattern(formattedValue, pattern, symbol);\n\n    return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n    var format = formatOptions.format;\n\n    //multiply number if the format has percent\n    if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n        formatOptions.style = PERCENT;\n        formatOptions.symbol = info.numbers.symbols.percentSign;\n        formatOptions.number *= 100;\n    }\n\n    if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n        formatOptions.style = CURRENCY;\n        formatOptions.symbol = formatCurrencySymbol(info);\n    }\n}\n\nexport function setFormatLiterals(formatOptions) {\n    var format = formatOptions.format;\n    if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n        var literals = formatOptions.literals = [];\n        formatOptions.format = format.replace(literalRegExp, function(match) {\n            var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n            var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n            literals.push(literal);\n\n            return PLACEHOLDER;\n        });\n    }\n}\n\nexport function replaceLiterals(number, literals) {\n    var result = number;\n    if (literals) {\n        var length = literals.length;\n        for (var idx = 0; idx < length; idx++) {\n            result = result.replace(PLACEHOLDER, literals[idx]);\n        }\n    }\n    return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n    var trimRegex;\n\n    if (lastZero === 0) {\n        trimRegex = trailingZerosRegExp;\n    } else {\n        trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n    }\n\n    return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n    var number = formatOptions.number;\n    var format = formatOptions.format;\n    var decimalIndex = format.indexOf(POINT);\n\n    if (decimalIndex !== -1) {\n        var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n        var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n        var hasZero = zeroIndex > -1;\n        var hasSharp = sharpIndex > -1;\n        var fraction = number.toString().split(\"e\");\n\n        if (fraction[1]) {\n            fraction = round(number, Math.abs(fraction[1]));\n        } else {\n            fraction = fraction[0];\n        }\n        fraction = fraction.split(POINT)[1] || EMPTY;\n\n        var precision = fraction.length;\n        var trailingZeros = -1;\n\n        if (!hasZero && !hasSharp) {\n            formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n            decimalIndex = -1;\n            precision = 0;\n        } else if (hasZero && zeroIndex > sharpIndex) {\n            precision = zeroIndex;\n        } else if (sharpIndex > zeroIndex) {\n            if (hasSharp && precision > sharpIndex) {\n                precision = sharpIndex;\n            } else if (hasZero && precision < zeroIndex) {\n                precision = zeroIndex;\n            }\n\n            trailingZeros = hasZero ? zeroIndex : 0;\n        }\n\n        if (precision > -1) {\n            number = round(number, precision);\n            if (trailingZeros > -1) {\n                number = trimTrailingZeros(number, trailingZeros);\n            }\n        }\n    } else {\n        number = round(number);\n    }\n\n    if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n        formatOptions.negative = false;\n    }\n\n    formatOptions.number = number;\n    formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n    return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n    var number = formatOptions.number;\n    var format = formatOptions.format;\n    format = format.split(LIST_SEPARATOR);\n    if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n        format = format[1];\n        formatOptions.hasNegativeFormat = true;\n    } else if (number === 0) {\n        var zeroFormat = format[2];\n        format = zeroFormat || format[0];\n        if (zeroFormat && isConstantFormat(zeroFormat)) {\n            formatOptions.constant = zeroFormat;\n        }\n    } else {\n        format = format[0];\n    }\n\n    formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n    formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n    if (formatOptions.hasGroup) {\n        formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n    }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n    var index;\n    if (index1 === -1 && index2 !== -1) {\n        index = index2;\n    } else if (index1 !== -1 && index2 === -1) {\n        index = index1;\n    } else {\n        index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n    }\n    return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n    var format = formatOptions.format;\n    var sharpIndex = format.indexOf(SHARP);\n    var zeroIndex = format.indexOf(ZERO);\n\n    var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n    sharpIndex = format.lastIndexOf(SHARP);\n    zeroIndex = format.lastIndexOf(ZERO);\n\n    var end = placeholderIndex(sharpIndex, zeroIndex);\n\n    if (start === format.length) {\n        end = start;\n    }\n\n    formatOptions.start = start;\n    formatOptions.end = end;\n    formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n    var result = number;\n    if (style === CURRENCY || style === PERCENT) {\n        result = EMPTY;\n        for (var idx = 0, length = number.length; idx < length; idx++) {\n            var ch = number.charAt(idx);\n            result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n        }\n    }\n    return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n    var start = formatOptions.start;\n    var end = formatOptions.end;\n    var negative = formatOptions.negative;\n    var negativeZero = formatOptions.negativeZero;\n    var format = formatOptions.format;\n    var decimalIndex = formatOptions.decimalIndex;\n    var lastZeroIndex = formatOptions.lastZeroIndex;\n    var hasNegativeFormat = formatOptions.hasNegativeFormat;\n    var hasGroup = formatOptions.hasGroup;\n    var number = formatOptions.number;\n    var value = number.toString().split(POINT);\n    var length = format.length;\n    var integer = value[0];\n    var fraction = value[1] || EMPTY;\n    var integerLength = integer.length;\n    var replacement = EMPTY;\n\n    number = format.substring(0, start);\n\n    if ((negative || negativeZero) && !hasNegativeFormat) {\n        number += \"-\";\n    }\n\n    for (var idx = start; idx < length; idx++) {\n        var ch = format.charAt(idx);\n\n        if (decimalIndex === -1) {\n            if (end - idx < integerLength) {\n\n                number += integer;\n                break;\n            }\n        } else {\n            if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n                replacement = EMPTY;\n            }\n\n            if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n                number += integer;\n                idx = decimalIndex;\n            }\n\n            if (decimalIndex === idx) {\n                number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n                idx += end - decimalIndex + 1;\n                continue;\n            }\n        }\n\n        if (ch === ZERO) {\n            number += ch;\n            replacement = ch;\n        } else if (ch === SHARP) {\n            number += replacement;\n        }\n    }\n\n    if (hasGroup) {\n        number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n    }\n\n    if (end >= start) {\n        number += format.substring(end + 1);\n    }\n\n    return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n    var number = formatOptions.number;\n    if (formatOptions.start !== -1) {\n        number = replacePlaceHolders(formatOptions, info);\n        number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n        number = replaceLiterals(number, formatOptions.literals);\n    }\n\n    return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n    var formatOptions = {\n        negative: number < 0,\n        number: Math.abs(number),\n        negativeZero: isNegativeZero(number),\n        format: format\n    };\n\n    setValueSpecificFormat(formatOptions);\n\n    if (formatOptions.constant) {\n        return formatOptions.constant;\n    }\n\n    setFormatLiterals(formatOptions);\n    setStyleOptions(formatOptions, info);\n    setGroupOptions(formatOptions);\n    roundNumber(formatOptions);\n    setPlaceholderIndices(formatOptions);\n\n    return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n    var formatAndPrecision = standardFormatRegExp.exec(format);\n\n    if (formatAndPrecision) {\n        var options = {\n            style: DECIMAL\n        };\n\n        var style = formatAndPrecision[1].toLowerCase();\n\n        if (style === \"c\") {\n            options.style = CURRENCY;\n        } else if (style === \"a\") {\n            options.style = ACCOUNTING;\n        } else if (style === \"p\") {\n            options.style = PERCENT;\n        } else if (style === \"e\") {\n            options.style = SCIENTIFIC;\n        }\n\n        if (formatAndPrecision[2]) {\n            options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n        }\n\n        return options;\n    }\n}\n\nexport default function formatOptions(format) {\n    var options;\n    if (isString(format)) {\n        options = standardFormatOptions(format);\n    } else {\n        options = format;\n    }\n\n    return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n    if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (number === undefined || number === null) {\n        return EMPTY;\n    }\n\n    if (!isFinite(number)) {\n        return String(number);\n    }\n\n    var info = localeInfo(locale);\n    var options = formatOptions(format);\n\n    var result;\n    if (options) {\n        var style = options.style || DECIMAL;\n        result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n    } else {\n        result = customNumberFormat(number, format, info);\n    }\n\n    return result;\n}\n","export default function isNumber(value) {\n    return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nvar exponentRegExp = /[eE][\\-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n    if (patterns.length > 1) {\n        var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n        if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n            return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n        }\n    }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n    var options = formatOptions(format) || {};\n    var isCurrency = isCurrencyStyle(options.style);\n    var number = value;\n    var negative;\n\n    var currency = options.currency || localeCurrency(info, isCurrency);\n\n    if (currency) {\n        var displays = currencyDisplays(info, currency, isCurrency);\n        if (displays) {\n            for (var idx = 0; idx < displays.length; idx++) {\n                var display = displays[idx];\n                if (number.includes(display)) {\n                    number = number.replace(display, EMPTY);\n                    isCurrency = true;\n                    break;\n                }\n            }\n        }\n\n        if (isCurrency) {\n            var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n                cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n            if (cleanNumber) {\n                negative = true;\n                number = cleanNumber;\n            }\n\n        }\n    }\n\n    return {\n        number: number,\n        negative: negative\n    };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n    var literals = formatOptions.literals;\n    var result = number;\n\n    if (literals) {\n        for (var idx = 0; idx < literals.length; idx++) {\n            result = result.replace(literals[idx], EMPTY);\n        }\n    }\n\n    return result;\n}\n\nexport default function parseNumber(value, locale, format) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n    if ( format === void 0 ) format = {};\n\n    if (!value && value !== 0) {\n        return null;\n    }\n\n    if (isNumber(value)) {\n        return value;\n    }\n\n    var info = localeInfo(locale);\n    var symbols = info.numbers.symbols;\n\n    var number = value.toString();\n    var formatOptions = format || {};\n    var isPercent;\n\n    if (isString(format)) {\n        formatOptions = { format: format };\n        setFormatLiterals(formatOptions);\n        number = cleanLiterals(number, formatOptions);\n\n        setStyleOptions(formatOptions, info);\n    }\n\n    if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n        number = number.replace(symbols.percentSign, EMPTY);\n        isPercent = true;\n    }\n\n    if (exponentRegExp.test(number)) {\n        number = parseFloat(number.replace(symbols.decimal, POINT));\n        return isNaN(number) ? null : number;\n    }\n\n    var ref = cleanCurrencyNumber(number, info, formatOptions);\n    var negativeCurrency = ref.negative;\n    var currencyNumber = ref.number;\n    number = String(currencyNumber).trim();\n\n    var negativeSignIndex = number.indexOf(\"-\");\n    if (negativeSignIndex > 0) {\n        return null;\n    }\n\n    var isNegative = negativeSignIndex > -1;\n\n    isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n    number = number.replace(\"-\", EMPTY)\n          .replace(nonBreakingSpaceRegExp, \" \")\n          .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n          .replace(symbols.decimal, POINT);\n\n    number = parseFloat(number);\n\n    if (isNaN(number)) {\n        number = null;\n    } else if (isNegative) {\n        number *= -1;\n    }\n\n    if (number && isPercent) {\n        number /= 100;\n    }\n\n    return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n    var values = arguments;\n\n    return format.replace(formatRegExp, function (match, index) {\n        var value = values[parseInt(index, 10) + 1];\n\n        return value;\n    });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n    numeric: 1,\n    \"2-digit\": 2,\n    short: 3,\n    long: 4,\n    narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n    return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n    key: \"era\",\n    specifier: \"G\"\n}, {\n    key: \"year\",\n    specifier: \"y\"\n}, {\n    key: \"month\",\n    specifier: \"M\"\n}, {\n    key: \"day\",\n    specifier: \"d\"\n}, {\n    key: \"weekday\",\n    specifier: \"E\"\n}, {\n    key: \"hour\",\n    getSpecifier: getHourSpecifier\n}, {\n    key: \"minute\",\n    specifier: \"m\"\n}, {\n    key: \"second\",\n    specifier: \"s\"\n}, {\n    key: \"timeZoneName\",\n    specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n    e: 'c',\n    E: 'c',\n    M: 'L',\n    Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n    if (!specifiersRegex[specifier]) {\n        specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n    }\n    return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n    var result = [];\n    var current = skeleton.charAt(0);\n    var specifier = current;\n    for (var idx = 1; idx < skeleton.length; idx++) {\n        var character = skeleton.charAt(idx);\n        if (character === specifier) {\n            current += character;\n        } else {\n            result.push(current);\n            current = specifier = character;\n        }\n    }\n\n    result.push(current);\n\n    return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n    var specifiersLength = specifiers.length;\n    var maxScore = -Number.MAX_VALUE;\n    var bestMatches, result;\n    for (var format in availableFormats) {\n        var matches = [];\n        var currentFormat = format.replace(\"v\", \"z\");\n        var score = 0;\n        for (var idx = 0; idx < specifiersLength; idx++) {\n            var specifier = specifiers[idx];\n            var specifierRegex = getSpecifierRegex(specifier[0]);\n            var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n            if (!match) {\n                score -= REMOVAL_PENALTY;\n            } else {\n                currentFormat = currentFormat.replace(match, EMPTY);\n                if (match.length !== specifier.length) {\n                    var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n                    score -= PENALTIES[delta];\n                }\n            }\n\n            matches.push(match);\n\n            if (score < maxScore) {\n                break;\n            }\n        }\n\n        if (currentFormat.length) {\n            score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n        }\n\n        if (score > maxScore) {\n            maxScore = score;\n            bestMatches = matches;\n            result = availableFormats[format];\n        }\n    }\n\n    result = result.replace(\"v\", \"z\");\n\n    for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n        var bestMatch = bestMatches[idx$1];\n        if (bestMatch && bestMatch !== specifiers[idx$1]) {\n            var matchSpecifier = bestMatches[idx$1][0];\n            result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n            if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n                result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n            }\n        }\n    }\n\n    return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n    if (!resolvedFormats[locale]) {\n        resolvedFormats[locale] = {};\n    }\n    resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n    var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n    if (availableFormats[skeleton]) {\n        return availableFormats[skeleton];\n    }\n    if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n        return resolvedFormats[info.name][skeleton];\n    }\n    var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n    var result;\n    if (timeStartIndex > 0) {\n        var dateSkeleton = skeleton.substr(0, timeStartIndex);\n        var timeSkeleton = skeleton.substr(timeStartIndex);\n\n        result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n            availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n            availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n    } else {\n        result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n    }\n\n    cacheFormat(skeleton, result, info.name);\n    return result;\n}\n\nfunction skeletonFromOptions(options) {\n    var result = [];\n    for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n        var option = DATE_OPTIONS_MAP[idx];\n        var field = option.key;\n        var value = options[field];\n        if (value) {\n            var spcifier = option.specifier || option.getSpecifier(options);\n            result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n        }\n    }\n\n    return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n    var calendar = info.calendar;\n    var result;\n    if (isString(format)) {\n        if (calendar.patterns[format]) {\n            result = calendar.patterns[format];\n        } else {\n            result = format;\n        }\n    } else if (format) {\n        if (format.pattern) {\n            return format.pattern;\n        }\n\n        var skeleton = format.skeleton;\n        if (!skeleton) {\n            if (format.datetime) {\n                result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n            } else if (format.date) {\n                result = calendar.dateFormats[format.date];\n            } else if (format.time) {\n                result = calendar.timeFormats[format.time];\n            } else {\n                skeleton = skeletonFromOptions(format);\n            }\n        }\n\n        if (skeleton) {\n            result = skeletonFormat(skeleton, info);\n        }\n    }\n\n    if (!result) {\n        result = calendar.patterns.d;\n    }\n\n    return result;\n}\n","export default function dateNameType(formatLength) {\n    var nameType;\n    if (formatLength <= 3) {\n        nameType = \"abbreviated\";\n    } else if (formatLength === 4) {\n        nameType = \"wide\";\n    } else if (formatLength === 5) {\n        nameType = \"narrow\";\n    } else if (formatLength === 6) {\n        nameType = \"short\";\n    }\n\n    return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n    return dateFormatNames(locale, {\n        type: type,\n        nameType: dateNameType(formatLength),\n        standAlone: standAlone,\n        lower: lower\n    });\n}","function isFunction(fun) {\n    return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n    return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n    'G': 'era',\n    'y': 'year',\n    'q': QUARTER,\n    'Q': QUARTER,\n    'M': MONTH,\n    'L': MONTH,\n    'd': 'day',\n    'E': WEEKDAY,\n    'c': WEEKDAY,\n    'e': WEEKDAY,\n    'h': HOUR,\n    'H': HOUR,\n    'k': HOUR,\n    'K': HOUR,\n    'm': 'minute',\n    's': 'second',\n    'a': 'dayperiod',\n    'x': ZONE,\n    'X': ZONE,\n    'z': ZONE,\n    'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n    var firstDayIndex = firstDay(localeInfo);\n    var dayIndex;\n    if (day < firstDayIndex) {\n        dayIndex = 7 - firstDayIndex + day;\n    } else {\n        dayIndex = day - firstDayIndex;\n    }\n\n    return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n    if (formatLength <= 2) {\n        return pad(month + 1, formatLength);\n    }\n    return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n    var quarter = Math.floor(date.getMonth() / 3);\n    if (formatLength < 3) {\n        return quarter + 1;\n    }\n\n    return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n    var shortHours = options.shortHours;\n    var optionalMinutes = options.optionalMinutes;\n    var separator = options.separator;\n    var localizedName = options.localizedName;\n    var zZeroOffset = options.zZeroOffset;\n    var offset = date.getTimezoneOffset() / 60;\n    if (offset === 0 && zZeroOffset) {\n        return \"Z\";\n    }\n    var sign = offset <= 0 ? \"+\" : \"-\";\n    var hoursMinutes = Math.abs(offset).toString().split(\".\");\n    var minutes = hoursMinutes[1] || 0;\n    var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n    if (minutes || !optionalMinutes) {\n        result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n    }\n\n    if (localizedName) {\n        var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n        result = formatString(localizedFormat, result);\n    }\n\n    return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n    var result;\n    if (formatLength < 3) {\n        result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n    } else {\n        result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n    }\n    return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n    return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n    return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n    return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n    return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n    var year = date.getFullYear();\n    if (formatLength === 2) {\n        year = year % 100;\n    }\n    return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n    var hours = date.getHours() % 12 || 12;\n    return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n    return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n    return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n    return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n    return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n    return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n    var milliseconds = date.getMilliseconds();\n    var result;\n    if (milliseconds !== 0) {\n        result = String(date.getMilliseconds() / 1000).split(\".\")[1].substr(0, formatLength);\n    } else {\n        result = pad(EMPTY, formatLength);\n    }\n    return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n    return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        shortHours: formatLength < 4,\n        optionalMinutes: formatLength < 4,\n        separator: true,\n        localizedName: true\n    });\n};\n\nformatters.Z = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        separator: formatLength > 3,\n        localizedName: formatLength === 4,\n        zZeroOffset: formatLength === 5\n    });\n};\n\nformatters.x = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        optionalMinutes: formatLength === 1,\n        separator: formatLength === 3 || formatLength === 5\n    });\n};\n\nformatters.X = function(date, formatLength, info) {\n    return formatTimeZone(date, info, {\n        optionalMinutes: formatLength === 1,\n        separator: formatLength === 3 || formatLength === 5,\n        zZeroOffset: true\n    });\n};\n\nformatters.G = function(date, formatLength, info) {\n    var era = date.getFullYear() >= 0 ? 1 : 0;\n    return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n    return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n    return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (!isDate(date)) {\n        if (date === undefined || date === null) {\n            return EMPTY;\n        }\n        return date;\n    }\n\n    var info = localeInfo(locale);\n    var pattern = datePattern(format, info);\n\n    return pattern.replace(dateFormatRegExp, function(match) {\n        var formatLength = match.length;\n        var result;\n\n        if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n            result = match.slice(1, formatLength - 1);\n        } else {\n            result = formatters[match[0]](date, formatLength, info);\n        }\n\n        return result;\n    });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n    var fromLocalOffset = date.getTimezoneOffset();\n\n    var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n    var toLocalOffset = offsetDate.getTimezoneOffset();\n\n    return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n    if (!hours && date.getHours() === 23) {\n        date.setHours(date.getHours() + 2);\n    }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n    2: /^\\d{1,2}/,\n    3: /^\\d{1,3}/,\n    4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar leadingSpacesRegex = /^ */;\nvar trailingSpacesRegex = / *$/;\n\nvar standardDateFormats = [\n    \"yyyy/MM/dd HH:mm:ss\",\n    \"yyyy/MM/dd HH:mm\",\n    \"yyyy/MM/dd\",\n    \"E MMM dd yyyy HH:mm:ss\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n    \"yyyy-MM-ddTHH:mm:ssXXX\",\n    \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n    \"yyyy-MM-ddTHH:mm:ss.SSS\",\n    \"yyyy-MM-ddTHH:mmXXX\",\n    \"yyyy-MM-ddTHH:mmX\",\n    \"yyyy-MM-ddTHH:mm:ss\",\n    \"yyyy-MM-ddTHH:mm\",\n    \"yyyy-MM-dd HH:mm:ss\",\n    \"yyyy-MM-dd HH:mm\",\n    \"yyyy-MM-dd\",\n    \"HH:mm:ss\",\n    \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n    return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n    var format = state.format;\n    var idx = state.idx;\n    var i = 0;\n    while (format[idx] === match) {\n        i++;\n        idx++;\n    }\n    if (i > 0) {\n        idx -= 1;\n    }\n    state.idx = idx;\n    return i;\n}\n\nfunction getNumber(size, state) {\n    var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n        match = state.value.substr(state.valueIdx, size).match(regex);\n\n    if (match) {\n        match = match[0];\n        state.valueIdx += match.length;\n        return parseInt(match, 10);\n    }\n    return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n    var i = 0,\n        length = names.length,\n        name, nameLength,\n        matchLength = 0,\n        matchIdx = 0,\n        subValue;\n\n    for (; i < length; i++) {\n        name = names[i];\n        nameLength = name.length;\n        subValue = state.value.substr(state.valueIdx, nameLength);\n\n        if (lower) {\n            subValue = subValue.toLowerCase();\n        }\n\n        if (subValue === name && nameLength > matchLength) {\n            matchLength = nameLength;\n            matchIdx = i;\n        }\n    }\n\n    if (matchLength) {\n        state.valueIdx += matchLength;\n        return matchIdx + 1;\n    }\n\n    return null;\n}\n\nfunction checkLiteral(state) {\n    var result = false;\n    if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n        state.valueIdx++;\n        result = true;\n    }\n    return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n    var gmtFormat = calendar.gmtFormat;\n    var gmtZeroFormat = calendar.gmtZeroFormat;\n    if (!gmtFormat) {\n        throw errors.NoGMTInfo.error();\n    }\n\n    return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n    var shortHours = options.shortHours;\n    var noSeparator = options.noSeparator;\n    var optionalMinutes = options.optionalMinutes;\n    var localizedName = options.localizedName;\n    var zLiteral = options.zLiteral;\n    state.UTC = true;\n\n    if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n        state.valueIdx++;\n        return false;\n    }\n\n    if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n        return true;\n    }\n\n    var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n    if (!matches) {\n        return !localizedName;\n    }\n\n    var hoursMatch = matches[1];\n    var minutesMatch = matches[3];\n    var hoursOffset = parseInt(hoursMatch, 10);\n    var separator = matches[2];\n    var minutesOffset = parseInt(minutesMatch, 10);\n\n    if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n        return true;\n    }\n\n    if (isNaN(minutesOffset)) {\n        minutesOffset = null;\n    }\n\n    if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n        return true;\n    }\n\n    state.valueIdx += matches[0].length;\n    state.hoursOffset = hoursOffset;\n    state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n    var count = lookAhead(ch, state);\n    var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n    var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n    if (month === null || outOfRange(month, 1, 12)) {\n        return true;\n    }\n    state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n    var count = lookAhead(ch, state);\n    var names = formatNames(info, \"days\", count, ch === \"c\", true);\n    var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n    if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n        return true;\n    }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n    lookAhead(\"d\", state);\n    var day = getNumber(2, state);\n\n    if (day === null || outOfRange(day, 1, 31)) {\n        return true;\n    }\n\n    if (state.day === null) {\n        state.day = day;\n    }\n};\n\nparsers.E = function(state, info) {\n    var count = lookAhead(\"E\", state);\n    //validate if it matches the day?\n    var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n    if (dayOfWeek === null) {\n        return true;\n    }\n};\n\nparsers.M = function(state, info) {\n    return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n    return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n    var count = lookAhead(\"y\", state);\n    var year = getNumber(count === 1 ? undefined : count, state);\n\n    if (year === null) {\n        return true;\n    }\n\n    if (count === 2) {\n        var currentYear = new Date().getFullYear();\n        year = (currentYear - currentYear % 100) + year;\n        if (year > TWO_DIGIT_YEAR_MAX) {\n            year -= 100;\n        }\n    }\n\n    state.year = year;\n};\n\nparsers.h = function(state) {\n    lookAhead(\"h\", state);\n\n    var hours = getNumber(2, state);\n    if (hours === 12) {\n        hours = 0;\n    }\n\n    if (hours === null || outOfRange(hours, 0, 11)) {\n        return true;\n    }\n\n    state.hours = hours;\n};\n\nparsers.K = function(state) {\n    lookAhead(\"K\", state);\n\n    var hours = getNumber(2, state);\n\n    if (hours === null || outOfRange(hours, 0, 11)) {\n        return true;\n    }\n\n    state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n    var count = lookAhead(\"a\", state);\n    var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n    var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n    if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n        return true;\n    }\n\n    state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n    lookAhead(\"H\", state);\n    var hours = getNumber(2, state);\n    if (hours === null || outOfRange(hours, 0, 23)) {\n        return true;\n    }\n    state.hours = hours;\n};\n\nparsers.k = function(state) {\n    lookAhead(\"k\", state);\n\n    var hours = getNumber(2, state);\n\n    if (hours === null || outOfRange(hours, 1, 24)) {\n        return true;\n    }\n\n    state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n    lookAhead(\"m\", state);\n    var minutes = getNumber(2, state);\n\n    if (minutes === null || outOfRange(minutes, 0, 59)) {\n        return true;\n    }\n\n    state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n    lookAhead(\"s\", state);\n    var seconds = getNumber(2, state);\n    if (seconds === null || outOfRange(seconds, 0, 59)) {\n        return true;\n    }\n    state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n    var count = lookAhead(\"S\", state);\n    var match = state.value.substr(state.valueIdx, count);\n    var milliseconds = null;\n\n    if (!isNaN(parseInt(match, 10))) {\n        milliseconds = parseFloat(\"0.\" + match, 10);\n        milliseconds = round(milliseconds, 3);\n        milliseconds *= 1000;\n        state.valueIdx += count;\n    }\n\n    if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n        return true;\n    }\n\n    state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n    var count = lookAhead(\"z\", state);\n\n    var shortFormat = count < 4;\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        shortHours: shortFormat,\n        optionalMinutes: shortFormat,\n        localizedName: true\n    });\n\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.Z = function(state, info) {\n    var count = lookAhead(\"Z\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count < 4,\n        zLiteral: count === 5,\n        localizedName: count === 4\n    });\n\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.x = function(state, info) {\n    var count = lookAhead(\"x\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count !== 3 && count !== 5,\n        optionalMinutes: count === 1\n    });\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.X = function(state, info) {\n    var count = lookAhead(\"X\", state);\n\n    var invalid = parseTimeZoneOffset(state, info, {\n        noSeparator: count !== 3 && count !== 5,\n        optionalMinutes: count === 1,\n        zLiteral: true\n    });\n    if (invalid) {\n        return invalid;\n    }\n};\n\nparsers.G = function(state, info) {\n    var count = lookAhead(\"G\", state);\n    var eras = formatNames(info, \"eras\", count, false, true);\n    var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n    if (era === null) {\n        return true;\n    }\n};\n\nparsers.e = function(state, info) {\n    return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n    return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n    var year = state.year;\n    var month = state.month;\n    var day = state.day;\n    var hours = state.hours;\n    var minutes = state.minutes;\n    var seconds = state.seconds;\n    var milliseconds = state.milliseconds;\n    var pmHour = state.pmHour;\n    var UTC = state.UTC;\n    var hoursOffset = state.hoursOffset;\n    var minutesOffset = state.minutesOffset;\n    var hasTime = hours !== null || minutes !== null || seconds || null;\n    var date = new Date();\n    var result;\n\n    if (year === null && month === null && day === null && hasTime) {\n        year = date.getFullYear();\n        month = date.getMonth();\n        day = date.getDate();\n    } else {\n        if (year === null) {\n            year = date.getFullYear();\n        }\n\n        if (day === null) {\n            day = 1;\n        }\n    }\n\n    if (pmHour && hours < 12) {\n        hours += 12;\n    }\n\n    if (UTC) {\n        if (hoursOffset) {\n            hours += -hoursOffset;\n        }\n\n        if (minutesOffset) {\n            minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n        }\n\n        result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n    } else {\n        result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n        adjustDST(result, hours);\n    }\n\n    if (year < 100) {\n        result.setFullYear(year);\n    }\n\n    if (result.getDate() !== day && UTC === undefined) {\n        return null;\n    }\n\n    return result;\n}\n\nfunction addFormatSpaces(value, format) {\n    var leadingSpaces = leadingSpacesRegex.exec(format)[0];\n    var trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n    return (\"\" + leadingSpaces + value + trailingSpaces);\n}\n\nfunction parseExact(value, format, info) {\n    var pattern = datePattern(format, info).split(EMPTY);\n\n    var state = {\n        format: pattern,\n        idx: 0,\n        value: addFormatSpaces(value, format),\n        valueIdx: 0,\n        year: null,\n        month: null,\n        day: null,\n        hours: null,\n        minutes: null,\n        seconds: null,\n        milliseconds: null\n    };\n    var length = pattern.length;\n    var literal = false;\n\n    for (; state.idx < length; state.idx++) {\n        var ch = pattern[state.idx];\n\n        if (literal) {\n            if (ch === \"'\") {\n                literal = false;\n            }\n\n            checkLiteral(state);\n        } else {\n            if (parsers[ch]) {\n                var invalid = parsers[ch](state, info);\n                if (invalid) {\n                    return null;\n                }\n            } else if (ch === \"'\") {\n                literal = true;\n                checkLiteral(state);\n            } else if (!checkLiteral(state)) {\n                return null;\n            }\n        }\n    }\n\n    if (state.valueIdx < value.length) {\n        return null;\n    }\n\n    return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n    var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n    var result = offset.substring(1);\n    result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n    return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n    if (value && value.indexOf(\"/D\") === 0) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            date = date[1];\n            var tzoffset = offsetRegExp.exec(date.substring(1));\n\n            date = new Date(parseInt(date, 10));\n\n            if (tzoffset) {\n                tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n                date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n                date = convertTimeZone(date, 0, -1 * tzoffset);\n            }\n\n            return date;\n        }\n    }\n}\n\nfunction defaultFormats(calendar) {\n    var formats = [];\n    var patterns = calendar.patterns;\n    var length = FORMATS_SEQUENCE.length;\n\n    for (var idx = 0; idx < length; idx++) {\n        formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n    }\n\n    return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    if (!value) {\n        return null;\n    }\n\n    if (isDate(value)) {\n        return value;\n    }\n\n    var parseValue = String(value).trim();\n    var date = parseMicrosoftDateFormat(parseValue);\n    if (date) {\n        return date;\n    }\n\n    var info = localeInfo(locale);\n    var parseFormats = formats || defaultFormats(info.calendar);\n    parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n    var length = parseFormats.length;\n\n    for (var idx = 0; idx < length; idx++) {\n        date = parseExact(parseValue, parseFormats[idx], info);\n        if (date) {\n            return date;\n        }\n    }\n\n    return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n    month: {\n        type: 'months',\n        minLength: 3,\n        standAlone: 'L'\n    },\n\n    quarter: {\n        type: 'quarters',\n        minLength: 3,\n        standAlone: 'q'\n    },\n\n    weekday: {\n        type: 'days',\n        minLength: {\n            E: 0,\n            c: 3,\n            e: 3\n        },\n        standAlone: 'c'\n    },\n\n    dayperiod: {\n        type: 'dayPeriods',\n        minLength: 0\n    },\n\n    era: {\n        type: 'eras',\n        minLength: 0\n    }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n    var lastPart = parts[parts.length - 1];\n    if (lastPart && lastPart.type === LITERAL) {\n        lastPart.pattern += value;\n    } else {\n        parts.push({\n            type: LITERAL,\n            pattern: value\n        });\n    }\n}\n\nfunction isHour12(pattern) {\n    return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    var info = localeInfo(locale);\n    var pattern = datePattern(format, info);\n    var parts = [];\n    var lastIndex = dateFormatRegExp.lastIndex = 0;\n    var match = dateFormatRegExp.exec(pattern);\n\n    while (match) {\n        var value = match[0];\n\n        if (lastIndex < match.index) {\n            addLiteral(parts, pattern.substring(lastIndex, match.index));\n        }\n\n        if (value.startsWith('\"') || value.startsWith(\"'\")) {\n            addLiteral(parts, value);\n        } else {\n            var specifier = value[0];\n            var type = DATE_FIELD_MAP[specifier];\n            var part = {\n                type: type,\n                pattern: value\n            };\n\n            if (type === 'hour') {\n                part.hour12 = isHour12(value);\n            }\n\n            var names = NAME_TYPES[type];\n\n            if (names) {\n                var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n                var patternLength = value.length;\n\n                if (patternLength >= minLength) {\n                    part.names = {\n                        type: names.type,\n                        nameType: dateNameType(patternLength),\n                        standAlone: names.standAlone === specifier\n                    };\n                }\n            }\n\n            parts.push(part);\n        }\n\n        lastIndex = dateFormatRegExp.lastIndex;\n        match = dateFormatRegExp.exec(pattern);\n    }\n\n    if (lastIndex < pattern.length) {\n        addLiteral(parts, pattern.substring(lastIndex));\n    }\n\n    return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n    if (format) {\n        if (isDate(value)) {\n            return formatDate(value, format, locale);\n        } else if (isNumber(value)) {\n            return formatNumber(value, format, locale);\n        }\n    }\n\n    return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n    return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n        var value = values[parseInt(index, 10)];\n\n        return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n    });\n}\n","import * as coreIntl from '@telerik/kendo-intl';\n// tslint:disable:max-line-length\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\nvar IntlService = /** @class */ (function () {\n    /**\n     * Creates a new instance of the internationalization service.\n     *\n     * @param locale - The locale that will be used by the internationalization methods.\n     */\n    function IntlService(locale) {\n        this.locale = locale;\n        if (locale === '' && process.env.NODE_ENV !== 'production') {\n            throw 'Locale should not be empty string';\n        }\n    }\n    /**\n     * Formats a string with placeholders such as `Total amount {0:c}`.\n     *\n     * @param format - The format string.\n     * @param values - One or more values to output in the format string placeholders.\n     * @return - The formatted string.\n     */\n    IntlService.prototype.format = function (format) {\n        var values = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            values[_i - 1] = arguments[_i];\n        }\n        /* The following code retains backward compatibility with the old API */\n        if (values.length === 1 && Array.isArray(values[0])) {\n            return coreIntl.format(format, values[0], this.locale);\n        }\n        return coreIntl.format(format, values, this.locale);\n    };\n    /**\n     * Converts a `Date` object to a string based on the specified format. If no format is provided, the default short date format is used.\n     *\n     * @param value - The date which will be formatted.\n     * @param format - The format string or options.\n     * @return - The formatted date.\n     */\n    IntlService.prototype.formatDate = function (value, format) {\n        return coreIntl.formatDate(value, format, this.locale);\n    };\n    /**\n     * Converts an object to a string based on the specified format.\n     *\n     * @param value - The value which will be formatted.\n     * @param format - The format to use.\n     * @return - The formatted object.\n     */\n    IntlService.prototype.toString = function (value, format) {\n        return coreIntl.toString(value, format, this.locale);\n    };\n    /**\n     * Converts a string to a `Number`.\n     *\n     * @param value - The string which will be parsed.\n     * @param format - The format string or options.\n     * @return - The parsed number.\n     */\n    IntlService.prototype.parseNumber = function (value, format) {\n        return coreIntl.parseNumber(value, this.locale, format);\n    };\n    /**\n     * Converts a string to a `Date` object based on the specified format.\n     *\n     * @param value - The string which will be converted.\n     * @param format - The format strings or options.\n     * @return - The parsed date.\n     */\n    IntlService.prototype.parseDate = function (value, format) {\n        return coreIntl.parseDate(value, format, this.locale);\n    };\n    /**\n     * Converts a `Number` to a string based on the specified format.\n     *\n     * @param value - The number which will be formatted.\n     * @param format - The format string or options.\n     * @return - The formatted number.\n     */\n    IntlService.prototype.formatNumber = function (value, format) {\n        return coreIntl.formatNumber(value, format, this.locale);\n    };\n    /**\n     * Returns a localized date field name based on specific `dateFieldName` options.\n     *\n     * @param options - The detailed configuration for the desired date field name.\n     * @returns - The localized date field name from the current locale based on the option.\n     */\n    IntlService.prototype.dateFieldName = function (options) {\n        return coreIntl.dateFieldName(options, this.locale);\n    };\n    /**\n     * Returns the day names from the current locale based on the option.\n     *\n     * @param options - The detailed configuration for the desired date format.\n     * @return - The day names from the current locale based on the option.\n     */\n    IntlService.prototype.dateFormatNames = function (options) {\n        return coreIntl.dateFormatNames(this.locale, options);\n    };\n    /**\n     * Splits the date format into objects which contain information about each part of the pattern.\n     *\n     * @param format - The format string or options.\n     * @returns - The date format parts.\n     */\n    IntlService.prototype.splitDateFormat = function (format) {\n        return coreIntl.splitDateFormat(format, this.locale);\n    };\n    /**\n     * Returns the number symbols from the current locale.\n     *\n     * @return - The number symbols from the current locale.\n     */\n    IntlService.prototype.numberSymbols = function () {\n        return coreIntl.numberSymbols(this.locale);\n    };\n    /**\n     * Returns the first day index, starting from Sunday.\n     *\n     * @return - The index of the first day of the week (0 == Sunday).\n     */\n    IntlService.prototype.firstDay = function () {\n        return coreIntl.firstDay(this.locale);\n    };\n    return IntlService;\n}());\nexport { IntlService };\n// tslint:enable:max-line-length\n//# sourceMappingURL=IntlService.js.map","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n    if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n    var info = localeInfo(locale);\n    var dateFields = info.calendar.dateFields;\n    if (!dateFields) {\n        throw errors.NoDateFieldNames.error();\n    }\n\n    var fieldNameInfo = dateFields[options.type] || {};\n\n    return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n    var info = getLocaleInfo(locale);\n\n    return info.numbers.symbols;\n}","/**\n * @hidden\n */\nexport var messages = Object.create({});\n//# sourceMappingURL=messages.js.map","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\nvar LocalizationService = /** @class */ (function () {\n    function LocalizationService(language) {\n        this.language = language;\n        if (language === '' && process.env.NODE_ENV !== 'production') {\n            throw 'Language should not be an empty string';\n        }\n    }\n    // tslint:disable:max-line-length\n    /**\n     * Provides a string based on a key for the current language. When no string for the current language is available under this key, the `defaultValue` is returned.\n     *\n     * @param key - The key which identifies the string for the current language.\n     * @param defaultValue - The default value which will be returned when no string\n     * for the current language is available under the key.\n     * @return - The string for the current language.\n     */\n    // tslint:enable:max-line-length\n    LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n        if (this.language &&\n            messages[this.language] &&\n            messages[this.language].hasOwnProperty(key)) {\n            return messages[this.language][key];\n        }\n        else {\n            return defaultValue;\n        }\n    };\n    return LocalizationService;\n}());\nexport { LocalizationService };\n//# sourceMappingURL=LocalizationService.js.map","import * as React from 'react';\nimport { IntlService } from '../Intl/IntlService';\nimport { LocalizationService } from '../Localization/LocalizationService';\n/** @hidden */\nexport var GlobalizationContext = React.createContext({\n    intl: new IntlService('en'),\n    localization: new LocalizationService()\n});\n//# sourceMappingURL=GlobalizationContext.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { IntlService } from './IntlService';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n// tslint:disable:max-line-length\n/**\n * A React component which provides an internationalization service. Expects a locale string as a property of the component.\n */\nvar IntlProvider = /** @class */ (function (_super) {\n    __extends(IntlProvider, _super);\n    function IntlProvider() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * Returns an internationalization service. The method is suitable for overriding when you implement custom internationalization behavior.\n     */\n    IntlProvider.prototype.getIntlService = function () {\n        return new IntlService(this.props.locale);\n    };\n    /**\n     * @hidden\n     */\n    IntlProvider.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(GlobalizationContext.Consumer, null, function (glob) { return (React.createElement(GlobalizationContext.Provider, { value: __assign({}, glob, { intl: _this.getIntlService() }) }, _this.props.children)); }));\n    };\n    /**\n     * @hidden\n     */\n    IntlProvider.propTypes = {\n        locale: PropTypes.string\n    };\n    return IntlProvider;\n}(React.Component));\nexport default IntlProvider;\n// tslint:enable:max-line-length\n//# sourceMappingURL=IntlProvider.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { LocalizationService } from './LocalizationService';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n// tslint:disable:max-line-length\n/**\n * A React component which provides a localization service. Expects a language string as a property of the component.\n */\nvar LocalizationProvider = /** @class */ (function (_super) {\n    __extends(LocalizationProvider, _super);\n    function LocalizationProvider() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * Returns a localization service. The method is suitable for overriding when you implement custom localization behavior.\n     */\n    LocalizationProvider.prototype.getLocalizationService = function () {\n        return new LocalizationService(this.props.language);\n    };\n    /**\n     * @hidden\n     */\n    LocalizationProvider.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(GlobalizationContext.Consumer, null, function (glob) { return (React.createElement(GlobalizationContext.Provider, { value: __assign({}, glob, { localization: _this.getLocalizationService() }) }, _this.props.children)); }));\n    };\n    /**\n     * @hidden\n     */\n    LocalizationProvider.propTypes = {\n        language: PropTypes.string\n    };\n    return LocalizationProvider;\n}(React.Component));\nexport { LocalizationProvider };\n// tslint:enable:max-line-length\n//# sourceMappingURL=LocalizationProvider.js.map","import { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService';\nimport { GlobalizationContext } from './globalization/GlobalizationContext';\n// tslint:disable:max-line-length\n/**\n * Provides an internationalization service. When the passed component is a direct or indirect child of `IntlProvider`, the returned service uses the locale of the provider. Otherwise, uses `en` as a default locale. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideIntlService(component) {\n    if (!component && process.env.NODE_ENV !== 'production') {\n        throw \"Passed component - \" + component + \" is invalid.\";\n    }\n    return component.context && component.context.intl\n        ? component.context.intl\n        : new IntlService('en');\n}\n/**\n * Provides a localization service. When the passed component is a direct or indirect child of `LocalizationProvider`, the returned service uses the language of the provider. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideLocalizationService(component) {\n    if (!component && process.env.NODE_ENV !== 'production') {\n        throw \"Passed component - \" + component + \" is invalid.\";\n    }\n    return component.context && component.context.localization\n        ? component.context.localization\n        : new LocalizationService();\n}\n/**\n * A method which registers a component class or a functional stateless component for internationalization. When a component of that type is a direct or indirect child of `IntlProvider`, the locale of the provider is used. Otherwise, uses `en` as a default locale.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForIntl(component) {\n    component.contextType = GlobalizationContext;\n}\n/**\n * A method which registers a component class or a stateless functional component for localization. When a component of that type is a direct or indirect child of `LocalizationProvider`, the language of the provider is used.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForLocalization(component) {\n    component.contextType = GlobalizationContext;\n}\n// tslint:enable:max-line-length\n//# sourceMappingURL=intlUtils.js.map","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * @hidden\n */\nexport var useInternationalization = function () { return React.useContext(GlobalizationContext).intl; };\n//# sourceMappingURL=useInternationalization.js.map","var _a;\n/**\n * @hidden\n */\nexport var pagerInfo = 'pager.info';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'pager.firstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'pager.previousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'pager.nextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'pager.lastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'pager.itemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'pager.page';\n/**\n * @hidden\n */\nexport var pagerOf = 'pager.of';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'pager.totalPages';\n/**\n * @hidden\n */\nexport var filterEqOperator = 'filter.eqOperator';\n/**\n * @hidden\n */\nexport var filterNotEqOperator = 'filter.notEqOperator';\n/**\n * @hidden\n */\nexport var filterIsNullOperator = 'filter.isNullOperator';\n/**\n * @hidden\n */\nexport var filterIsNotNullOperator = 'filter.isNotNullOperator';\n/**\n * @hidden\n */\nexport var filterIsEmptyOperator = 'filter.isEmptyOperator';\n/**\n * @hidden\n */\nexport var filterIsNotEmptyOperator = 'filter.isNotEmptyOperator';\n/**\n * @hidden\n */\nexport var filterStartsWithOperator = 'filter.startsWithOperator';\n/**\n * @hidden\n */\nexport var filterContainsOperator = 'filter.containsOperator';\n/**\n * @hidden\n */\nexport var filterNotContainsOperator = 'filter.notContainsOperator';\n/**\n * @hidden\n */\nexport var filterEndsWithOperator = 'filter.endsWithOperator';\n/**\n * @hidden\n */\nexport var filterGteOperator = 'filter.gteOperator';\n/**\n * @hidden\n */\nexport var filterGtOperator = 'filter.gtOperator';\n/**\n * @hidden\n */\nexport var filterLteOperator = 'filter.lteOperator';\n/**\n * @hidden\n */\nexport var filterLtOperator = 'filter.ltOperator';\n/**\n * @hidden\n */\nexport var filterIsTrue = 'filter.isTrue';\n/**\n * @hidden\n */\nexport var filterIsFalse = 'filter.isFalse';\n/**\n * @hidden\n */\nexport var filterAfterOrEqualOperator = 'filter.afterOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAfterOperator = 'filter.afterOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOperator = 'filter.beforeOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOrEqualOperator = 'filter.beforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAndLogic = 'filter.andLogic';\n/**\n * @hidden\n */\nexport var filterOrLogic = 'filter.orLogic';\n/**\n * @hidden\n */\nexport var filterAddExpression = 'filter.addExpression';\n/**\n * @hidden\n */\nexport var filterAddGroup = 'filter.addGroup';\n/**\n * @hidden\n */\nexport var filterClose = 'filter.close';\n/**\n * @hidden\n */\nexport var columnMenuFilterClearButton = 'columnMenu.filterClearButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterSubmitButton = 'columnMenu.filterSubmitButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterTitle = 'columnMenu.filterTitle';\n/**\n * @hidden\n */\nexport var columnMenuSortAscending = 'columnMenu.sortAscending';\n/**\n * @hidden\n */\nexport var columnMenuSortDescending = 'columnMenu.sortDescending';\n/**\n * @hidden\n */\nexport var columnMenuFilterEqOperator = 'columnMenu.filterEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotEqOperator = 'columnMenu.filterNotEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNullOperator = 'columnMenu.filterIsNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotNullOperator = 'columnMenu.filterIsNotNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsEmptyOperator = 'columnMenu.filterIsEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotEmptyOperator = 'columnMenu.filterIsNotEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterStartsWithOperator = 'columnMenu.filterStartsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterContainsOperator = 'columnMenu.filterContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotContainsOperator = 'columnMenu.filterNotContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterEndsWithOperator = 'columnMenu.filterEndsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGteOperator = 'columnMenu.filterGteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGtOperator = 'columnMenu.filterGtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLteOperator = 'columnMenu.filterLteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLtOperator = 'columnMenu.filterLtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsTrue = 'columnMenu.filterIsTrue';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOrEqualOperator = 'columnMenu.filterAfterOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOperator = 'columnMenu.filterAfterOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOperator = 'columnMenu.filterBeforeOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOrEqualOperator = 'columnMenu.filterBeforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAndLogic = 'columnMenu.filterAndLogic';\n/**\n * @hidden\n */\nexport var columnMenuFilterOrLogic = 'columnMenu.filterOrLogic';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[pagerItemPerPage] = 'items per page',\n    _a[pagerInfo] = '{0} - {1} of {2} items',\n    _a[pagerFirstPage] = 'Go to the first page',\n    _a[pagerPreviousPage] = 'Go to the previous page',\n    _a[pagerNextPage] = 'Go to the next page',\n    _a[pagerLastPage] = 'Go to the last page',\n    _a[pagerPage] = 'Page',\n    _a[pagerOf] = 'Of',\n    _a[pagerTotalPages] = '{0}',\n    _a[filterEqOperator] = 'Is equal to',\n    _a[filterNotEqOperator] = 'Is not equal to',\n    _a[filterIsNullOperator] = 'Is null',\n    _a[filterIsNotNullOperator] = 'Is not null',\n    _a[filterIsEmptyOperator] = 'Is empty',\n    _a[filterIsNotEmptyOperator] = 'Is not empty',\n    _a[filterStartsWithOperator] = 'Starts with',\n    _a[filterContainsOperator] = 'Contains',\n    _a[filterNotContainsOperator] = 'Does not contain',\n    _a[filterEndsWithOperator] = 'Ends with',\n    _a[filterGteOperator] = 'Is greater than or equal to',\n    _a[filterGtOperator] = 'Is greater than',\n    _a[filterLteOperator] = 'Is less than or equal to',\n    _a[filterLtOperator] = 'Is less than',\n    _a[filterIsTrue] = 'Is true',\n    _a[filterIsFalse] = 'Is false',\n    _a[filterAfterOrEqualOperator] = 'Is after or equal to',\n    _a[filterAfterOperator] = 'Is after',\n    _a[filterBeforeOperator] = 'Is before',\n    _a[filterBeforeOrEqualOperator] = 'Is before or equal to',\n    _a[filterAndLogic] = 'And',\n    _a[filterOrLogic] = 'Or',\n    _a[filterAddExpression] = 'Add Expression',\n    _a[filterAddGroup] = 'Add Group',\n    _a[filterClose] = 'Close',\n    _a[columnMenuFilterClearButton] = 'Clear',\n    _a[columnMenuFilterSubmitButton] = 'Filter',\n    _a[columnMenuFilterTitle] = 'Filter',\n    _a[columnMenuSortAscending] = 'Sort Ascending',\n    _a[columnMenuSortDescending] = 'Sort Descending',\n    _a[columnMenuFilterEqOperator] = 'Is equal to',\n    _a[columnMenuFilterNotEqOperator] = 'Is not equal to',\n    _a[columnMenuFilterIsNullOperator] = 'Is null',\n    _a[columnMenuFilterIsNotNullOperator] = 'Is not null',\n    _a[columnMenuFilterIsEmptyOperator] = 'Is empty',\n    _a[columnMenuFilterIsNotEmptyOperator] = 'Is not empty',\n    _a[columnMenuFilterStartsWithOperator] = 'Starts with',\n    _a[columnMenuFilterContainsOperator] = 'Contains',\n    _a[columnMenuFilterNotContainsOperator] = 'Does not contain',\n    _a[columnMenuFilterEndsWithOperator] = 'Ends with',\n    _a[columnMenuFilterGteOperator] = 'Is greater than or equal to',\n    _a[columnMenuFilterGtOperator] = 'Is greater than',\n    _a[columnMenuFilterLteOperator] = 'Is less than or equal to',\n    _a[columnMenuFilterLtOperator] = 'Is less than',\n    _a[columnMenuFilterIsTrue] = 'Is true',\n    _a[columnMenuFilterAfterOrEqualOperator] = 'Is after or equal to',\n    _a[columnMenuFilterAfterOperator] = 'Is after',\n    _a[columnMenuFilterBeforeOperator] = 'Is before',\n    _a[columnMenuFilterBeforeOrEqualOperator] = 'Is before or equal to',\n    _a[columnMenuFilterAndLogic] = 'And',\n    _a[columnMenuFilterOrLogic] = 'Or',\n    _a);\n//# sourceMappingURL=index.js.map","var _a;\n/**\n * @hidden\n */\nexport var labelsOptional = 'labels.optional';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[labelsOptional] = '(Optional)',\n    _a);\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * @hidden\n */\nexport var useLocalization = function () { return React.useContext(GlobalizationContext).localization; };\n//# sourceMappingURL=useLocalization.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage, pagerTotalPages } from './../messages';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n    __extends(PagerInput, _super);\n    function PagerInput() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._text = undefined;\n        _this.onChange = function (e) {\n            var text = _this._text = e.target.value.replace(/\\D/g, '');\n            _this.forceUpdate();\n            if (text) {\n                _this.props.pageChange(parseInt(text, 10), e);\n            }\n        };\n        _this.value = function () {\n            var value = _this._text === undefined ? _this.props.currentPage.toString() : _this._text;\n            _this._text = undefined;\n            return value;\n        };\n        return _this;\n    }\n    PagerInput.prototype.render = function () {\n        var _this = this;\n        var intlService = provideIntlService(this);\n        var localizationService = provideLocalizationService(this);\n        var pageMessage = this.props.messagesMap ? this.props.messagesMap(pagerPage) :\n            ({ messageKey: pagerPage, defaultMessage: messages[pagerPage] });\n        var ofMessage = this.props.messagesMap ? this.props.messagesMap(pagerOf) :\n            ({ messageKey: pagerOf, defaultMessage: messages[pagerOf] });\n        var totalPagesMessage = this.props.messagesMap ? this.props.messagesMap(pagerTotalPages) :\n            ({ messageKey: pagerTotalPages, defaultMessage: messages[pagerTotalPages] });\n        return (React.createElement(\"span\", { className: \"k-pager-input k-label\" },\n            localizationService.toLanguageString(pageMessage.messageKey, pageMessage.defaultMessage),\n            React.createElement(\"input\", { className: \"k-textbox\", value: this.value(), onBlur: function () { return _this.forceUpdate(); }, onChange: this.onChange }), localizationService.toLanguageString(ofMessage.messageKey, ofMessage.defaultMessage) + \" \" + intlService\n            .format(localizationService.toLanguageString(totalPagesMessage.messageKey, totalPagesMessage.defaultMessage), [\n            this.props.totalPages\n        ])));\n    };\n    return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n//# sourceMappingURL=PagerInput.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { labelsOptional, messages } from './messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\n/**\n * Represents the KendoReact Label component.\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n *     const ddlRef = React.useRef(null);\n *     const labelId = 'ddl-sizes-label';\n *     const editorId = 'ddl-sizes';\n *\n *     return (\n *         <div>\n *             <Label id={labelId} editorId={editorId} editorRef={ddlRef}>\n *                 Shirt Size:\n *             </Label>\n *             <DropDownList\n *                 ref={ddlRef}\n *                 id={editorId}\n *                 ariaLabelledBy={labelId}\n *                 data={sizes}\n *             />\n *             <br />\n *         </div>\n *     );\n * };\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Label = function (props) {\n    var id = props.id, editorId = props.editorId, editorRef = props.editorRef, editorDisabled = props.editorDisabled, children = props.children, editorValid = props.editorValid, style = props.style, className = props.className, optional = props.optional;\n    var localizationService = useLocalization();\n    var localizedOptional = optional ? localizationService\n        .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n    var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n    var onLabelClick = React.useCallback(function (e) {\n        if (editorRef && editorRef.current && !editorDisabled) {\n            if (editorRef.current.focus) {\n                e.preventDefault();\n                editorRef.current.focus();\n            }\n            var editorActionElement = editorRef.current.actionElement;\n            if (editorActionElement) {\n                e.preventDefault();\n                editorActionElement.click();\n            }\n        }\n    }, [editorRef]);\n    var labelClassName = classNames({\n        'k-label': true,\n        'k-label-empty': !children,\n        'k-text-error': editorValid === false,\n        'k-text-disabled': editorDisabled === true\n    }, className);\n    return (React.createElement(\"label\", { id: id, htmlFor: editorId, onClick: onLabelClick, style: style, className: labelClassName },\n        children,\n        optionalElement));\n};\nLabel.propTypes = {\n    id: PropTypes.string,\n    editorId: PropTypes.string,\n    editorRef: PropTypes.oneOfType([\n        PropTypes.func,\n        PropTypes.shape({ current: PropTypes.any })\n    ]),\n    editorValid: PropTypes.bool,\n    editorDisabled: PropTypes.bool,\n    style: PropTypes.object,\n    className: PropTypes.string,\n    optional: PropTypes.bool\n};\nLabel.displayName = 'KendoReactLabel';\n//# sourceMappingURL=Label.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact Error component.\n * Render the error text that will be shown underneath the form editor after a validation.\n */\nexport var Error = function (props) {\n    var errorClassName = classNames({\n        'k-form-error': true,\n        'k-text-start': props.direction === 'start',\n        'k-text-end': props.direction === 'end'\n    }, props.className);\n    return (React.createElement(\"div\", { id: props.id, role: 'alert', style: props.style, className: errorClassName }, props.children));\n};\nError.propTypes = {\n    id: PropTypes.string,\n    direction: PropTypes.oneOf(['start', 'end']),\n    children: PropTypes.oneOfType([\n        PropTypes.element,\n        PropTypes.node\n    ]),\n    style: PropTypes.object,\n    className: PropTypes.string\n};\nError.defaultProps = {\n    direction: 'start'\n};\nError.displayName = 'KendoReactError';\n//# sourceMappingURL=Error.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact Hint component.\n * Render the hint text that will be shown underneath the form editor.\n */\nexport var Hint = function (props) {\n    var hintClassName = classNames({\n        'k-form-hint': true,\n        'k-text-start': props.direction === 'start',\n        'k-text-end': props.direction === 'end'\n    }, props.className);\n    return (React.createElement(\"div\", { id: props.id, style: props.style, className: hintClassName }, props.children));\n};\nHint.propTypes = {\n    id: PropTypes.string,\n    direction: PropTypes.oneOf(['start', 'end']),\n    children: PropTypes.oneOfType([\n        PropTypes.element,\n        PropTypes.node\n    ]),\n    style: PropTypes.object,\n    className: PropTypes.string\n};\nHint.defaultProps = {\n    direction: 'start'\n};\nHint.displayName = 'KendoReactHint';\n//# sourceMappingURL=Hint.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { labelsOptional, messages } from './messages';\n/**\n * Represents the KendoReact FloatingLabel component.\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n *     const [ddlState, setDdlState] = React.useState();\n *     const editorId = 'ddl-sizes';\n *     return (\n *         <FloatingLabel label={'Shirt Size:'} editorId={editorId} editorValue={ddlState}>\n *             <DropDownList\n *                 id={editorId}\n *                 value={ddlState}\n *                 data={sizes}\n *                 onChange={(e) => setDdlState(e.target.value)}\n *             />\n *         </FloatingLabel>\n *     );\n * };\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar FloatingLabel = /** @class */ (function (_super) {\n    __extends(FloatingLabel, _super);\n    function FloatingLabel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            focused: false\n        };\n        /**\n         * @hidden\n         */\n        _this.handleFocus = function (_) {\n            _this.setState({ focused: true });\n        };\n        /**\n         * @hidden\n         */\n        _this.handleBlur = function (_) {\n            _this.setState({ focused: false });\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    FloatingLabel.prototype.render = function () {\n        var _a = this.props, label = _a.label, editorId = _a.editorId, className = _a.className, editorValue = _a.editorValue, editorPlaceholder = _a.editorPlaceholder, editorValid = _a.editorValid, editorDisabled = _a.editorDisabled, style = _a.style, id = _a.id, optional = _a.optional;\n        var localizationService = provideLocalizationService(this);\n        var localizedOptional = optional ? localizationService\n            .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n        var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n        var spanClassNames = classNames({\n            'k-textbox-container': true,\n            'k-state-focused': this.state.focused,\n            'k-state-empty': !(editorValue || editorPlaceholder),\n            'k-text-disabled': editorDisabled,\n            'k-rtl': this.props.dir === 'rtl'\n        }, className);\n        var labelClassNames = classNames({\n            'k-label': true,\n            'k-text-error': editorValid === false,\n            'k-text-disabled': editorDisabled\n        });\n        return (React.createElement(\"span\", { className: spanClassNames, onFocus: this.handleFocus, onBlur: this.handleBlur, style: style, dir: this.props.dir },\n            this.props.children,\n            label\n                ? editorId\n                    ? React.createElement(\"label\", { id: id, htmlFor: editorId, className: labelClassNames },\n                        label,\n                        optionalElement)\n                    : React.createElement(\"span\", { id: id, className: labelClassNames },\n                        label,\n                        optionalElement)\n                : null));\n    };\n    /**\n     * @hidden\n     */\n    FloatingLabel.propTypes = {\n        label: PropTypes.string,\n        editorId: PropTypes.string,\n        editorValue: PropTypes.string,\n        editorPlaceholder: PropTypes.string,\n        editorValid: PropTypes.bool,\n        editorDisabled: PropTypes.bool,\n        id: PropTypes.string,\n        style: PropTypes.object,\n        className: PropTypes.string,\n        optional: PropTypes.bool\n    };\n    return FloatingLabel;\n}(React.Component));\nexport { FloatingLabel };\nregisterForLocalization(FloatingLabel);\n//# sourceMappingURL=FloatingLabel.js.map","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n    if (!element) {\n        return 0;\n    }\n    var wnd = element.ownerDocument.defaultView;\n    var computedStyles = wnd.getComputedStyle(element);\n    var marginTop = parseFloat(computedStyles.marginTop);\n    var marginBottom = parseFloat(computedStyles.marginBottom);\n    return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n    if (!element) {\n        return 0;\n    }\n    var wnd = element.ownerDocument.defaultView;\n    var computedStyles = wnd.getComputedStyle(element);\n    var marginLeft = parseFloat(computedStyles.marginLeft);\n    var marginRight = parseFloat(computedStyles.marginRight);\n    return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n    'animation-container': 'k-animation-container',\n    'animation-container-relative': 'k-animation-container-relative',\n    'animation-container-fixed': 'k-animation-container-fixed',\n    'push-right-enter': 'k-push-right-enter',\n    'push-right-appear': 'k-push-right-appear',\n    'push-right-enter-active': 'k-push-right-enter-active',\n    'push-right-appear-active': 'k-push-right-appear-active',\n    'push-right-exit': 'k-push-right-exit',\n    'push-right-exit-active': 'k-push-right-exit-active',\n    'push-left-enter': 'k-push-left-enter',\n    'push-left-appear': 'k-push-left-appear',\n    'push-left-enter-active': 'k-push-left-enter-active',\n    'push-left-appear-active': 'k-push-left-appear-active',\n    'push-left-exit': 'k-push-left-exit',\n    'push-left-exit-active': 'k-push-left-exit-active',\n    'push-down-enter': 'k-push-down-enter',\n    'push-down-appear': 'k-push-down-appear',\n    'push-down-enter-active': 'k-push-down-enter-active',\n    'push-down-appear-active': 'k-push-down-appear-active',\n    'push-down-exit': 'k-push-down-exit',\n    'push-down-exit-active': 'k-push-down-exit-active',\n    'push-up-enter': 'k-push-up-enter',\n    'push-up-appear': 'k-push-up-appear',\n    'push-up-enter-active': 'k-push-up-enter-active',\n    'push-up-appear-active': 'k-push-up-appear-active',\n    'push-up-exit': 'k-push-up-exit',\n    'push-up-exit-active': 'k-push-up-exit-active',\n    'expand': 'k-expand',\n    'expand-vertical-enter': 'k-expand-vertical-enter',\n    'expand-vertical-appear': 'k-expand-vertical-appear',\n    'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n    'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n    'expand-vertical-exit': 'k-expand-vertical-exit',\n    'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n    'expand-horizontal-enter': 'k-expand-horizontal-enter',\n    'expand-horizontal-appear': 'k-expand-horizontal-appear',\n    'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n    'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n    'expand-horizontal-exit': 'k-expand-horizontal-exit',\n    'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n    'child-animation-container': 'k-child-animation-container',\n    'fade-enter': 'k-fade-enter',\n    'fade-appear': 'k-fade-appear',\n    'fade-enter-active': 'k-fade-enter-active',\n    'fade-appear-active': 'k-fade-appear-active',\n    'fade-exit': 'k-fade-exit',\n    'fade-exit-active': 'k-fade-exit-active',\n    'zoom-in-enter': 'k-zoom-in-enter',\n    'zoom-in-appear': 'k-zoom-in-appear',\n    'zoom-in-enter-active': 'k-zoom-in-enter-active',\n    'zoom-in-appear-active': 'k-zoom-in-appear-active',\n    'zoom-in-exit': 'k-zoom-in-exit',\n    'zoom-in-exit-active': 'k-zoom-in-exit-active',\n    'zoom-out-enter': 'k-zoom-out-enter',\n    'zoom-out-appear': 'k-zoom-out-appear',\n    'zoom-out-enter-active': 'k-zoom-out-enter-active',\n    'zoom-out-appear-active': 'k-zoom-out-appear-active',\n    'zoom-out-exit': 'k-zoom-out-exit',\n    'zoom-out-exit-active': 'k-zoom-out-exit-active',\n    'slide-in-appear': 'k-slide-in-appear',\n    'centered': 'k-centered',\n    'slide-in-appear-active': 'k-slide-in-appear-active',\n    'slide-down-enter': 'k-slide-down-enter',\n    'slide-down-appear': 'k-slide-down-appear',\n    'slide-down-enter-active': 'k-slide-down-enter-active',\n    'slide-down-appear-active': 'k-slide-down-appear-active',\n    'slide-down-exit': 'k-slide-down-exit',\n    'slide-down-exit-active': 'k-slide-down-exit-active',\n    'slide-up-enter': 'k-slide-up-enter',\n    'slide-up-appear': 'k-slide-up-appear',\n    'slide-up-enter-active': 'k-slide-up-enter-active',\n    'slide-up-appear-active': 'k-slide-up-appear-active',\n    'slide-up-exit': 'k-slide-up-exit',\n    'slide-up-exit-active': 'k-slide-up-exit-active',\n    'slide-right-enter': 'k-slide-right-enter',\n    'slide-right-appear': 'k-slide-right-appear',\n    'slide-right-enter-active': 'k-slide-right-enter-active',\n    'slide-right-appear-active': 'k-slide-right-appear-active',\n    'slide-right-exit': 'k-slide-right-exit',\n    'slide-right-exit-active': 'k-slide-right-exit-active',\n    'slide-left-enter': 'k-slide-left-enter',\n    'slide-left-appear': 'k-slide-left-appear',\n    'slide-left-enter-active': 'k-slide-left-enter-active',\n    'slide-left-appear-active': 'k-slide-left-appear-active',\n    'slide-left-exit': 'k-slide-left-exit',\n    'slide-left-exit-active': 'k-slide-left-exit-active',\n    'reveal-vertical-enter': 'k-reveal-vertical-enter',\n    'reveal-vertical-appear': 'k-reveal-vertical-appear',\n    'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n    'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n    'reveal-vertical-exit': 'k-reveal-vertical-exit',\n    'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n    'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n    'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n    'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n    'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n    'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n    'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nexport default {\n    outerHeight: outerHeight,\n    outerWidth: outerWidth,\n    styles: styles\n};\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n    __extends(AnimationChild, _super);\n    function AnimationChild() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(AnimationChild.prototype, \"element\", {\n        /**\n         * The element that is being animated.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    AnimationChild.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n        var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n        var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n        var animationStyle = {\n            entering: __assign({ transitionDuration: transitionEnterDuration + \"ms\" }, animationEnteringStyle),\n            entered: __assign({}, animationEnteredStyle),\n            exiting: __assign({ transitionDuration: transitionExitDuration + \"ms\" }, animationExitingStyle),\n            exited: __assign({}, animationExitedStyle)\n        };\n        var transitionProps = {\n            in: this.props.in,\n            appear: appear,\n            enter: enter,\n            exit: exit,\n            mountOnEnter: mountOnEnter,\n            unmountOnExit: unmountOnExit,\n            timeout: {\n                enter: transitionEnterDuration,\n                exit: transitionExitDuration\n            },\n            onEnter: (function (e) {\n                if (onEnter) {\n                    onEnter.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onEntering: (function (e) {\n                if (onEntering) {\n                    onEntering.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onEntered: (function (e) {\n                if (onEntered) {\n                    onEntered.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExit: (function (e) {\n                if (onExit) {\n                    onExit.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExiting: (function (e) {\n                if (onExiting) {\n                    onExiting.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            onExited: (function (e) {\n                if (onExited) {\n                    onExited.call(undefined, { animatedElement: e, target: _this });\n                }\n            }),\n            classNames: {\n                appear: styles[transitionName + \"-appear\"] || transitionName + \"-appear\",\n                appearActive: styles[transitionName + \"-appear-active\"] || transitionName + \"-appear-active\",\n                enter: styles[transitionName + \"-enter\"] || transitionName + \"-enter\",\n                enterActive: styles[transitionName + \"-enter-active\"] || transitionName + \"-enter-active\",\n                exit: styles[transitionName + \"-exit\"] || transitionName + \"-exit\",\n                exitActive: styles[transitionName + \"-exit-active\"] || transitionName + \"-exit-active\"\n            }\n        };\n        return (React.createElement(CSSTransition, __assign({}, transitionProps, other), function (status) {\n            return (React.createElement(\"div\", { style: __assign({}, defaultStyle, animationStyle[status]), className: childAnimationContainerClassNames, ref: function (div) { _this._element = div; } }, children));\n        }));\n    };\n    /**\n     * @hidden\n     */\n    AnimationChild.propTypes = {\n        in: PropTypes.bool,\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        transitionName: PropTypes.string.isRequired,\n        className: PropTypes.string,\n        appear: PropTypes.bool,\n        enter: PropTypes.bool,\n        exit: PropTypes.bool,\n        transitionEnterDuration: PropTypes.number.isRequired,\n        transitionExitDuration: PropTypes.number.isRequired,\n        mountOnEnter: PropTypes.bool,\n        unmountOnExit: PropTypes.bool,\n        animationEnteringStyle: PropTypes.object,\n        animationEnteredStyle: PropTypes.object,\n        animationExitingStyle: PropTypes.object,\n        animationExitedStyle: PropTypes.object\n    };\n    /**\n     * @hidden\n     */\n    AnimationChild.defaultProps = {\n        mountOnEnter: true,\n        unmountOnExit: false,\n        onEnter: noop,\n        onEntering: noop,\n        onEntered: noop,\n        onExit: noop,\n        onExiting: noop,\n        onExited: noop,\n        animationEnteringStyle: {},\n        animationEnteredStyle: {},\n        animationExitingStyle: {},\n        animationExitedStyle: {}\n    };\n    return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n//# sourceMappingURL=AnimationChild.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n    __extends(Animation, _super);\n    function Animation() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Animation.prototype.render = function () {\n        var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n        var transitionProps = {\n            id: id,\n            style: style,\n            component: component,\n            childFactory: childFactory,\n            className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n        };\n        var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n        return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n    };\n    /**\n     * @hidden\n     */\n    Animation.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any,\n        transitionName: PropTypes.string.isRequired,\n        appear: PropTypes.bool.isRequired,\n        enter: PropTypes.bool.isRequired,\n        exit: PropTypes.bool.isRequired,\n        transitionEnterDuration: PropTypes.number.isRequired,\n        transitionExitDuration: PropTypes.number.isRequired\n    };\n    /**\n     * @hidden\n     */\n    Animation.defaultProps = {\n        component: 'div'\n    };\n    return Animation;\n}(React.Component));\nexport { Animation };\n//# sourceMappingURL=Animation.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Fade = /** @class */ (function (_super) {\n    __extends(Fade, _super);\n    function Fade() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Fade.prototype.render = function () {\n        var _a = this.props, children = _a.children, other = __rest(_a, [\"children\"]);\n        var animationProps = {\n            transitionName: \"fade\"\n        };\n        return (React.createElement(Animation, __assign({}, animationProps, other), children));\n    };\n    /**\n     * @hidden\n     */\n    Fade.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any\n    };\n    /**\n     * @hidden\n     */\n    Fade.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: false,\n        transitionEnterDuration: 500,\n        transitionExitDuration: 500\n    };\n    return Fade;\n}(React.Component));\nexport { Fade };\n//# sourceMappingURL=Fade.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Expand = /** @class */ (function (_super) {\n    __extends(Expand, _super);\n    function Expand() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Expand.prototype.render = function () {\n        var _a = this.props, direction = _a.direction, children = _a.children, other = __rest(_a, [\"direction\", \"children\"]);\n        var animationProps = {\n            transitionName: \"expand-\" + direction\n        };\n        return (React.createElement(Animation, __assign({}, animationProps, other), children));\n    };\n    /**\n     * @hidden\n     */\n    Expand.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'horizontal',\n            'vertical'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any\n    };\n    /**\n     * @hidden\n     */\n    Expand.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'vertical'\n    };\n    return Expand;\n}(React.Component));\nexport { Expand };\n//# sourceMappingURL=Expand.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = { position: 'absolute', top: '0', left: '0' };\n// tslint:enable:max-line-length\nvar Push = /** @class */ (function (_super) {\n    __extends(Push, _super);\n    function Push() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Push.prototype.render = function () {\n        var _a = this.props, children = _a.children, direction = _a.direction, other = __rest(_a, [\"children\", \"direction\"]);\n        return (React.createElement(Animation, __assign({}, other, { transitionName: \"push-\" + direction, animationExitingStyle: this.props.stackChildren\n                ? EXITING_ANIMATION_STYLE\n                : undefined }), children));\n    };\n    /**\n     * @hidden\n     */\n    Push.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'up',\n            'down',\n            'left',\n            'right'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any,\n        stackChildren: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    Push.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'right',\n        stackChildren: false\n    };\n    return Push;\n}(React.Component));\nexport { Push };\n//# sourceMappingURL=Push.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Slide = /** @class */ (function (_super) {\n    __extends(Slide, _super);\n    function Slide() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Slide.prototype.render = function () {\n        var _a = this.props, direction = _a.direction, children = _a.children, other = __rest(_a, [\"direction\", \"children\"]);\n        var animationProps = {\n            transitionName: \"slide-\" + direction\n        };\n        return (React.createElement(Animation, __assign({}, animationProps, other), children));\n    };\n    /**\n     * @hidden\n     */\n    Slide.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'up',\n            'down',\n            'left',\n            'right'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any\n    };\n    /**\n     * @hidden\n     */\n    Slide.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'down'\n    };\n    return Slide;\n}(React.Component));\nexport { Slide };\n//# sourceMappingURL=Slide.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = { position: 'absolute', top: '0', left: '0' };\n// tslint:enable:max-line-length\nvar Zoom = /** @class */ (function (_super) {\n    __extends(Zoom, _super);\n    function Zoom() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    Zoom.prototype.render = function () {\n        var _a = this.props, children = _a.children, direction = _a.direction, other = __rest(_a, [\"children\", \"direction\"]);\n        return (React.createElement(Animation, __assign({}, other, { transitionName: \"zoom-\" + direction, animationExitingStyle: this.props.stackChildren\n                ? EXITING_ANIMATION_STYLE\n                : undefined }), children));\n    };\n    /**\n     * @hidden\n     */\n    Zoom.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'in',\n            'out'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any,\n        stackChildren: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    Zoom.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'out',\n        stackChildren: false\n    };\n    return Zoom;\n}(React.Component));\nexport { Zoom };\n//# sourceMappingURL=Zoom.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n    __extends(Reveal, _super);\n    function Reveal() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            maxHeight: undefined,\n            maxWidth: undefined\n        };\n        _this.componentWillEnter = function (event) {\n            var onEnter = _this.props.onEnter;\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onEnter) {\n                    onEnter.call(undefined, event);\n                }\n            });\n        };\n        _this.componentIsEntering = function (event) {\n            var onEntering = _this.props.onEntering;\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onEntering) {\n                    onEntering.call(undefined, event);\n                }\n            });\n        };\n        _this.componentWillExit = function (event) {\n            var onExit = _this.props.onExit;\n            _this.updateContainerDimensions(event.animatedElement, function () {\n                if (onExit) {\n                    onExit.call(undefined, event);\n                }\n            });\n        };\n        _this.updateContainerDimensions = function (node, done) {\n            if (done === void 0) { done = noop; }\n            var content = node.firstChild;\n            if (content) {\n                var newHeight = util.outerHeight(content);\n                var newWidth = util.outerWidth(content);\n                _this.setState({\n                    maxHeight: newHeight,\n                    maxWidth: newWidth\n                }, done);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Reveal.prototype.render = function () {\n        var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n        var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n        var maxOffset;\n        if (direction === 'vertical') {\n            maxOffset = { maxHeight: maxHeight ? maxHeight + \"px\" : null };\n        }\n        else {\n            maxOffset = { maxWidth: maxWidth ? maxWidth + \"px\" : null };\n        }\n        var animationEnteringStyle = {\n            maxHeight: maxOffset.maxHeight,\n            maxWidth: maxOffset.maxWidth\n        };\n        var factory = function (child) {\n            if (!child.props.in) {\n                return React.cloneElement(child, __assign({}, child.props, { style: __assign({}, child.props.style, { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n            }\n            return child;\n        };\n        return (React.createElement(Animation, __assign({}, other, { childFactory: childFactory ? childFactory : factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\" + direction }), children));\n    };\n    /**\n     * @hidden\n     */\n    Reveal.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.arrayOf(PropTypes.node),\n            PropTypes.node\n        ]),\n        childFactory: PropTypes.any,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf([\n            'horizontal',\n            'vertical'\n        ]),\n        component: PropTypes.string,\n        id: PropTypes.string,\n        style: PropTypes.any\n    };\n    /**\n     * @hidden\n     */\n    Reveal.defaultProps = {\n        appear: false,\n        enter: true,\n        exit: true,\n        transitionEnterDuration: 300,\n        transitionExitDuration: 300,\n        direction: 'vertical'\n    };\n    return Reveal;\n}(React.Component));\nexport { Reveal };\n//# sourceMappingURL=Reveal.js.map","import * as React from 'react';\n/** @hidden */\nexport var useAnimation = function (config, deps) {\n    var offset = React.useRef(0);\n    var mount = React.useRef(false);\n    var animationFrame = React.useRef();\n    var animate = function (transition) {\n        var duration = transition.duration;\n        var start;\n        var progress;\n        var skip = offset.current && 1 - offset.current;\n        if (transition.onStart) {\n            transition.onStart();\n        }\n        var frame = function (timestamp) {\n            if (!start) {\n                start = timestamp;\n            }\n            progress = timestamp - start + 1;\n            var rate = progress / duration + skip;\n            if (rate <= 1) {\n                if (transition.onUpdate) {\n                    transition.onUpdate(rate);\n                }\n                animationFrame.current = window.requestAnimationFrame(frame);\n                offset.current = rate;\n            }\n            else {\n                if (transition.onEnd) {\n                    transition.onEnd(1);\n                }\n                offset.current = 0;\n            }\n        };\n        animationFrame.current = window.requestAnimationFrame(frame);\n    };\n    React.useEffect(function () {\n        animate(config);\n        return function () {\n            if (animationFrame.current) {\n                window.cancelAnimationFrame(animationFrame.current);\n            }\n        };\n    }, deps);\n    React.useEffect(function () {\n        mount.current = true;\n    }, []);\n};\n//# sourceMappingURL=useAnimation.js.map","export default {\n    \"bottom\": \"bottom\",\n    \"center\": \"center\",\n    \"middle\": \"middle\",\n    \"left\": \"left\",\n    \"right\": \"right\",\n    \"top\": \"top\"\n};\n","import point from './align-point';\n\nvar align = function (options) {\n    var anchorRect = options.anchorRect;\n    var anchorAlign = options.anchorAlign;\n    var elementRect = options.elementRect;\n    var elementAlign = options.elementAlign;\n    var margin = options.margin; if ( margin === void 0 ) margin = {};\n    var anchorHorizontal = anchorAlign.horizontal;\n    var anchorVertical = anchorAlign.vertical;\n    var elementHorizontal = elementAlign.horizontal;\n    var elementVertical = elementAlign.vertical;\n\n    var horizontalMargin = margin.horizontal || 0;\n    var verticalMargin = margin.vertical || 0;\n\n    var top = anchorRect.top;\n    var left = anchorRect.left;\n\n    if (anchorVertical === point.bottom) {\n        top += anchorRect.height;\n    }\n\n    if (anchorVertical === point.center || anchorVertical === point.middle) {\n        top += Math.round(anchorRect.height / 2);\n    }\n\n    if (elementVertical === point.bottom) {\n        top -= elementRect.height;\n        verticalMargin *= -1;\n    }\n\n    if (elementVertical === point.center || elementVertical === point.middle) {\n        top -= Math.round(elementRect.height / 2);\n        verticalMargin *= -1;\n    }\n\n    if (anchorHorizontal === point.right) {\n        left += anchorRect.width;\n    }\n\n    if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n        left += Math.round(anchorRect.width / 2);\n    }\n\n    if (elementHorizontal === point.right) {\n        left -= elementRect.width;\n        horizontalMargin *= -1;\n    }\n\n    if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n        left -= Math.round(elementRect.width / 2);\n        horizontalMargin *= -1;\n    }\n\n    return {\n        top: top + verticalMargin,\n        left: left + horizontalMargin\n    };\n};\n\nexport default align;\n","export default function ownerDocument(element) {\n    return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nvar getWindow = function (element) { return ownerDocument(element).defaultView; };\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nvar getDocument = function (element) { return ownerDocument(element).documentElement; };\n\nexport default getDocument;\n","var cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n    if (!cachedWidth && typeof document !== 'undefined') {\n        var div = document.createElement(\"div\");\n\n        div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n        div.innerHTML = \"&nbsp;\";\n        document.body.appendChild(div);\n\n        cachedWidth = div.offsetWidth - div.scrollWidth;\n\n        document.body.removeChild(div);\n    }\n\n    return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n    var win = wnd(element);\n    var document = getDocument(element);\n    var result = {\n        height: win.innerHeight,\n        width: win.innerWidth\n    };\n\n    if (document.scrollHeight - document.clientHeight > 0) {\n        result.width -= scrollbarWidth();\n    }\n\n    return result;\n}\n","import windowViewport from './window-viewport';\n\nvar boundingOffset = function (element) {\n    if (!element.getBoundingClientRect) {\n        var viewport = windowViewport(element);\n        return {\n            bottom: viewport.height,\n            left: 0,\n            right: viewport.width,\n            top: 0\n        };\n    }\n\n    var ref = element.getBoundingClientRect();\n    var bottom = ref.bottom;\n    var left = ref.left;\n    var right = ref.right;\n    var top = ref.top;\n\n    return {\n        bottom: bottom,\n        left: left,\n        right: right,\n        top: top\n    };\n};\n\nexport default boundingOffset;\n","import documentElement from './document';\n\nvar offsetParent = function (element) {\n    var offsetParent = element.offsetParent;\n\n    while (offsetParent && offsetParent.style.position === \"static\") {\n        offsetParent = offsetParent.offsetParent;\n    }\n\n    return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import offsetParent from './offset-parent';\n\nvar isBodyOffset = function (element) { return (offsetParent(element) === element.ownerDocument.body); };\n\nexport default isBodyOffset;\n","var rectOfHiddenElement = function (element) {\n    var ref = element.style;\n    var display = ref.display;\n    var left = ref.left;\n    var position = ref.position;\n\n    element.style.display = '';\n    element.style.left = '-10000px';\n    element.style.position = 'absolute';\n\n    var rect = element.getBoundingClientRect();\n\n    element.style.display = display;\n    element.style.left = left;\n    element.style.position = position;\n\n    return rect;\n};\n\nvar offset = function (element) {\n    var rect = element.getBoundingClientRect();\n    var left = rect.left;\n    var top = rect.top;\n\n    if (!rect.height && !rect.width) {\n        rect = rectOfHiddenElement(element);\n    }\n\n    return {\n        top: top,\n        left: left,\n        height: rect.height,\n        width: rect.width\n    };\n};\n\nexport default offset;\n","export default function (element, until) {\n    var result = [];\n    var next = element.parentNode;\n\n    while (next) {\n        result.push(next);\n\n        if (next === until) { break; }\n\n        next = next.parentNode;\n    }\n\n    return result;\n};\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n    var documentElement = docElement(element);\n    var win = wnd(element);\n\n    return {\n        x: win.pageXOffset || documentElement.scrollLeft || 0,\n        y: win.pageYOffset || documentElement.scrollTop || 0\n    };\n}\n","import scrollPosition from './scroll-position';\n\nexport default function (element) {\n    if (element === (element.ownerDocument || {}).body) {\n        return scrollPosition(element);\n    }\n\n    return {\n        x: element.scrollLeft,\n        y: element.scrollTop\n    };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function (element, parent) {\n    var win = wnd(element);\n    var elementStyles = win.getComputedStyle(element);\n    var offset = offsetRect(element);\n    var parentElement = parent || offsetParent(element);\n\n    var ownerDocument = element.ownerDocument;\n    var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n    var parentOffset = { top: 0, left: 0 };\n\n    if (elementStyles.position !== \"fixed\" && useRelative) {\n        var parentStyles = win.getComputedStyle(parentElement);\n\n        parentOffset = offsetRect(parentElement);\n        parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n        parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n    }\n\n    return {\n        top: offset.top - parentOffset.top,\n        left: offset.left - parentOffset.left,\n        height: offset.height,\n        width: offset.width\n    };\n};\n\nexport default position;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default function (offsetParentElement, element) { return ( // eslint-disable-line no-arrow-condition\n    offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n); };\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n    var parent = offsetParent(element);\n\n    return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","export default {\n    \"fit\": \"fit\",\n    \"flip\": \"flip\"\n};\n","var _a;\n/**\n * @hidden\n */\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[clear] = 'clear',\n    _a[nodata] = 'NO DATA FOUND.',\n    _a);\n//# sourceMappingURL=index.js.map","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function(position, size, viewPortSize) {\n    var output = 0;\n\n    if (position + size > viewPortSize) {\n        output = viewPortSize - (position + size);\n    }\n\n    if (position < 0) {\n        output = -position;\n    }\n\n    return output;\n};\n\nvar flip = function(ref) {\n    var offset = ref.offset;\n    var size = ref.size;\n    var anchorSize = ref.anchorSize;\n    var viewPortSize = ref.viewPortSize;\n    var anchorAlignPoint = ref.anchorAlignPoint;\n    var elementAlignPoint = ref.elementAlignPoint;\n    var margin = ref.margin;\n\n    var output = 0;\n\n    var isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n    var isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n    var marginToAdd = 2 * margin; //2x to keep margin after flip\n\n    if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n        var isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n        if (offset < 0 && isBeforeAnchor) {\n            output = size + anchorSize + marginToAdd;\n            if (offset + output + size > viewPortSize) {\n                output = 0; //skip flip\n            }\n        } else if (offset >= 0 && !isBeforeAnchor) {\n            if (offset + size > viewPortSize) {\n                output += -(anchorSize + size + marginToAdd);\n            }\n\n            if (offset + output < 0) {\n                output = 0; //skip flip\n            }\n        }\n    }\n\n    return output;\n};\n\nvar restrictToView = function (options) {\n    var anchorRect = options.anchorRect;\n    var anchorAlign = options.anchorAlign;\n    var elementRect = options.elementRect;\n    var elementAlign = options.elementAlign;\n    var collisions = options.collisions;\n    var viewPort = options.viewPort;\n    var margin = options.margin; if ( margin === void 0 ) margin = {};\n    var elementTop = elementRect.top;\n    var elementLeft = elementRect.left;\n    var elementHeight = elementRect.height;\n    var elementWidth = elementRect.width;\n    var viewPortHeight = viewPort.height;\n    var viewPortWidth = viewPort.width;\n    var horizontalMargin = margin.horizontal || 0;\n    var verticalMargin = margin.vertical || 0;\n\n    var left = 0;\n    var top = 0;\n\n    var isHorizontalFlip = collisions.horizontal === collision.flip;\n    var isVerticalFlip = collisions.vertical === collision.flip;\n\n    if (collisions.vertical === collision.fit) {\n        top += fit(elementTop, elementHeight, viewPortHeight);\n    }\n\n    if (collisions.horizontal === collision.fit) {\n        left += fit(elementLeft, elementWidth, viewPortWidth);\n    }\n\n    if (isVerticalFlip) {\n        top += flip({\n            margin: verticalMargin,\n            offset: elementTop,\n            size: elementHeight,\n            anchorSize: anchorRect.height,\n            viewPortSize: viewPortHeight,\n            anchorAlignPoint: anchorAlign.vertical,\n            elementAlignPoint: elementAlign.vertical\n        });\n    }\n\n    if (isHorizontalFlip) {\n        left += flip({\n            margin: horizontalMargin,\n            offset: elementLeft,\n            size: elementWidth,\n            anchorSize: anchorRect.width,\n            viewPortSize: viewPortWidth,\n            anchorAlignPoint: anchorAlign.horizontal,\n            elementAlignPoint: elementAlign.horizontal\n        });\n    }\n    var flippedHorizontal = isHorizontalFlip && left !== 0;\n    var flippedVertical = isVerticalFlip && top !== 0;\n\n    return {\n        flipped: flippedHorizontal || flippedVertical,\n        flip: {\n            horizontal: flippedHorizontal,\n            vertical: flippedVertical\n        },\n        offset: {\n            left: left,\n            top: top\n        }\n    };\n};\n\nexport default restrictToView;\n","export default function (element) {\n    var result = [];\n\n    var sibling = element.parentNode.firstElementChild;\n\n    while (sibling) {\n        if (sibling !== element) {\n            result.push(sibling);\n        }\n\n        sibling = sibling.nextElementSibling;\n    }\n    return result;\n};\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default function (anchor, container) {\n    var parentElements = parents(anchor);\n    var containerElement = container;\n    var siblingElements;\n    var result;\n\n    while (containerElement) {\n        siblingElements = siblings(containerElement);\n\n        result = parentElements.reduce(\n            function (list, p) { return list.concat(siblingElements.filter(function (s) { return s === p; })); },\n            []\n        )[0];\n\n        if (result) { break; }\n\n        containerElement = containerElement.parentElement;\n    }\n\n    return result;\n};\n\n","import { parents, siblingContainer } from '@progress/kendo-popup-common';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var eitherRect = function (rect, offset) {\n    if (!rect) {\n        return { height: 0, left: offset.left, top: offset.top, width: 0 };\n    }\n    return rect;\n};\n/**\n * @hidden\n */\nexport var replaceOffset = function (rect, offset) {\n    if (!offset) {\n        return rect;\n    }\n    var result = {\n        height: rect.height,\n        left: offset.left,\n        top: offset.top,\n        width: rect.width\n    };\n    return result;\n};\n/**\n * @hidden\n */\nexport var removeStackingOffset = function (rect, stackingOffset) {\n    if (!stackingOffset) {\n        return rect;\n    }\n    var result = {\n        height: rect.height,\n        left: rect.left - stackingOffset.left,\n        top: rect.top - stackingOffset.top,\n        width: rect.width\n    };\n    return result;\n};\n/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n    var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n    var newLeft = newOffset.left, newTop = newOffset.top;\n    return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var OVERFLOW_REGEXP = /auto|scroll/;\n/**\n * @hidden\n */\nvar overflowStyle = function (element) {\n    var styles = window.getComputedStyle(element);\n    return \"\" + styles.overflow + styles.overflowX + styles.overflowY;\n};\n/**\n * @hidden\n */\nexport var scrollableParents = function (element) {\n    var parentElements = [];\n    if (!canUseDOM) {\n        return parentElements;\n    }\n    var parent = element.parentElement;\n    while (parent) {\n        if (OVERFLOW_REGEXP.test(overflowStyle(parent))) {\n            parentElements.push(parent);\n        }\n        parent = parent.parentElement;\n    }\n    parentElements.push(window);\n    return parentElements;\n};\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var hasRelativeStackingContext = function () {\n    if (!canUseDOM || !document.body) {\n        return false;\n    }\n    var top = 10;\n    var parent = document.createElement('div');\n    parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n    parent.innerHTML = \"<div style=\\\"position: fixed; top: \" + top + \"px;\\\">child</div>\";\n    document.body.appendChild(parent);\n    var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n    document.body.removeChild(parent);\n    return isDifferent;\n};\n/**\n * @hidden\n */\nexport var HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/**\n * @hidden\n */\nexport var zIndex = function (anchor, container) {\n    if (!anchor || !canUseDOM) {\n        return null;\n    }\n    var sibling = siblingContainer(anchor, container);\n    if (!sibling) {\n        return null;\n    }\n    var result = [anchor].concat(parents(anchor, sibling)).reduce(function (index, p) {\n        var zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n        var current = parseInt(zIndexStyle, 10);\n        return current > index ? current : index;\n    }, 0);\n    return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nexport var CollisionType = {\n    fit: 'fit',\n    flip: 'flip'\n};\n/**\n * @hidden\n */\nexport var AlignPoint = {\n    left: 'left',\n    center: 'center',\n    right: 'right',\n    bottom: 'bottom',\n    top: 'top'\n};\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n    if (options === void 0) { options = {}; }\n    var timeout, context, args, result;\n    var previous = 0;\n    options = options || {};\n    var later = function () {\n        previous = options.leading === false ? 0 : new Date().getTime();\n        timeout = null;\n        result = func.apply(context, args);\n        if (!timeout) {\n            context = args = null;\n        }\n    };\n    var throttled = function () {\n        var now = new Date().getTime();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\n        var remaining = wait - (now - previous);\n        context = this;\n        args = arguments;\n        if (remaining <= 0 || remaining > wait) {\n            if (timeout) {\n                clearTimeout(timeout);\n                timeout = null;\n            }\n            previous = now;\n            result = func.apply(context, args);\n            if (!timeout) {\n                context = args = null;\n            }\n        }\n        else if (!timeout && options.trailing !== false) {\n            timeout = setTimeout(later, remaining);\n        }\n        return result;\n    };\n    return throttled;\n};\n//# sourceMappingURL=util.js.map","import { eitherRect, removeStackingOffset } from '../util';\n/**\n * @hidden\n */\nvar AlignService = /** @class */ (function () {\n    function AlignService(_dom) {\n        this._dom = _dom;\n    }\n    AlignService.prototype.alignElement = function (settings) {\n        var anchor = settings.anchor, element = settings.element, anchorAlign = settings.anchorAlign, elementAlign = settings.elementAlign, offset = settings.offset;\n        var fixedMode = !this._dom.hasOffsetParent(element);\n        var anchorRect = fixedMode ?\n            this.absoluteRect(anchor, element, offset) :\n            this.relativeRect(anchor, element, offset);\n        return this._dom.align({\n            anchorAlign: anchorAlign,\n            anchorRect: anchorRect,\n            elementAlign: elementAlign,\n            elementRect: this._dom.offset(element)\n        });\n    };\n    AlignService.prototype.absoluteRect = function (anchor, element, offset) {\n        var dom = this._dom;\n        var rect = eitherRect(dom.offset(anchor), offset);\n        var stackingOffset = dom.stackingElementOffset(element);\n        var removedOffset = removeStackingOffset(rect, stackingOffset);\n        var stackingScroll = dom.stackingElementScroll(element);\n        var withScroll = dom.addScroll(removedOffset, stackingScroll);\n        var scrollPosition = this.elementScrollPosition(anchor, element);\n        var result = dom.removeScroll(withScroll, scrollPosition);\n        result.left += window.scrollX || window.pageXOffset;\n        result.top += window.scrollY || window.pageYOffset;\n        return result;\n    };\n    AlignService.prototype.elementScrollPosition = function (anchor, element) {\n        return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n    };\n    AlignService.prototype.relativeRect = function (anchor, element, offset) {\n        return eitherRect(this._dom.position(anchor, element), offset);\n    };\n    return AlignService;\n}());\nexport { AlignService };\n//# sourceMappingURL=alignService.js.map","import { align, applyLocationOffset, boundingOffset, getWindowViewPort, isBodyOffset, offset, positionWithScroll, restrictToView, addScroll, removeScroll, scrollPosition, siblingContainer } from '@progress/kendo-popup-common';\nimport { HAS_RELATIVE_STACKING_CONTEXT, scrollableParents, zIndex } from '../util';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n    function DOMService() {\n    }\n    DOMService.prototype.addOffset = function (current, addition) {\n        return {\n            left: current.left + addition.left,\n            top: current.top + addition.top\n        };\n    };\n    DOMService.prototype.align = function (settings) {\n        return align(settings);\n    };\n    DOMService.prototype.boundingOffset = function (el) {\n        return boundingOffset(el);\n    };\n    DOMService.prototype.getWindow = function () {\n        return canUseDOM ? window : null;\n    };\n    DOMService.prototype.isBodyOffset = function (el) {\n        return isBodyOffset(el);\n    };\n    DOMService.prototype.hasOffsetParent = function (el) {\n        if (!el) {\n            return false;\n        }\n        var offsetParentEl = el.offsetParent;\n        return offsetParentEl &&\n            !(offsetParentEl.nodeName === 'BODY' &&\n                window.getComputedStyle(offsetParentEl).position === 'static');\n    };\n    DOMService.prototype.offset = function (el) {\n        if (!el) {\n            return null;\n        }\n        return offset(el);\n    };\n    DOMService.prototype.staticOffset = function (element) {\n        if (!element) {\n            return null;\n        }\n        var _a = element.style, left = _a.left, top = _a.top;\n        element.style.left = '0px';\n        element.style.top = '0px';\n        var currentOffset = offset(element);\n        element.style.left = left;\n        element.style.top = top;\n        return currentOffset;\n    };\n    DOMService.prototype.position = function (element, popup) {\n        if (!element || !popup) {\n            return null;\n        }\n        var parentSibling = siblingContainer(element, popup);\n        return positionWithScroll(element, parentSibling);\n    };\n    DOMService.prototype.relativeOffset = function (el, currentLocation) {\n        return applyLocationOffset(this.offset(el), currentLocation, this.isBodyOffset(el));\n    };\n    DOMService.prototype.addScroll = function (rect, scroll) {\n        return addScroll(rect, scroll);\n    };\n    DOMService.prototype.removeScroll = function (rect, scroll) {\n        return removeScroll(rect, scroll);\n    };\n    DOMService.prototype.restrictToView = function (settings) {\n        return restrictToView(settings);\n    };\n    DOMService.prototype.scrollPosition = function (el) {\n        return scrollPosition(el);\n    };\n    DOMService.prototype.scrollableParents = function (el) {\n        return scrollableParents(el);\n    };\n    DOMService.prototype.stackingElementOffset = function (el) {\n        var relativeContextElement = this.getRelativeContextElement(el);\n        if (!relativeContextElement) {\n            return null;\n        }\n        return offset(relativeContextElement);\n    };\n    DOMService.prototype.stackingElementScroll = function (el) {\n        var relativeContextElement = this.getRelativeContextElement(el);\n        if (!relativeContextElement) {\n            return { x: 0, y: 0 };\n        }\n        return {\n            x: relativeContextElement.scrollLeft,\n            y: relativeContextElement.scrollTop\n        };\n    };\n    DOMService.prototype.stackingElementViewPort = function (el) {\n        var relativeContextElement = this.getRelativeContextElement(el);\n        if (!relativeContextElement) {\n            return null;\n        }\n        return {\n            height: relativeContextElement.scrollHeight,\n            width: relativeContextElement.scrollWidth\n        };\n    };\n    DOMService.prototype.getRelativeContextElement = function (el) {\n        if (!el || !HAS_RELATIVE_STACKING_CONTEXT) {\n            return null;\n        }\n        var parent = el.parentElement;\n        while (parent) {\n            if (window.getComputedStyle(parent).transform !== 'none') {\n                return parent;\n            }\n            parent = parent.parentElement;\n        }\n        return null;\n    };\n    DOMService.prototype.useRelativePosition = function (el) {\n        return !!this.getRelativeContextElement(el);\n    };\n    DOMService.prototype.windowViewPort = function (el) {\n        return getWindowViewPort(el);\n    };\n    DOMService.prototype.zIndex = function (anchor, container) {\n        return zIndex(anchor, container);\n    };\n    DOMService.prototype.zoomLevel = function () {\n        if (!canUseDOM) {\n            return 1;\n        }\n        return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2));\n    };\n    DOMService.prototype.isZoomed = function () {\n        return this.zoomLevel() > 1;\n    };\n    return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=domService.js.map","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default function (element, parent, scale) {\n    if ( scale === void 0 ) scale = 1;\n\n    var offsetParentElement = parent ? offsetParent(parent) : null;\n    var ref = position(element, offsetParentElement);\n    var top = ref.top;\n    var left = ref.left;\n    var height = ref.height;\n    var width = ref.width;\n    var ref$1 = offsetParentScrollPosition(offsetParentElement, element);\n    var x = ref$1.x;\n    var y = ref$1.y;\n    var ownerDocument = element.ownerDocument;\n    var positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n    return {\n        top: top + y * positionScale,\n        left: left + x * positionScale,\n        height: height,\n        width: width\n    };\n};\n","export default function applyLocationOffset(rect, location, isOffsetBody) {\n    var top = rect.top;\n    var left = rect.left;\n\n    if (isOffsetBody) {\n        left = 0;\n        top = 0;\n    }\n\n    return {\n        top: top + location.top,\n        left: left + location.left,\n        height: rect.height,\n        width: rect.width\n    };\n}\n","export default function addScroll(rect, scroll) {\n    return {\n        top: rect.top + scroll.y,\n        left: rect.left + scroll.x,\n        height: rect.height,\n        width: rect.width\n    };\n}\n","export default function removeScroll(rect, scroll) {\n    return {\n        top: rect.top - scroll.y,\n        left: rect.left - scroll.x,\n        height: rect.height,\n        width: rect.width\n    };\n}\n","import { eitherRect, replaceOffset } from '../util';\n/**\n * @hidden\n */\nvar PositionService = /** @class */ (function () {\n    function PositionService(_dom) {\n        this._dom = _dom;\n    }\n    PositionService.prototype.positionElement = function (settings) {\n        var anchor = settings.anchor, currentLocation = settings.currentLocation, element = settings.element, anchorAlign = settings.anchorAlign, elementAlign = settings.elementAlign, collisions = settings.collisions;\n        var dom = this._dom;\n        var viewPort = settings.viewPort || dom.stackingElementViewPort(element) || dom.windowViewPort(element);\n        var anchorRect = eitherRect(dom.offset(anchor), currentLocation);\n        var initialElementRect = replaceOffset(dom.staticOffset(element), currentLocation);\n        var elementRect = this.elementRect(element, initialElementRect);\n        var result = dom.restrictToView({\n            anchorAlign: anchorAlign,\n            anchorRect: anchorRect,\n            collisions: collisions,\n            elementAlign: elementAlign,\n            elementRect: elementRect,\n            viewPort: viewPort\n        });\n        return {\n            flipped: result.flipped,\n            offset: dom.addOffset(initialElementRect, result.offset)\n        };\n    };\n    PositionService.prototype.elementRect = function (element, rect) {\n        return this._dom.removeScroll(rect, this._dom.scrollPosition(element));\n    };\n    return PositionService;\n}());\nexport { PositionService };\n//# sourceMappingURL=positionService.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOMServer from 'react-dom/server';\nimport { Slide } from '@progress/kendo-react-animation';\nimport { classNames, canUseDOM } from '@progress/kendo-react-common';\nimport { CollisionType, AlignPoint, throttle, FRAME_DURATION } from './util';\nimport { AlignService } from './services/alignService';\nimport { DOMService } from './services/domService';\nimport { PositionService } from './services/positionService';\nvar DEFAULT_OFFSET = {\n    left: -1000,\n    top: 0\n};\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar K_POPUP = 'k-popup';\nvar getHtmlElement = function (source) {\n    return ReactDOM.findDOMNode(source);\n};\nvar Popup = /** @class */ (function (_super) {\n    __extends(Popup, _super);\n    function Popup(props) {\n        var _this = _super.call(this, props) || this;\n        _this._exitingAnimation = false;\n        _this._prevShow = false;\n        _this.onOpened = function () {\n            var element = getHtmlElement(_this);\n            if (_this.props.show) {\n                element.classList.add(ANIMATION_CONTAINER_SHOWN);\n            }\n            _this.attachRepositionHandlers(element);\n            if (_this.props.open) {\n                _this.props.open.call(undefined, { target: _this });\n            }\n            if (_this.props.onOpen) {\n                _this.props.onOpen.call(undefined, { target: _this });\n            }\n        };\n        _this.onClosing = function () {\n            if (!_this.props.show) {\n                var element = getHtmlElement(_this);\n                element.classList.remove(ANIMATION_CONTAINER_SHOWN);\n            }\n            _this.detachRepositionHandlers();\n        };\n        _this.onClosed = function () {\n            if (_this._exitingAnimation) {\n                _this._exitingAnimation = false;\n                _this.forceUpdate();\n            }\n            if (_this.props.close) {\n                _this.props.close.call(undefined, { target: _this });\n            }\n            if (_this.props.onClose) {\n                _this.props.onClose.call(undefined, { target: _this });\n            }\n        };\n        _this.position = function (settings, element, anchorElement) {\n            var anchorAlign = settings.anchorAlign, popupAlign = settings.popupAlign, collision = settings.collision, offset = settings.offset;\n            var alignedOffset = _this._alignService.alignElement({\n                anchor: anchorElement,\n                element: element,\n                elementAlign: popupAlign,\n                anchorAlign: anchorAlign,\n                offset: offset\n            });\n            var result = _this._positionService.positionElement({\n                anchor: anchorElement,\n                anchorAlign: anchorAlign,\n                collisions: collision,\n                element: element,\n                currentLocation: alignedOffset,\n                elementAlign: popupAlign\n            });\n            return result;\n        };\n        _this._flipped = false;\n        _this._offset = _this.props.offset;\n        _this._prevShow = props.show;\n        _this._domService = new DOMService();\n        _this._alignService = new AlignService(_this._domService);\n        _this._positionService = new PositionService(_this._domService);\n        _this.onOpened = _this.onOpened.bind(_this);\n        _this.onClosing = _this.onClosing.bind(_this);\n        _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Popup.prototype.componentDidUpdate = function () {\n        this._prevShow = this.props.show;\n    };\n    /**\n     * @hidden\n     */\n    Popup.prototype.componentWillUnmount = function () {\n        this.detachRepositionHandlers();\n    };\n    /**\n     * @hidden\n     */\n    Popup.prototype.render = function () {\n        var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, _b = _a.appendTo, appendTo = _b === void 0 ? canUseDOM ? document.body : undefined : _b;\n        if (show) {\n            var newPosition = this.calculatePosition(this.props, appendTo);\n            this._offset = newPosition.offset;\n            this._flipped = !!newPosition.flipped;\n        }\n        var direction = this._flipped && show ? 'up' : 'down';\n        var _c = this.transitionDuration, transitionEnterDuration = _c.transitionEnterDuration, transitionExitDuration = _c.transitionExitDuration;\n        var style = Object.assign({}, { position: 'absolute' }, this.props.style || {}, __assign({}, this._offset));\n        this._exitingAnimation = this._exitingAnimation || (this._prevShow && !show);\n        if ((show || this._exitingAnimation) && appendTo) {\n            var popup = (React.createElement(Slide, { componentChildClassName: classNames(popupClass, K_POPUP), className: classNames(className), id: id, onEntered: this.onOpened, onExiting: this.onClosing, onExited: this.onClosed, direction: direction, style: style, transitionEnterDuration: transitionEnterDuration, transitionExitDuration: transitionExitDuration, appear: true }, show ? children : null));\n            return ReactDOM.createPortal(popup, appendTo);\n        }\n        return null;\n    };\n    Object.defineProperty(Popup.prototype, \"transitionDuration\", {\n        get: function () {\n            var animate = this.props.animate;\n            var transitionEnterDuration = 0;\n            var transitionExitDuration = 0;\n            if (animate) {\n                if (animate === true) {\n                    // Inherit the default duration of the Animation component.\n                    transitionEnterDuration = transitionExitDuration = undefined;\n                }\n                else {\n                    transitionEnterDuration = animate.openDuration;\n                    transitionExitDuration = animate.closeDuration;\n                }\n            }\n            return { transitionEnterDuration: transitionEnterDuration, transitionExitDuration: transitionExitDuration };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Popup.prototype.calculatePosition = function (props, appendTo) {\n        if (!appendTo || !canUseDOM) {\n            return {\n                flipped: false,\n                offset: props.offset\n            };\n        }\n        var root = document.createElement('div');\n        appendTo.appendChild(root);\n        var style = Object.assign({}, props.style || {}, __assign({ visibility: 'hidden' }, DEFAULT_OFFSET));\n        var innerClasses = { className: classNames(props.popupClass, K_POPUP, 'k-child-animation-container') };\n        var popup = (React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_SHOWN, props.className), style: style }, React.Children.map(props.children, function (child, index) {\n            return React.createElement(\"div\", __assign({ key: index }, innerClasses), child);\n        })));\n        root.innerHTML = ReactDOMServer.renderToStaticMarkup(popup);\n        var newPosition = this.position(props, root.firstChild, props.anchor);\n        root.parentNode.removeChild(root);\n        return newPosition;\n    };\n    Popup.prototype.attachRepositionHandlers = function (element) {\n        var _this = this;\n        this.detachRepositionHandlers();\n        this._scrollableParents = this._domService.scrollableParents(this.props.anchor || element);\n        this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n        window.addEventListener('resize', this.reposition);\n    };\n    Popup.prototype.detachRepositionHandlers = function () {\n        var _this = this;\n        if (this._scrollableParents) {\n            this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n            this._scrollableParents = undefined;\n        }\n        window.removeEventListener('resize', this.reposition);\n    };\n    Popup.prototype.reposition = function () {\n        this.forceUpdate();\n    };\n    /**\n     * @hidden\n     */\n    Popup.propTypes = {\n        anchor: function (props) {\n            var anchor = props.anchor;\n            if (anchor && typeof anchor.nodeType !== 'number') {\n                return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n            }\n        },\n        appendTo: function (props) {\n            var element = props.appendTo;\n            if (element && typeof element.nodeType !== 'number') {\n                return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n            }\n        },\n        className: PropTypes.string,\n        id: PropTypes.string,\n        popupClass: PropTypes.string,\n        collision: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                CollisionType.fit,\n                CollisionType.flip\n            ]),\n            vertical: PropTypes.oneOf([\n                CollisionType.fit,\n                CollisionType.flip\n            ])\n        }),\n        anchorAlign: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                AlignPoint.left,\n                AlignPoint.center,\n                AlignPoint.right\n            ]),\n            vertical: PropTypes.oneOf([\n                AlignPoint.top,\n                AlignPoint.center,\n                AlignPoint.bottom\n            ])\n        }),\n        popupAlign: PropTypes.shape({\n            horizontal: PropTypes.oneOf([\n                AlignPoint.left,\n                AlignPoint.center,\n                AlignPoint.right\n            ]),\n            vertical: PropTypes.oneOf([\n                AlignPoint.top,\n                AlignPoint.center,\n                AlignPoint.bottom\n            ])\n        }),\n        offset: PropTypes.shape({\n            left: PropTypes.number,\n            top: PropTypes.number\n        }),\n        children: PropTypes.oneOfType([\n            PropTypes.element,\n            PropTypes.node\n        ]),\n        show: PropTypes.bool,\n        animate: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                openDuration: PropTypes.number,\n                closeDuration: PropTypes.number\n            })\n        ])\n    };\n    /**\n     * @hidden\n     */\n    Popup.defaultProps = {\n        collision: {\n            horizontal: CollisionType.fit,\n            vertical: CollisionType.flip\n        },\n        anchorAlign: {\n            horizontal: AlignPoint.left,\n            vertical: AlignPoint.bottom\n        },\n        popupAlign: {\n            horizontal: AlignPoint.left,\n            vertical: AlignPoint.top\n        },\n        offset: DEFAULT_OFFSET,\n        animate: true,\n        show: false\n    };\n    return Popup;\n}(React.Component));\nexport default Popup;\n//# sourceMappingURL=Popup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ListContainer = /** @class */ (function (_super) {\n    __extends(ListContainer, _super);\n    function ListContainer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListContainer.prototype.render = function () {\n        var _a = this.props, children = _a.children, onMouseDown = _a.onMouseDown, onBlur = _a.onBlur, width = _a.width, dir = _a.dir, popupSettings = _a.popupSettings;\n        return (React.createElement(Popup, __assign({ style: { width: width, direction: dir } }, popupSettings),\n            React.createElement(\"div\", { onMouseDown: onMouseDown, onBlur: onBlur }, children)));\n    };\n    return ListContainer;\n}(React.Component));\nexport default ListContainer;\n//# sourceMappingURL=ListContainer.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar ListFilter = /** @class */ (function (_super) {\n    __extends(ListFilter, _super);\n    function ListFilter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListFilter.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(\"span\", { className: \"k-list-filter\" },\n            React.createElement(\"input\", { ref: function (input) { return _this.input = input; }, value: this.props.value || '', className: \"k-textbox\", onChange: this.props.onChange, onKeyDown: this.props.onKeyDown }),\n            React.createElement(\"span\", { className: \"k-icon k-i-search\" })));\n    };\n    return ListFilter;\n}(React.Component));\nexport default ListFilter;\n//# sourceMappingURL=ListFilter.js.map","/**\n * @hidden\n */\nvar isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nvar sameCharsOnly = function (word, character) {\n    for (var idx = 0; idx < word.length; idx++) {\n        if (word.charAt(idx) !== character) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * @hidden\n */\nvar shuffleData = function (data, splitIndex, defaultItem) {\n    var result = data;\n    if (defaultItem) {\n        result = [defaultItem].concat(result);\n    }\n    return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nvar matchText = function (text, word, ignoreCase) {\n    if (!isPresent(text)) {\n        return false;\n    }\n    var temp = String(text);\n    if (ignoreCase) {\n        temp = temp.toLowerCase();\n    }\n    return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nvar scrollToItem = function (scrollElem, itemHeight, itemIndex, translate, virtualScroll) {\n    var viewportHeight = scrollElem.offsetHeight;\n    var itemOffsetTop = (itemHeight * itemIndex) +\n        (virtualScroll ? translate - scrollElem.scrollTop : 0);\n    if (virtualScroll) {\n        var diff = 0;\n        if (itemOffsetTop + itemHeight > viewportHeight) {\n            diff = itemOffsetTop + itemHeight - viewportHeight;\n        }\n        else if (itemOffsetTop < 0) {\n            diff = itemOffsetTop;\n        }\n        if (diff !== 0) {\n            scrollElem.scrollTop += diff;\n        }\n        else if (scrollElem.scrollTop === 0 && translate !== 0) {\n            scrollElem.scrollTop = translate;\n        }\n    }\n    else {\n        if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n            scrollElem.scrollTop = (itemOffsetTop + itemHeight - viewportHeight);\n        }\n        else if (itemOffsetTop < scrollElem.scrollTop) {\n            scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n        }\n    }\n};\n/**\n * @hidden\n */\nvar itemIndexStartsWith = function (items, text, field) {\n    var result = -1;\n    if (text) {\n        text = text.toLowerCase();\n        for (var i = 0; i < items.length; i++) {\n            var itemText = (getItemValue(items[i], field) || '') + '';\n            if (itemText && itemText.toLowerCase().startsWith(text)) {\n                result = i;\n                break;\n            }\n        }\n    }\n    return result;\n};\n/**\n * @hidden\n */\nvar getItemIndexByText = function (data, text, textField, matchCase) {\n    if (matchCase === void 0) { matchCase = false; }\n    var casing = function (value) { return matchCase ? value : value.toLowerCase(); };\n    return data.findIndex(function (item) {\n        return textField ? casing(getItemValue(item, textField)) === casing(text) :\n            casing(text) === casing(item.toString());\n    });\n};\n/**\n * @hidden\n */\nvar getItemValue = function (item, field) {\n    if (field && isPresent(item)) {\n        var path = field.split('.');\n        var data_1 = item;\n        path.forEach(function (p) {\n            data_1 = data_1 ? data_1[p] : undefined;\n        });\n        return data_1;\n    }\n    return item;\n};\n/**\n * @hidden\n */\nvar matchDataCollections = function (data1, data2, key) {\n    if (data1 === void 0) { data1 = []; }\n    if (data2 === void 0) { data2 = []; }\n    if (data1 === data2) {\n        return true;\n    }\n    if (data1.length !== data2.length) {\n        return false;\n    }\n    for (var i = 0; i < data1.length; i++) {\n        if (!areSame(data1[i], data2[i], key)) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * @hidden\n */\nvar removeDataItems = function (items, toRemove, key) {\n    toRemove.forEach(function (item) {\n        var itemIndex = items.findIndex(function (i) { return areSame(i, item, key); });\n        if (itemIndex !== -1) {\n            items.splice(itemIndex, 1);\n        }\n    });\n};\n/**\n * @hidden\n */\nvar areSame = function (item1, item2, key) {\n    return item1 === item2 ||\n        (isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key));\n};\n/**\n * @hidden\n */\nvar getFocusedItem = function (data, value, textField) {\n    if (value) {\n        var selectedIndex = getItemIndexByText(data, value, textField, true);\n        return selectedIndex !== -1 ? data[selectedIndex] : data[itemIndexStartsWith(data, value, textField)];\n    }\n    return data[0];\n};\n/**\n * @hidden\n */\nvar suggestValue = function (value, data, textField) {\n    if (data === void 0) { data = []; }\n    var suggested = '';\n    if (value) {\n        var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n        if (suggestedItem) {\n            var suggestedText = getItemValue(suggestedItem, textField);\n            if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n                suggested = suggestedText.substring(value.length);\n            }\n        }\n    }\n    return suggested;\n};\n/**\n * @hidden\n */\nvar preventDefaultNonInputs = function (event) {\n    if (event.target.nodeName !== 'INPUT') {\n        event.preventDefault();\n    }\n};\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue };\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\nvar preventDefault = function (e) { return e.preventDefault(); };\n/**\n * @hidden\n */\nvar ListDefaultItem = /** @class */ (function (_super) {\n    __extends(ListDefaultItem, _super);\n    function ListDefaultItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ListDefaultItem.prototype.render = function () {\n        var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;\n        return (React.createElement(\"div\", { onClick: this.props.onClick, onMouseDown: preventDefault, className: classNames('k-list-optionlabel', {\n                'k-state-selected': selected\n            }) }, getItemValue(defaultItem, textField) || ''));\n    };\n    return ListDefaultItem;\n}(React.Component));\nexport default ListDefaultItem;\n//# sourceMappingURL=ListDefaultItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n */\nvar ListItem = /** @class */ (function (_super) {\n    __extends(ListItem, _super);\n    function ListItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleClick = function (e) { return _this.props.onClick(_this.props.index, e); };\n        return _this;\n    }\n    ListItem.prototype.render = function () {\n        var selected = this.props.selected;\n        var renderer = this.props.render || this.props.renderer;\n        var item = (React.createElement(\"li\", { id: this.props.id, role: \"option\", \"aria-selected\": selected, className: classNames('k-item', {\n                'k-state-selected': selected,\n                'k-state-focused': this.props.focused\n            }), onClick: this.handleClick }, getItemValue(this.props.dataItem, this.props.textField).toString()));\n        return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n    };\n    return ListItem;\n}(React.Component));\nexport default ListItem;\n//# sourceMappingURL=ListItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport { areSame } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\nvar List = /** @class */ (function (_super) {\n    __extends(List, _super);\n    function List() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    List.prototype.renderItems = function () {\n        var _this = this;\n        var _a = this.props, textField = _a.textField, valueField = _a.valueField, optionsGuid = _a.optionsGuid, _b = _a.skip, skip = _b === void 0 ? 0 : _b, focusedIndex = _a.focusedIndex, _c = _a.highlightSelected, highlightSelected = _c === void 0 ? true : _c, value = _a.value, itemRender = _a.itemRender;\n        var isArray = Array.isArray(value);\n        return this.props.data.map(function (item, index) {\n            var realIndex = skip + index;\n            var selected = highlightSelected &&\n                ((!isArray && areSame(item, value, valueField)) ||\n                    (isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));\n            return (React.createElement(ListItem, { id: \"option-\" + optionsGuid + \"-\" + realIndex, dataItem: item, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, render: itemRender }));\n        });\n    };\n    List.prototype.renderNoValueElement = function (localizationService) {\n        var noDataRender = this.props.noDataRender;\n        var noDataElement = (React.createElement(\"div\", { className: 'k-nodata' },\n            React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata]))));\n        return noDataRender ?\n            noDataRender.call(undefined, noDataElement) : noDataElement;\n    };\n    List.prototype.render = function () {\n        var localizationService = provideLocalizationService(this);\n        var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef;\n        var items = this.renderItems();\n        return (items.length ? (React.createElement(\"div\", { className: wrapperCssClass, style: wrapperStyle, ref: function (element) { return element && element.setAttribute('unselectable', 'on'); } },\n            React.createElement(\"ul\", { id: id, role: \"listbox\", \"aria-hidden\": !show ? true : undefined, className: 'k-list k-reset', ref: listRef, style: listStyle }, items))) : this.renderNoValueElement(localizationService));\n    };\n    return List;\n}(React.Component));\nexport default List;\nregisterForLocalization(List);\n//# sourceMappingURL=List.js.map","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n    function VirtualScroll() {\n        var _this = this;\n        this.containerHeight = 0;\n        this.skip = 0;\n        this.total = 0;\n        this.enabled = false;\n        this.pageSize = 0;\n        this.itemHeight = 0;\n        this.prevScrollPos = 0;\n        this.listTranslate = 0;\n        this.scrollSyncing = false;\n        this.scrollerRef = function (element) {\n            var vs = _this;\n            vs.container = element;\n            if (element) {\n                element.setAttribute('unselectable', 'on');\n                setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n            }\n        };\n        this.calcScrollElementHeight = function () {\n            _this.scrollSyncing = true;\n            var heightChanged = false;\n            _this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;\n            _this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);\n            var newHeight = _this.containerHeight;\n            if (_this.scrollElement) {\n                heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n                if (heightChanged) {\n                    _this.scrollElement.style.height = newHeight + 'px';\n                }\n            }\n            _this.scrollSyncing = false;\n            return heightChanged;\n        };\n        this.scrollHandler = this.scrollHandler.bind(this);\n    }\n    Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n        get: function () {\n            return this.listTranslate;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    VirtualScroll.prototype.changePage = function (skip, e) {\n        var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n        if (newSkip !== this.skip) {\n            this.PageChange({ skip: newSkip, take: this.pageSize }, e);\n        }\n    };\n    VirtualScroll.prototype.translateTo = function (dY) {\n        this.listTranslate = dY;\n        if (this.list) {\n            this.list.style.transform = 'translateY(' + dY + 'px)';\n        }\n    };\n    VirtualScroll.prototype.reset = function () {\n        if (this.container) {\n            this.calcScrollElementHeight();\n            this.container.scrollTop = 0;\n            this.translateTo(0);\n        }\n    };\n    VirtualScroll.prototype.scrollToEnd = function () {\n        if (this.container && this.list) {\n            this.calcScrollElementHeight();\n            this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight;\n            this.translateTo(this.container.scrollHeight - this.list.offsetHeight);\n        }\n    };\n    VirtualScroll.prototype.localScrollUp = function (e) {\n        var height = this.itemHeight;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.listTranslate;\n        var items;\n        var additionalOnTop = scrollTop - targetTranslate;\n        if (additionalOnTop > height) {\n            return;\n        }\n        for (items = 0; items < this.skip; items++) {\n            if (targetTranslate + height + additionalOnTop <= scrollTop) {\n                break;\n            }\n            targetTranslate -= height;\n        }\n        targetTranslate = this.validateTranslate(targetTranslate);\n        if (this.skip - items <= 0 && targetTranslate >= scrollTop) {\n            this.translateTo(0);\n            this.changePage(0, e);\n            this.container.scrollTop = 0;\n            return;\n        }\n        if (targetTranslate !== this.listTranslate) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.skip - items, e);\n        }\n    };\n    VirtualScroll.prototype.localScrollDown = function (e) {\n        var height = this.itemHeight;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.listTranslate;\n        var itemsLenght = this.list.children.length;\n        var items;\n        for (items = 0; items < itemsLenght; items++) {\n            if (targetTranslate + height >= scrollTop) {\n                break;\n            }\n            targetTranslate += height;\n        }\n        targetTranslate = this.validateTranslate(targetTranslate);\n        if (items >= itemsLenght && this.skip + items >= this.total) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.total - 1, e);\n        }\n        else if (targetTranslate !== this.listTranslate) {\n            this.translateTo(targetTranslate);\n            this.changePage(this.skip + items, e);\n        }\n    };\n    VirtualScroll.prototype.scrollNonStrict = function (e) {\n        var floatItemIndex = this.total * this.prevScrollPos / (this.containerHeight);\n        var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);\n        var targetTranslate = this.containerHeight * floatItemIndex / this.total;\n        targetTranslate = this.validateTranslate(targetTranslate);\n        this.translateTo(targetTranslate);\n        this.changePage(itemIndex, e);\n    };\n    VirtualScroll.prototype.scrollHandler = function (e) {\n        var scrollTop = this.container ? this.container.scrollTop : 0;\n        var prev = this.prevScrollPos;\n        this.prevScrollPos = scrollTop;\n        if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n            return;\n        }\n        if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n            this.localScrollUp(e);\n        }\n        else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n            this.localScrollDown(e);\n        }\n        else {\n            this.scrollNonStrict(e);\n        }\n    };\n    VirtualScroll.prototype.validateTranslate = function (translate) {\n        translate = Math.max(0, translate);\n        translate = Math.min(this.containerHeight - this.list.offsetHeight, translate);\n        return translate;\n    };\n    return VirtualScroll;\n}());\nexport default VirtualScroll;\n//# sourceMappingURL=VirtualScroll.js.map","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function () {\n    function Navigation() {\n    }\n    Navigation.prototype.navigate = function (args) {\n        var keyCode = args.keyCode;\n        if (keyCode === Keys.up || keyCode === Keys.left) {\n            return this.next({ current: args.current, min: args.min, max: args.max, step: -1 });\n        }\n        else if (keyCode === Keys.down || keyCode === Keys.right) {\n            return this.next({ current: args.current, min: args.min, max: args.max, step: 1 });\n        }\n        else if (keyCode === Keys.home) {\n            return 0;\n        }\n        else if (keyCode === Keys.end) {\n            return args.max;\n        }\n    };\n    Navigation.prototype.next = function (args) {\n        if (!isPresent(args.current)) {\n            return args.min;\n        }\n        else {\n            return Math.min(args.max, Math.max(args.current + args.step, args.min));\n        }\n    };\n    return Navigation;\n}());\nexport { Navigation };\n//# sourceMappingURL=Navigation.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport VirtualScroll from './VirtualScroll';\nimport { Navigation } from './Navigation';\nimport { scrollToItem, areSame } from './utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropDownBase = /** @class */ (function () {\n    function DropDownBase(component) {\n        var _this = this;\n        this.vs = new VirtualScroll();\n        this.navigation = new Navigation();\n        this.handleItemClick = function (index, event) {\n            var state = _this.initState();\n            state.syntheticEvent = event;\n            _this.component.handleItemSelect(index, state);\n            _this.togglePopup(state);\n            _this.applyState(state);\n        };\n        this.handleFocus = function (event) {\n            if (!_this.component.state.focused) {\n                var state = _this.initState();\n                state.data.focused = true;\n                state.events.push({ type: 'onFocus' });\n                state.syntheticEvent = event;\n                _this.applyState(state);\n            }\n        };\n        this.filterChanged = function (text, state) {\n            var _a = _this.component.props, textField = _a.textField, filterable = _a.filterable;\n            if (filterable) {\n                state.events.push({\n                    type: 'onFilterChange',\n                    filter: {\n                        field: textField,\n                        operator: 'contains',\n                        ignoreCase: true,\n                        value: text\n                    }\n                });\n            }\n        };\n        this.togglePopup = function (state) {\n            var props = _this.component.props;\n            var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n            if (props.opened === undefined) {\n                state.data.opened = !opened;\n            }\n            if (opened) {\n                state.events.push({ type: 'onClose' });\n            }\n            else {\n                state.events.push({ type: 'onOpen' });\n                _this.calculatePopupWidth();\n            }\n        };\n        this.pageChange = function (page, syntheticEvent) {\n            var state = _this.initState();\n            state.syntheticEvent = syntheticEvent;\n            _this.triggerOnPageChange(state, page.skip, page.take);\n            _this.applyState(state);\n        };\n        this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n            var vs = _this.vs;\n            vs.enabled = false;\n            if (virtual.skip === 0) {\n                vs.reset();\n            }\n            else if (virtual.skip + virtual.pageSize === virtual.total) {\n                vs.scrollToEnd();\n            }\n            else {\n                var scrollTop = vs.translate;\n                if (scrollTop === 0) {\n                    vs.calcScrollElementHeight();\n                    scrollTop = (vs.itemHeight * virtual.skip);\n                    vs.translateTo(scrollTop - vs.itemHeight);\n                }\n                if (vs.container) {\n                    vs.container.scrollTop = scrollTop;\n                }\n                _this.scrollToItem(selectedItemIndex, true);\n            }\n            setTimeout(function () { return vs.enabled = true; }, 10);\n        };\n        // Common rendering\n        this.renderScrollWrapper = function (children) {\n            var popupSettings = _this.getPopupSettings();\n            var vs = _this.vs;\n            return vs.enabled ? (React.createElement(\"div\", { onScroll: vs.scrollHandler, ref: vs.scrollerRef, style: {\n                    height: popupSettings.height,\n                    overflowY: 'scroll'\n                } }, children)) :\n                (children);\n        };\n        this.renderScrollElement = function () {\n            var vs = _this.vs;\n            return vs.enabled && (React.createElement(\"div\", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));\n        };\n        this.listBoxId = guid();\n        this.guid = guid();\n        this.component = component;\n        this.vs.PageChange = this.pageChange;\n    }\n    DropDownBase.prototype.didMount = function () {\n        var props = this.component.props;\n        var popupSettings = props.popupSettings || {};\n        var style = props.style || {};\n        var popupWidth = popupSettings.width;\n        var shouldUpdate = props.opened === true;\n        if (popupWidth === undefined) {\n            this.calculatePopupWidth();\n        }\n        if (props.dir === undefined && style.direction === undefined) {\n            this.calculateDir();\n            shouldUpdate = true;\n        }\n        if (shouldUpdate) {\n            this.component.forceUpdate();\n        }\n    };\n    DropDownBase.prototype.calculateDir = function () {\n        if (this.component.element) {\n            this.dirCalculated = window.getComputedStyle(this.component.element).direction || undefined;\n        }\n    };\n    DropDownBase.prototype.calculatePopupWidth = function () {\n        if (this.wrapper) {\n            this.popupWidth = this.wrapper.offsetWidth + 'px';\n        }\n    };\n    DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled) {\n        var list = this.list || this.vs.list;\n        var item = list ? list.children[0] : undefined;\n        if (item && itemIndex >= 0) {\n            var vs = this.vs;\n            var scrollElement = (vs.container || list.parentNode);\n            var virtualScroll = vsEnabled !== undefined ? vsEnabled : vs.enabled;\n            scrollToItem(scrollElement, item.offsetHeight, itemIndex, vs.translate, virtualScroll);\n        }\n    };\n    DropDownBase.prototype.initState = function () {\n        var state = {\n            data: {},\n            events: [],\n            syntheticEvent: undefined\n        };\n        return state;\n    };\n    DropDownBase.prototype.applyState = function (state) {\n        var _this = this;\n        if (Object.keys(state.data).length > 0) {\n            this.component.setState(state.data);\n        }\n        var eventArgs = {\n            syntheticEvent: state.syntheticEvent,\n            nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n            target: this.component,\n            value: this.component.value\n        };\n        state.events.forEach(function (eventData) {\n            var type = eventData.type;\n            delete eventData.type;\n            var handler = _this.component.props[type];\n            if (handler) {\n                handler.call(undefined, __assign({}, eventArgs, eventData));\n            }\n        });\n    };\n    DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n        var virtual = this.component.props.virtual;\n        if (virtual) {\n            var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n            if (newSkip !== virtual.skip) {\n                state.events.push({\n                    type: 'onPageChange',\n                    page: { skip: newSkip, take: take }\n                });\n            }\n        }\n    };\n    DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n        var props = this.component.props;\n        var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, virtual = props.virtual;\n        var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n        if (item && virtual && this.vs.enabled) {\n            if (virtual.skip > 0 && areSame(item, data[0], dataItemKey)) {\n                this.triggerOnPageChange(state, virtual.skip - 1, virtual.pageSize);\n            }\n            else if (!opened && virtual.skip + virtual.pageSize < virtual.total &&\n                areSame(item, data[data.length - 1], dataItemKey)) {\n                this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n            }\n        }\n    };\n    DropDownBase.prototype.getPopupSettings = function () {\n        return Object\n            .assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n    };\n    DropDownBase.basicPropTypes = {\n        opened: PropTypes.bool,\n        disabled: PropTypes.bool,\n        dir: PropTypes.string,\n        tabIndex: PropTypes.number,\n        accessKey: PropTypes.string,\n        data: PropTypes.array,\n        textField: PropTypes.string,\n        className: PropTypes.string,\n        label: PropTypes.string,\n        loading: PropTypes.bool,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n                    openDuration: PropTypes.number,\n                    closeDuration: PropTypes.number\n                })]),\n            width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n            height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n        }),\n        onOpen: PropTypes.func,\n        onClose: PropTypes.func,\n        onFocus: PropTypes.func,\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        itemRender: PropTypes.func,\n        listNoDataRender: PropTypes.func,\n        focusedItemIndex: PropTypes.func,\n        header: PropTypes.node,\n        footer: PropTypes.node\n    };\n    DropDownBase.propTypes = __assign({}, DropDownBase.basicPropTypes, { value: PropTypes.any, defaultValue: PropTypes.any, filterable: PropTypes.bool, filter: PropTypes.string, virtual: PropTypes.shape({\n            pageSize: PropTypes.number.isRequired,\n            skip: PropTypes.number.isRequired,\n            total: PropTypes.number.isRequired\n        }), onFilterChange: PropTypes.func, onPageChange: PropTypes.func });\n    DropDownBase.defaultProps = {\n        popupSettings: {\n            animate: true,\n            height: '200px'\n        },\n        required: false,\n        validityStyles: true\n    };\n    return DropDownBase;\n}());\nexport default DropDownBase;\n//# sourceMappingURL=DropDownBase.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListContainer from '../common/ListContainer';\nimport ListFilter from '../common/ListFilter';\nimport ListDefaultItem from '../common/ListDefaultItem';\nimport List from '../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, preventDefaultNonInputs, getFocusedItem } from '../common/utils';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    dropdownlist = null;\n *    render() {\n *       return (\n *          <div>\n *              <DropDownList\n *                  data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n *                  ref={component => this.dropdownlist = component}\n *              />\n *              <button onClick={() => alert(this.dropdownlist.value)}>alert value</button>\n *          </div>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n    __extends(DropDownList, _super);\n    function DropDownList() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {};\n        _this.base = new DropDownBase(_this);\n        _this.searchState = { word: '', last: '' };\n        _this._skipFocusEvent = false;\n        _this._filterInput = null;\n        _this._navigated = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this.base.wrapper) {\n                _this.base.wrapper.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleItemSelect = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;\n            var skip = virtual ? virtual.skip : 0;\n            var item = (index === -1 && defaultItem !== undefined) ?\n                defaultItem : data[index - skip];\n            var newSelected = !areSame(item, _this.value, dataItemKey);\n            _this.triggerOnChange(item, state);\n            if (newSelected) {\n                _this.base.triggerPageChangeCornerItems(item, state);\n            }\n        };\n        _this.renderDropDownWrapper = function () {\n            var _a = _this.props, dataItemKey = _a.dataItemKey, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, disabled = _a.disabled, tabIndex = _a.tabIndex, loading = _a.loading, iconClassName = _a.iconClassName, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, valueRender = _a.valueRender;\n            var focused = _this.state.focused;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var value = _this.value;\n            var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n            var text = getItemValue(value, textField);\n            var valueDefaultRendering = (React.createElement(\"span\", { className: \"k-input\" }, text));\n            var valueElement = valueRender !== undefined ?\n                valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n            return (React.createElement(\"span\", { ref: function (el) { return _this.base.wrapper = el; }, role: 'listbox', tabIndex: disabled ? undefined : tabIndex, accessKey: _this.props.accessKey, className: classNames('k-dropdown-wrap', {\n                    'k-state-default': !disabled,\n                    'k-state-focused': focused,\n                    'k-state-disabled': disabled\n                }), style: _this.props.style, onKeyDown: _this.handleKeyDown, onKeyPress: _this.handleKeyPress, onClick: disabled ? undefined : _this.handleWrapperClick, \"aria-disabled\": disabled || undefined, \"aria-haspopup\": true, \"aria-expanded\": opened || false, \"aria-owns\": _this.base.listBoxId, \"aria-activedescendant\": 'option-' + _this.base.guid + '-' + (selectedIndex + virtual.skip), \"aria-label\": _this.props.label, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, id: _this.props.id },\n                valueElement,\n                React.createElement(\"span\", { className: \"k-select\" },\n                    React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n                            'k-i-arrow-s': !loading && !iconClassName,\n                            'k-i-loading': loading && !iconClassName\n                        }) })),\n                _this.dummySelect(value)));\n        };\n        _this.dummySelect = function (value) {\n            /* Dummy component to support forms */\n            return (React.createElement(\"select\", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, \"aria-hidden\": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n                React.createElement(\"option\", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));\n        };\n        _this.renderListContainer = function () {\n            var _a = _this.props, header = _a.header, footer = _a.footer, dir = _a.dir;\n            var base = _this.base;\n            var popupSettings = base.getPopupSettings();\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var virtual = _this.props.virtual !== undefined;\n            var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n            var listContainerProps = {\n                onMouseDown: preventDefaultNonInputs,\n                dir: dir !== undefined ? dir : base.dirCalculated,\n                width: popupWidth,\n                popupSettings: {\n                    className: classNames('k-list-container k-reset', popupSettings.className),\n                    animate: popupSettings.animate,\n                    anchor: _this.element || undefined,\n                    show: opened,\n                    open: _this.onPopupOpened,\n                    close: _this.onPopupClosed,\n                    appendTo: popupSettings.appendTo\n                }\n            };\n            return (React.createElement(ListContainer, __assign({}, listContainerProps),\n                _this.renderListFilter(),\n                virtual && _this.renderDefaultItem(),\n                virtual && header,\n                _this.base.renderScrollWrapper(React.createElement(React.Fragment, null,\n                    !virtual && _this.renderDefaultItem(),\n                    !virtual && header,\n                    _this.renderList(),\n                    !virtual && footer,\n                    _this.base.renderScrollElement())),\n                virtual && footer));\n        };\n        _this.renderList = function () {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n            var vs = _this.base.vs;\n            var skip = virtual.skip;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var popupSettings = _this.base.getPopupSettings();\n            var translate = \"translateY(\" + vs.translate + \"px)\";\n            return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.focusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n                    { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n                    { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n        };\n        _this.renderListFilter = function () {\n            var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.input; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown }));\n        };\n        _this.renderDefaultItem = function () {\n            var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;\n            return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: \"defaultitemkey\", onClick: _this.handleDefaultItemClick }));\n        };\n        _this.search = function (event) {\n            clearTimeout(_this._typingTimeout);\n            if (!_this.props.filterable) {\n                _this._typingTimeout = setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);\n                _this.selectNext(event);\n            }\n        };\n        _this.selectNext = function (event) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n            var mappedData = data.map(function (item, idx) {\n                return { item: item, itemIndex: idx };\n            });\n            var word = _this.searchState.word;\n            var last = _this.searchState.last;\n            var isInLoop = sameCharsOnly(word, last);\n            var dataLength = mappedData.length;\n            var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));\n            var defaultItem;\n            if (_this.props.defaultItem) {\n                defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };\n                dataLength += 1;\n                startIndex += 1;\n            }\n            startIndex += isInLoop ? 1 : 0;\n            mappedData = shuffleData(mappedData, startIndex, defaultItem);\n            var text, loopMatch, nextMatch, index = 0;\n            var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;\n            for (; index < dataLength; index++) {\n                text = getItemValue(mappedData[index].item, textField);\n                loopMatch = isInLoop && matchText(text, last, ignoreCase);\n                nextMatch = matchText(text, word, ignoreCase);\n                if (loopMatch || nextMatch) {\n                    index = mappedData[index].itemIndex;\n                    break;\n                }\n            }\n            if (index !== dataLength) {\n                var state = _this.base.initState();\n                state.syntheticEvent = event;\n                _this.handleItemSelect(index, state);\n                _this.applyState(state);\n                _this._valueDuringOnChange = undefined;\n            }\n        };\n        _this.handleKeyDown = function (event) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var keyCode = event.keyCode;\n            var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;\n            var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;\n            var shouldOpen = !opened &&\n                ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);\n            var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);\n            var leftOrRightKeys = keyCode === Keys.left || keyCode === Keys.right;\n            var shouldNavigate = upOrDownKeys || (!filterable && (leftOrRightKeys || homeOrEndKeys));\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (disabled) {\n                return;\n            }\n            else if (homeOrEndKeys && _this.base.vs.enabled) {\n                if (keyCode === Keys.home) {\n                    if (virtual.skip !== 0) {\n                        _this.base.triggerOnPageChange(state, 0, virtual.pageSize);\n                        _this._navigated = true;\n                    }\n                    else {\n                        _this.triggerOnChange(data[0], state);\n                    }\n                }\n                else {\n                    if (virtual.skip < virtual.total - virtual.pageSize) {\n                        _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n                        _this._navigated = true;\n                    }\n                    else {\n                        _this.triggerOnChange(data[data.length - 1], state);\n                    }\n                }\n            }\n            else if (opened && keyCode === Keys.enter) {\n                var focusedIndex = _this.focusedIndex();\n                if (focusedIndex !== undefined) {\n                    _this.handleItemSelect(focusedIndex, state);\n                }\n                _this.base.togglePopup(state);\n                event.preventDefault();\n            }\n            else if (shouldOpen || shouldClose) {\n                _this.base.togglePopup(state);\n                event.preventDefault();\n            }\n            else if (shouldNavigate) {\n                _this.onNavigate(state, keyCode);\n                event.preventDefault();\n            }\n            _this.applyState(state);\n        };\n        _this.handleItemClick = function (index, event) {\n            _this.base.handleItemClick(index, event);\n            _this._valueDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            if (_this._skipFocusEvent) {\n                return;\n            }\n            _this.base.handleFocus(event);\n        };\n        _this.handleBlur = function (event) {\n            if (_this._skipFocusEvent || !_this.state.focused) {\n                return;\n            }\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            state.data.focused = false;\n            state.events.push({ type: 'onBlur' });\n            if (opened) {\n                _this.base.togglePopup(state);\n            }\n            _this.applyState(state);\n        };\n        _this.handleDefaultItemClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            _this.base.togglePopup(state);\n            _this.triggerOnChange(_this.props.defaultItem, state);\n            _this.applyState(state);\n        };\n        _this.handleWrapperClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (!_this.state.focused) {\n                state.data.focused = true;\n            }\n            _this.base.togglePopup(state);\n            _this.applyState(state);\n        };\n        _this.handleKeyPress = function (event) {\n            if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n                return;\n            }\n            var character = String.fromCharCode(event.charCode || event.keyCode);\n            if (_this.props.ignoreCase) {\n                character = character.toLowerCase();\n            }\n            if (character === ' ') {\n                event.preventDefault();\n            }\n            _this.searchState = {\n                word: _this.searchState.word + character,\n                last: _this.searchState.last + character\n            };\n            _this.search(event);\n        };\n        _this.handleListFilterChange = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (_this.props.filter === undefined) {\n                state.data.text = event.target.value;\n            }\n            _this.base.filterChanged(event.target.value, state);\n            _this.applyState(state);\n        };\n        _this.onPopupOpened = function () {\n            if (_this._filterInput) {\n                _this.focusElement(_this._filterInput);\n            }\n        };\n        _this.onPopupClosed = function () {\n            if (_this.state.focused) {\n                setTimeout(function () {\n                    if (_this.state.focused && _this.base.wrapper) {\n                        _this.focusElement(_this.base.wrapper);\n                    }\n                });\n            }\n        };\n        _this.setValidity = function () {\n            if (_this._select && _this._select.setCustomValidity) {\n                _this._select.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || VALIDATION_MESSAGE);\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(DropDownList.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"actionElement\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.base.wrapper;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"value\", {\n        /**\n         * The value of the DropDownList.\n         */\n        get: function () {\n            var value;\n            if (this._valueDuringOnChange !== undefined) {\n                value = this._valueDuringOnChange;\n            }\n            else if (this.props.value !== undefined) {\n                value = this.props.value;\n            }\n            else if (this.state.value !== undefined) {\n                value = this.state.value;\n            }\n            else if (this.props.defaultValue !== undefined) {\n                value = this.props.defaultValue;\n            }\n            if (!isPresent(value) && this.props.defaultItem !== undefined) {\n                value = this.props.defaultItem;\n            }\n            return value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"index\", {\n        /**\n         * The index of the selected item.\n         */\n        get: function () {\n            var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n            var value = this.value;\n            // TO DO: deprecate it!\n            return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DropDownList.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DropDownList is set.\n         */\n        get: function () {\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required\n                || (this.value !== null && this.value !== '' && this.value !== undefined));\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"validityStyles\", {\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DropDownList.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DropDownList.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DropDownList.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DropDownList.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n        var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n        var opening = !prevOpened && opened;\n        var closing = prevOpened && !opened;\n        if (!this.base.getPopupSettings().animate) {\n            if (opening) {\n                this.onPopupOpened();\n            }\n            else if (closing) {\n                // this.onPopupClosed();\n            }\n        }\n        if (virtual && virtual.total !== prevTotal) {\n            this.base.vs.calcScrollElementHeight();\n            this.base.vs.reset();\n        }\n        else {\n            var selectedItem_1 = this.value;\n            var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n            var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });\n            var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n            if (opening && virtual) {\n                this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n            }\n            else if (opening && !virtual) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n            else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n            else if (opened && prevOpened && this._navigated) {\n                if (this._navigated && virtual && virtual.skip === 0) {\n                    this.base.vs.reset();\n                }\n                else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n                    this.base.vs.scrollToEnd();\n                }\n            }\n        }\n        this._navigated = false;\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DropDownList.prototype.componentDidMount = function () {\n        this.base.didMount();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DropDownList.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, virtual = _a.virtual;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var text = getItemValue(this.value, this.props.textField);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var base = this.base;\n        var vs = base.vs;\n        vs.enabled = virtual !== undefined;\n        if (virtual !== undefined) {\n            base.vs.skip = virtual.skip;\n            base.vs.total = virtual.total;\n            base.vs.pageSize = virtual.pageSize;\n        }\n        var dropdownlist = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-dropdown k-header', {\n                'k-state-invalid': !isValid\n            }, className), style: !label\n                ? style\n                : __assign({}, style, { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            this.renderDropDownWrapper(),\n            this.renderListContainer()));\n        return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;\n    };\n    /**\n     * @hidden\n     */\n    DropDownList.prototype.onNavigate = function (state, keyCode) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n        var vs = this.base.vs;\n        var value = this.value;\n        var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        var newIndex = this.base.navigation.navigate({\n            current: virtual.skip + index,\n            max: (vs.enabled ? virtual.total : data.length) - 1,\n            min: defaultItem !== undefined ? -1 : 0,\n            keyCode: keyCode\n        });\n        if (newIndex !== undefined) {\n            this.handleItemSelect(newIndex, state);\n        }\n        this.applyState(state);\n    };\n    DropDownList.prototype.focusedIndex = function () {\n        var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, dataItemKey = _a.dataItemKey, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n        var value = this.value;\n        var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        var hasSelected = !(selectedIndex < 0 && !this.props.defaultItem);\n        if (!hasSelected && filterText && virtual.skip === 0) {\n            return focusedItemIndex ? focusedItemIndex(data, filterText, textField) :\n                data.indexOf(getFocusedItem(data, filterText, textField));\n        }\n        else {\n            return !hasSelected && virtual.skip === 0 ? 0 : undefined;\n        }\n    };\n    DropDownList.prototype.focusElement = function (element) {\n        var _this = this;\n        this._skipFocusEvent = true;\n        element.focus();\n        setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n    };\n    DropDownList.prototype.triggerOnChange = function (item, state) {\n        if (areSame(this.value, item, this.props.dataItemKey)) {\n            return;\n        }\n        if (this.props.value === undefined) {\n            state.data.value = item;\n        }\n        this._valueDuringOnChange = item;\n        state.events.push({ type: 'onChange' });\n    };\n    DropDownList.prototype.applyState = function (state) {\n        this.base.applyState(state);\n        this._valueDuringOnChange = undefined;\n    };\n    /**\n     * @hidden\n     */\n    DropDownList.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string }, DropDownBase.propTypes);\n    /**\n     * @hidden\n     */\n    DropDownList.defaultProps = __assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps, { required: false });\n    return DropDownList;\n}(React.Component));\nexport default DropDownList;\n//# sourceMappingURL=DropDownList.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, clear } from '../messages';\n/**\n * @hidden\n */\nvar ClearButton = /** @class */ (function (_super) {\n    __extends(ClearButton, _super);\n    function ClearButton() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onMouseDown = function (e) { return e.preventDefault(); };\n        return _this;\n    }\n    ClearButton.prototype.render = function () {\n        var title = provideLocalizationService(this).toLanguageString(clear, messages[clear]);\n        return (React.createElement(\"span\", { className: \"k-icon k-clear-value k-i-close\", role: \"button\", onClick: this.props.onClick, onMouseDown: this.onMouseDown, tabIndex: -1, title: title, key: \"clearbutton\" }));\n    };\n    return ClearButton;\n}(React.Component));\nexport default ClearButton;\nregisterForLocalization(ClearButton);\n//# sourceMappingURL=ClearButton.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport ClearButton from './ClearButton';\n/**\n * @hidden\n */\nvar SearchBar = /** @class */ (function (_super) {\n    __extends(SearchBar, _super);\n    function SearchBar() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(SearchBar.prototype, \"input\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._input;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SearchBar.prototype.componentDidUpdate = function (prevProps) {\n        var prevValue = prevProps.value;\n        var prevSuggestedText = prevProps.suggestedText;\n        var _a = this.props, value = _a.value, suggestedText = _a.suggestedText, focused = _a.focused;\n        var input = this.input;\n        var valueChanged = prevValue !== value || suggestedText !== prevSuggestedText;\n        var deleting = valueChanged && prevValue.startsWith(value) &&\n            !(prevSuggestedText && suggestedText && prevSuggestedText.endsWith(suggestedText));\n        if (focused && input && document.activeElement !== input) {\n            input.focus();\n        }\n        if (suggestedText && valueChanged && !deleting && input) {\n            input.setSelectionRange(value.length - suggestedText.length, value.length);\n        }\n    };\n    SearchBar.prototype.render = function () {\n        var _this = this;\n        return [(React.createElement(\"span\", { className: \"k-searchbar\", key: \"searchbar\" },\n                React.createElement(\"input\", { autoComplete: \"off\", id: this.props.id, type: \"text\", size: this.props.size, placeholder: this.props.placeholder, className: \"k-input\", tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, role: \"listbox\", name: this.props.name, value: this.props.value, onChange: this.props.onChange, ref: function (input) { return _this._input = input; }, onKeyDown: this.props.onKeyDown, onFocus: this.props.onFocus, onBlur: this.props.onBlur, \"aria-disabled\": this.props.disabled || undefined, disabled: this.props.disabled || undefined, readOnly: this.props.readOnly || undefined, \"aria-haspopup\": \"listbox\", \"aria-expanded\": this.props.expanded || false, \"aria-owns\": this.props.owns, \"aria-activedescendant\": this.props.activedescendant, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-labelledby\": this.props.ariaLabelledBy }))),\n            this.props.clearButton && React.createElement(ClearButton, { onClick: this.props.clearButtonClick, key: \"clearbutton\" })\n        ];\n    };\n    return SearchBar;\n}(React.Component));\nexport default SearchBar;\n//# sourceMappingURL=SearchBar.js.map","/**\n * @hidden\n */\nexport var ActiveDescendant;\n(function (ActiveDescendant) {\n    ActiveDescendant[ActiveDescendant[\"PopupList\"] = 0] = \"PopupList\";\n    ActiveDescendant[ActiveDescendant[\"TagsList\"] = 1] = \"TagsList\";\n})(ActiveDescendant || (ActiveDescendant = {}));\n//# sourceMappingURL=settings.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport DropDownBase from '../common/DropDownBase';\nimport { guid, classNames, Keys } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { areSame, itemIndexStartsWith, getItemIndexByText, getItemValue, isPresent, suggestValue } from '../common/utils';\nimport SearchBar from '../common/SearchBar';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact ComboBox component]({% slug overview_combobox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    combobox = null;\n *    render() {\n *       return (\n *          <div>\n *              <ComboBox\n *                  data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n *                  ref={component => this.combobox = component}\n *              />\n *              <button onClick={() => alert(this.combobox.value)}>alert value</button>\n *          </div>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n    __extends(ComboBox, _super);\n    function ComboBox() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {};\n        _this.base = new DropDownBase(_this);\n        _this._inputId = guid();\n        _this._suggested = '';\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._input) {\n                _this._input.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleItemSelect = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey;\n            var skip = virtual ? virtual.skip : 0;\n            var item = data[index - skip];\n            var newSelected = !areSame(item, _this.value, dataItemKey);\n            _this.triggerOnChange(item, state);\n            if (_this.state.text !== undefined) {\n                state.data.text = undefined;\n            }\n            if (newSelected) {\n                _this.base.triggerPageChangeCornerItems(item, state);\n            }\n        };\n        _this.toggleBtnClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            _this.base.togglePopup(state);\n            _this.applyState(state);\n        };\n        _this.handleItemClick = function (index, event) {\n            _this.base.handleItemClick(index, event);\n            _this._valueDuringOnChange = undefined;\n        };\n        _this.handleBlur = function (event) {\n            if (_this.state.focused) {\n                var state = _this.base.initState();\n                state.data.focused = false;\n                state.events.push({ type: 'onBlur' });\n                state.syntheticEvent = event;\n                _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n            }\n        };\n        _this.onInputKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (!event.altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n                event.preventDefault();\n                _this.onNavigate(state, keyCode);\n                _this.applyState(state);\n                return;\n            }\n            var togglePopup = function () {\n                event.preventDefault();\n                _this.base.togglePopup(state);\n                _this.applyState(state);\n            };\n            if (opened) {\n                if (event.altKey && keyCode === Keys.up) {\n                    togglePopup();\n                }\n                else if (keyCode === Keys.enter) {\n                    event.preventDefault();\n                    _this.applyValueOnEnter(event.currentTarget.value, state);\n                }\n                else if (keyCode === Keys.esc) {\n                    _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n                }\n            }\n            else if (event.altKey && keyCode === Keys.down) {\n                togglePopup();\n            }\n        };\n        _this.inputOnChange = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var input = event.currentTarget;\n            var value = input.value;\n            if (_this.props.suggest) {\n                var selectionAtEnd = input.selectionEnd === value.length;\n                var prevText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n                if (!isPresent(prevText)) {\n                    prevText = getItemValue(_this.value, _this.props.textField) || '';\n                }\n                var deletedSuggestion = prevText && prevText === value;\n                var deleting = prevText && prevText.length > value.length;\n                if (deletedSuggestion || deleting || !selectionAtEnd) {\n                    _this._suggested = '';\n                }\n                else {\n                    _this.suggestValue(value);\n                }\n            }\n            if (_this.props.filter === undefined) {\n                state.data.text = value;\n            }\n            if (_this.state.focusedItem !== undefined) {\n                state.data.focusedItem = undefined;\n            }\n            if (!opened) {\n                _this.base.togglePopup(state);\n            }\n            _this.base.filterChanged(value, state);\n            _this.applyState(state);\n        };\n        _this.clearButtonClick = function (event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            event.stopPropagation();\n            _this._suggested = '';\n            _this.base.filterChanged('', state);\n            if (_this.props.filter === undefined && _this.state.text !== undefined) {\n                state.data.text = undefined;\n            }\n            _this.triggerOnChange(null, state);\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            if (opened) {\n                _this.base.togglePopup(state);\n            }\n            _this.applyState(state);\n        };\n        _this.setValidity = function () {\n            if (_this._input && _this._input.setCustomValidity) {\n                _this._input.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || VALIDATION_MESSAGE);\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(ComboBox.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"value\", {\n        /**\n         * The value of the ComboBox.\n         */\n        get: function () {\n            if (this._valueDuringOnChange !== undefined) {\n                return this._valueDuringOnChange;\n            }\n            else if (this.props.value !== undefined) {\n                return this.props.value;\n            }\n            else if (this.state.value !== undefined) {\n                return this.state.value;\n            }\n            else if (this.props.defaultValue !== undefined) {\n                return this.props.defaultValue;\n            }\n            return undefined;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"index\", {\n        /**\n         * The index of the selected item.\n         */\n        get: function () {\n            var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n            var value = this.value;\n            // TO DO: deprecate it!\n            return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the ComboBox.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the component is set.\n         */\n        get: function () {\n            // remove the undefined check when this is fixed:\n            // https://github.com/telerik/kendo-react-private/issues/252\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required\n                || (this.value !== null && this.value !== '' && this.value !== undefined));\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"validityStyles\", {\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : ComboBox.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ComboBox.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : ComboBox.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    ComboBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n        var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n        var opening = !prevOpened && opened;\n        var selectedItem = this.value;\n        this._valueOnDidUpdate = selectedItem;\n        if (virtual && virtual.total !== prevTotal) {\n            this.base.vs.calcScrollElementHeight();\n            this.base.vs.reset();\n        }\n        else {\n            var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n            var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem, dataItemKey); });\n            var selectedItemChanged = !areSame(prevSelectedItem, selectedItem, dataItemKey);\n            if (opening && virtual) {\n                this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n            }\n            else if (opening && !virtual) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n            else if (opened && prevOpened && selectedItem && selectedItemChanged) {\n                this.base.scrollToItem(selectedItemIndex);\n            }\n        }\n        if (opening && this._input) {\n            this._input.focus();\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    ComboBox.prototype.componentDidMount = function () {\n        this.base.didMount();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    ComboBox.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, dir = _a.dir, disabled = _a.disabled, _b = _a.clearButton, clearButton = _b === void 0 ? ComboBox.defaultProps.clearButton : _b, label = _a.label, textField = _a.textField, className = _a.className, style = _a.style, loading = _a.loading, iconClassName = _a.iconClassName, virtual = _a.virtual;\n        var focused = this.state.focused;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n        var selectedItemText = getItemValue(this.value, textField);\n        var inputText = isPresent(text) ? text : selectedItemText;\n        var renderClearButton = clearButton && (!!(inputText) || isPresent(this.value));\n        var base = this.base;\n        var vs = base.vs;\n        var id = this.props.id || this._inputId;\n        vs.enabled = virtual !== undefined;\n        if (virtual !== undefined) {\n            vs.skip = virtual.skip;\n            vs.total = virtual.total;\n            vs.pageSize = virtual.pageSize;\n        }\n        var combobox = (React.createElement(\"span\", { className: classNames('k-widget k-combobox k-header', {\n                'k-combobox-clearable': clearButton,\n                'k-state-invalid': !isValid\n            }, className), ref: function (element) { return _this._element = element; }, style: !label\n                ? style\n                : __assign({}, style, { width: undefined }), dir: dir },\n            React.createElement(\"span\", { ref: function (wrapper) { return base.wrapper = wrapper; }, className: classNames('k-dropdown-wrap', {\n                    'k-state-default': !disabled,\n                    'k-state-disabled': disabled,\n                    'k-state-focused': focused && !disabled\n                }) },\n                this.renderSearchBar(renderClearButton, inputText || '', id),\n                React.createElement(\"span\", { className: \"k-select\", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } },\n                    React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n                            'k-i-arrow-s': !loading && !iconClassName,\n                            'k-i-loading': loading && !iconClassName\n                        }) }))),\n            this.renderListContainer()));\n        return label\n            ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: inputText, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: combobox }))\n            : combobox;\n    };\n    /**\n     * @hidden\n     */\n    ComboBox.prototype.onNavigate = function (state, keyCode) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n        var text = this.props.filter ? this.props.filter : this.state.text;\n        var focusedIndex = this.getFocusedIndex();\n        var vs = this.base.vs;\n        var value = this.value;\n        this._suggested = '';\n        if (focusedIndex !== -1 && !isPresent(value)) {\n            this.handleItemSelect(focusedIndex, state);\n        }\n        else if (text === '') {\n            this.handleItemSelect(0, state);\n        }\n        else {\n            var currentIndex = virtual.skip + focusedIndex;\n            var newIndex = this.base.navigation.navigate({\n                keyCode: keyCode,\n                current: currentIndex,\n                max: (vs.enabled ? vs.total : data.length) - 1,\n                min: 0\n            });\n            if (newIndex !== undefined) {\n                this.handleItemSelect(newIndex, state);\n            }\n        }\n    };\n    ComboBox.prototype.applyValueOnEnter = function (value, state) {\n        var _a;\n        var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var currentValueText = getItemValue(this.value, textField);\n        var valueIndex = currentValueText === value ?\n            this.index : getItemIndexByText(data, value, textField);\n        var itemSelected = valueIndex !== -1;\n        var newSelected = undefined;\n        this._suggested = '';\n        if (itemSelected) { // typed text match item from list\n            newSelected = data[valueIndex];\n        }\n        else {\n            if (allowCustom) { // any custom text not in list\n                newSelected = textField !== undefined ? (_a = {}, _a[textField] = value, _a) : value;\n            }\n            else {\n                return this.selectFocusedItem(value, state);\n            }\n        }\n        this.triggerOnChange(newSelected, state);\n        if (opened) {\n            this.base.togglePopup(state);\n        }\n        if (this.props.filter === undefined && this.state.text !== undefined) {\n            state.data.text = undefined;\n        }\n        this.applyState(state);\n    };\n    ComboBox.prototype.applyValueOnRejectSuggestions = function (text, state) {\n        var _a;\n        var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var valueItemText = getItemValue(this.value, textField);\n        this._suggested = '';\n        if (text === valueItemText || (text === '' && !isPresent(valueItemText))) {\n            if (opened) {\n                this.base.togglePopup(state);\n            }\n            return this.applyState(state);\n        }\n        var valueIndex = getItemIndexByText(data, text, textField, true);\n        var itemSelected = valueIndex !== -1;\n        var newSelected = null;\n        if (itemSelected) {\n            newSelected = data[valueIndex];\n        }\n        else if (allowCustom) {\n            newSelected = text ? (textField ? (_a = {}, _a[textField] = text, _a) : text) : null;\n        }\n        this.triggerOnChange(newSelected, state);\n        if (this.state.text !== undefined) {\n            state.data.text = undefined;\n            this.base.filterChanged('', state);\n        }\n        if (opened) {\n            this.base.togglePopup(state);\n        }\n        this.applyState(state);\n    };\n    ComboBox.prototype.selectFocusedItem = function (text, state) {\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d;\n        var skip = virtual.skip;\n        var focusedIndex = (text === '' && skip === 0) ? 0 :\n            focusedItemIndex(data, text, textField);\n        if (focusedIndex !== -1) {\n            this.handleItemSelect(focusedIndex + skip, state);\n        }\n        else {\n            this.triggerOnChange(null, state);\n            if (this.state.text !== undefined) {\n                state.data.text = undefined;\n            }\n        }\n        if (opened) {\n            this.base.togglePopup(state);\n        }\n        return this.applyState(state);\n    };\n    ComboBox.prototype.renderListContainer = function () {\n        var base = this.base;\n        var _a = this.props, dir = _a.dir, header = _a.header, footer = _a.footer;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var popupSettings = base.getPopupSettings();\n        var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n        return (React.createElement(ListContainer, { onMouseDown: function (e) { return e.preventDefault(); }, width: popupWidth, popupSettings: {\n                animate: popupSettings.animate,\n                anchor: this.element || undefined,\n                show: opened,\n                className: classNames('k-list-container k-reset', popupSettings.className),\n                appendTo: popupSettings.appendTo\n            }, dir: dir !== undefined ? dir : this.base.dirCalculated },\n            header,\n            base.renderScrollWrapper([\n                this.renderList(),\n                base.renderScrollElement()\n            ]),\n            footer));\n    };\n    ComboBox.prototype.renderList = function () {\n        var _this = this;\n        var base = this.base;\n        var _a = this.props, textField = _a.textField, dataItemKey = _a.dataItemKey, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n        var popupSettings = base.getPopupSettings();\n        var vs = base.vs;\n        var skip = virtual.skip;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var translate = \"translateY(\" + vs.translate + \"px)\";\n        var focusedIndex = opened ? this.getFocusedIndex() : undefined;\n        var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n        var selectedItemText = getItemValue(this.value, textField);\n        var value = isPresent(text) && text !== selectedItemText ? null : this.value;\n        return (React.createElement(List, { id: base.listBoxId, show: opened, data: data, focusedIndex: focusedIndex, value: value, textField: textField, valueField: dataItemKey, optionsGuid: base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n                { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n                { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n    };\n    ComboBox.prototype.renderSearchBar = function (clearButton, text, id) {\n        var _this = this;\n        var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var value = this.value;\n        var selectedIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, value, dataItemKey); }));\n        if (this._suggested && !areSame(this._valueOnDidUpdate, value, dataItemKey)) {\n            this._suggested = '';\n        }\n        return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex || undefined, accessKey: this.props.accessKey, value: text + this._suggested, suggestedText: this._suggested, ref: function (el) { return _this._input = el && el.input; }, onKeyDown: this.onInputKeyDown, onChange: this.inputOnChange, onFocus: this.base.handleFocus, onBlur: this.handleBlur, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: this.base.guid + '-' + (selectedIndex + virtual.skip), clearButton: clearButton, clearButtonClick: this.clearButtonClick, ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy }));\n    };\n    ComboBox.prototype.triggerOnChange = function (item, state) {\n        var value = this.value;\n        if ((!isPresent(value) && !isPresent(item)) || areSame(value, item, this.props.dataItemKey)) {\n            return;\n        }\n        if (this.props.value === undefined) {\n            state.data.value = item;\n        }\n        this._valueDuringOnChange = item;\n        state.events.push({ type: 'onChange' });\n    };\n    ComboBox.prototype.getFocusedIndex = function () {\n        var value = this.value;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d;\n        var text = this.props.filter ? this.props.filter : this.state.text;\n        if (isPresent(value) && text === undefined) {\n            return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n        }\n        else if (text) {\n            return focusedItemIndex(data, text, textField);\n        }\n        else {\n            return virtual.skip === 0 ? 0 : -1;\n        }\n    };\n    ComboBox.prototype.suggestValue = function (value) {\n        var _a = this.props, data = _a.data, textField = _a.textField;\n        this._suggested = suggestValue(value, data, textField);\n    };\n    ComboBox.prototype.applyState = function (state) {\n        this.base.applyState(state);\n        this._valueDuringOnChange = undefined;\n    };\n    /**\n     * @hidden\n     */\n    ComboBox.propTypes = __assign({}, DropDownBase.propTypes, { dataItemKey: PropTypes.string, suggest: PropTypes.bool, placeholder: PropTypes.string, allowCustom: PropTypes.bool, clearButton: PropTypes.bool, iconClassName: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string });\n    /**\n     * @hidden\n     */\n    ComboBox.defaultProps = __assign({}, DropDownBase.defaultProps, { allowCustom: false, clearButton: true, required: false });\n    return ComboBox;\n}(React.Component));\nexport default ComboBox;\n//# sourceMappingURL=ComboBox.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SearchBar from './../common/SearchBar';\nimport ListContainer from './../common/ListContainer';\nimport List from './../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { itemIndexStartsWith, getItemValue, areSame, getFocusedItem } from '../common/utils';\nimport { guid, Keys, classNames } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact AutoComplete component]({% slug overview_autocomplete %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    autocomplete = null;\n *    render() {\n *       return (\n *          <div>\n *              <AutoComplete\n *                  data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n *                  ref={component => this.autocomplete = component}\n *              />\n *              <button onClick={() => alert(this.autocomplete.value)}>alert value</button>\n *          </div>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n    __extends(AutoComplete, _super);\n    function AutoComplete() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {};\n        _this.base = new DropDownBase(_this);\n        _this._inputId = guid();\n        _this._suggested = '';\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._input) {\n                _this._input.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleItemSelect = function (index, state) {\n            var _a = _this.props.data, data = _a === void 0 ? [] : _a;\n            var newText = getItemValue(data[index], _this.props.textField);\n            _this.triggerOnChange(newText, state);\n        };\n        /**\n         * @hidden\n         */\n        _this.itemFocus = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n            var focusedItem = data[index];\n            if (!areSame(_this.state.focusedItem, focusedItem, textField)) {\n                state.data.focusedItem = focusedItem;\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.togglePopup = function (state) {\n            _this.base.togglePopup(state);\n        };\n        _this.setValidity = function () {\n            if (_this._input && _this._input.setCustomValidity) {\n                _this._input.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || VALIDATION_MESSAGE);\n            }\n        };\n        _this.handleItemClick = function (index, event) {\n            _this.base.handleItemClick(index, event);\n            _this._valueDuringOnChange = undefined;\n        };\n        _this.onChangeHandler = function (event) {\n            var base = _this.base;\n            var state = base.initState();\n            var input = event.currentTarget;\n            var value = input.value;\n            var selectionAtEnd = input.selectionEnd === value.length;\n            state.syntheticEvent = event;\n            var prevSuggestion = _this._suggested;\n            var prevValue = _this.value;\n            var prevUserInput = prevValue &&\n                prevValue.substring(0, prevValue.length - prevSuggestion.length);\n            var deletedSuggestion = prevUserInput && prevUserInput === value;\n            var deleting = prevUserInput && prevUserInput.length > value.length;\n            var suggest = _this.props.suggest;\n            var opened = _this.props.opened !== undefined ?\n                _this.props.opened : _this.state.opened;\n            if (suggest !== undefined && suggest !== false) {\n                if (deletedSuggestion || deleting || !selectionAtEnd) {\n                    _this._suggested = '';\n                }\n                else {\n                    _this.suggestValue(value);\n                }\n                var newValue = value + _this._suggested;\n                var suggestion = { userInput: value, value: _this._suggested };\n                _this.triggerOnChange(newValue, state, { suggestion: suggestion });\n            }\n            else {\n                _this._suggested = '';\n                _this.triggerOnChange(value, state);\n            }\n            if ((!opened && value) || (opened && !value)) {\n                _this.togglePopup(state);\n            }\n            state.data.focusedItem = undefined;\n            _this.applyState(state);\n        };\n        _this.clearButtonClick = function (event) {\n            var base = _this.base;\n            var state = base.initState();\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            state.syntheticEvent = event;\n            var newValue = '';\n            _this._suggested = '';\n            _this.triggerOnChange(newValue, state);\n            if (_this.state.focusedItem !== undefined) {\n                state.data.focusedItem = undefined;\n            }\n            if (opened) {\n                _this.togglePopup(state);\n            }\n            _this.applyState(state);\n        };\n        _this.onInputKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            var preventDefault = function () {\n                if (opened) {\n                    event.preventDefault();\n                }\n            };\n            if (keyCode === Keys.enter || keyCode === Keys.esc) {\n                preventDefault();\n                _this.applyInputValue(event.currentTarget.value, state, event.keyCode);\n            }\n            else if (keyCode === Keys.up || keyCode === Keys.down) {\n                preventDefault();\n                _this.onNavigate(state, keyCode);\n            }\n        };\n        _this.handleBlur = function (event) {\n            if (_this.state.focused) {\n                var state = _this.base.initState();\n                state.data.focused = false;\n                state.events.push({ type: 'onBlur' });\n                state.syntheticEvent = event;\n                _this.applyInputValue(event.currentTarget.value, state);\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(AutoComplete.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(AutoComplete.prototype, \"value\", {\n        /**\n         * The value of the AutoComplete.\n         */\n        get: function () {\n            if (this._valueDuringOnChange !== undefined) {\n                return this._valueDuringOnChange;\n            }\n            else if (this.props.value !== undefined) {\n                return this.props.value;\n            }\n            else if (this.state.value !== undefined) {\n                return this.state.value;\n            }\n            else if (this.props.defaultValue !== undefined) {\n                return this.props.defaultValue;\n            }\n            return '';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(AutoComplete.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the AutoComplete.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(AutoComplete.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the AutoComplete is set.\n         */\n        get: function () {\n            // The AutoComplete component is in a invalid state\n            // only if it's required and the value is null!\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== '');\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(AutoComplete.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : AutoComplete.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(AutoComplete.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : AutoComplete.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    AutoComplete.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a = this.props.data, data = _a === void 0 ? [] : _a;\n        var _b = prevProps.data, prevData = _b === void 0 ? [] : _b;\n        var focusedIndex = this.focusedIndex();\n        var focusedItem = data[focusedIndex];\n        var dataChanged = prevData !== data;\n        var focusedItemChanged = focusedItem !== undefined && prevState.focusedItem !== focusedItem;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n        var opening = !prevOpened && opened;\n        if ((opened && (focusedItemChanged || dataChanged)) || opening) {\n            this.base.scrollToItem(focusedIndex);\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    AutoComplete.prototype.componentDidMount = function () {\n        this.base.didMount();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    AutoComplete.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, dir = _a.dir, disabled = _a.disabled, label = _a.label, className = _a.className, style = _a.style, loading = _a.loading, suggest = _a.suggest;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var focused = this.state.focused;\n        var base = this.base;\n        var value = this.value;\n        var renderClearButton = !loading && !!value;\n        var id = this.props.id || this._inputId;\n        if (typeof suggest === 'string') {\n            this._suggested = suggest;\n        }\n        var autoComplete = (React.createElement(\"span\", { className: classNames('k-widget k-autocomplete k-header', className, {\n                'k-state-disabled': disabled,\n                'k-state-focused': focused && !disabled,\n                'k-state-invalid': !isValid\n            }), ref: function (element) {\n                _this._element = element;\n                base.wrapper = element;\n            }, style: !label\n                ? style\n                : __assign({}, style, { width: undefined }), dir: dir },\n            this.renderSearchBar(renderClearButton, value || '', id),\n            loading && React.createElement(\"span\", { className: \"k-icon k-i-loading\" }),\n            this.renderListContainer()));\n        return label\n            ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: value, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: autoComplete }))\n            : autoComplete;\n    };\n    /**\n     * @hidden\n     */\n    AutoComplete.prototype.onNavigate = function (state, keyCode) {\n        var _this = this;\n        var typedText = this.value;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n        var focusedIndex = this.state.focusedItem !== undefined ?\n            data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :\n            (focusedItemIndex ? focusedItemIndex(data, typedText, textField) :\n                data.indexOf(getFocusedItem(data, typedText, textField)));\n        var newFocused = this.base.navigation.navigate({\n            keyCode: keyCode,\n            current: focusedIndex,\n            max: data.length - 1,\n            min: 0\n        });\n        if (newFocused !== undefined) {\n            this.itemFocus(newFocused, state);\n        }\n        this.applyState(state);\n    };\n    /**\n     * @hidden\n     */\n    AutoComplete.prototype.applyInputValue = function (value, state, eventKey) {\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n        this._suggested = '';\n        if (opened && eventKey === Keys.enter) {\n            var newValue = getItemValue(data[this.focusedIndex(value)], textField);\n            this.triggerOnChange(newValue, state);\n        }\n        if (opened) {\n            this.togglePopup(state);\n        }\n        this.applyState(state);\n    };\n    AutoComplete.prototype.renderSearchBar = function (clearButton, value, id) {\n        var _this = this;\n        var base = this.base;\n        var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;\n        var focused = this.state.focused;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex || undefined, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), clearButton: clearButton, clearButtonClick: this.clearButtonClick, ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy }));\n    };\n    AutoComplete.prototype.renderListContainer = function () {\n        var base = this.base;\n        var _a = this.props, dir = _a.dir, header = _a.header, footer = _a.footer;\n        var popupSettings = base.getPopupSettings();\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n        return (React.createElement(ListContainer, { onMouseDown: function (e) { return e.preventDefault(); }, width: popupWidth, popupSettings: {\n                animate: popupSettings.animate,\n                anchor: this.element || undefined,\n                show: opened,\n                className: classNames('k-list-container k-reset', popupSettings.className),\n                appendTo: popupSettings.appendTo\n            }, dir: dir !== undefined ? dir : this.base.dirCalculated },\n            header,\n            this.renderList(),\n            footer));\n    };\n    AutoComplete.prototype.renderList = function () {\n        var base = this.base;\n        var popupSettings = base.getPopupSettings();\n        var _a = this.props, textField = _a.textField, _b = _a.data, data = _b === void 0 ? [] : _b, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n        var value = this.value;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        return (React.createElement(List, { id: base.listBoxId, show: opened, data: data.slice(), focusedIndex: this.focusedIndex(), value: value, textField: textField, valueField: textField, highlightSelected: false, optionsGuid: base.guid, listRef: function (list) { return base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: \"k-list-scroller\", onClick: this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n    };\n    AutoComplete.prototype.triggerOnChange = function (newValue, state, eventArgs) {\n        if (this.value === newValue && !eventArgs) {\n            return;\n        }\n        state.data.value = newValue;\n        this._valueDuringOnChange = newValue;\n        state.events.push(__assign({ type: 'onChange' }, (eventArgs || {})));\n    };\n    AutoComplete.prototype.applyState = function (state) {\n        this.base.applyState(state);\n        this._valueDuringOnChange = undefined;\n    };\n    AutoComplete.prototype.suggestValue = function (value) {\n        this._suggested = '';\n        if (value) {\n            var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n            var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n            if (suggestedItem) {\n                var suggestedText = getItemValue(suggestedItem, textField);\n                if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n                    this._suggested = suggestedText.substring(value.length);\n                }\n            }\n        }\n    };\n    AutoComplete.prototype.focusedIndex = function (value) {\n        var _this = this;\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n        var inputValue = value !== undefined ? value : this.value;\n        return this.state.focusedItem !== undefined ?\n            data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :\n            (focusedItemIndex ? focusedItemIndex(data, inputValue, textField) :\n                Math.max(0, data.indexOf(getFocusedItem(data, inputValue, textField))));\n    };\n    /**\n     * @hidden\n     */\n    AutoComplete.propTypes = __assign({}, DropDownBase.basicPropTypes, { suggest: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), placeholder: PropTypes.string, value: PropTypes.string, defaultValue: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool, readonly: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string });\n    /**\n     * @hidden\n     */\n    AutoComplete.defaultProps = __assign({}, DropDownBase.defaultProps);\n    return AutoComplete;\n}(React.Component));\nexport default AutoComplete;\n//# sourceMappingURL=AutoComplete.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nvar tagClassName = 'k-button';\nvar focusedTagClassName = tagClassName + ' k-state-focused';\nvar preventDefault = function (event) { return event.preventDefault(); };\nvar stopPropagation = function (event) { return event.stopPropagation(); };\n/**\n * @hidden\n */\nvar TagList = /** @class */ (function (_super) {\n    __extends(TagList, _super);\n    function TagList() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TagList.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, data = _a.data, guid = _a.guid;\n        return (React.createElement(\"ul\", { className: \"k-reset\", role: \"listbox\", id: 'tagslist-' + guid }, data.map(function (tagData) {\n            var tag = (React.createElement(\"li\", { className: tagData === _this.props.focused ? focusedTagClassName : tagClassName, key: tagData.text, id: \"tag-\" + guid + \"-\" + tagData.text.replace(/\\s+/g, '-'), onMouseDown: preventDefault, onClick: stopPropagation, \"aria-selected\": true, role: \"option\", \"aria-setsize\": data.length },\n                React.createElement(\"span\", null, tagData.text),\n                React.createElement(\"span\", { \"aria-label\": \"delete\", className: \"k-select\", onClick: function (e) { return _this.props.onTagDelete.call(undefined, tagData.data, e); } },\n                    React.createElement(\"span\", { className: \"k-icon k-i-close\" }))));\n            return _this.props.tagRender ?\n                _this.props.tagRender(tagData, tag) : tag;\n        })));\n    };\n    return TagList;\n}(React.Component));\nexport default TagList;\n//# sourceMappingURL=TagList.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, guid } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nimport TagList from './TagList';\nimport SearchBar from '../common/SearchBar';\nimport DropDownBase from '../common/DropDownBase';\nimport { ActiveDescendant } from './../common/settings';\nimport { itemIndexStartsWith, getItemValue, areSame, matchDataCollections, removeDataItems, isPresent, preventDefaultNonInputs } from '../common/utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\nvar preventDefault = function (event) { return event.preventDefault(); };\nvar matchTags = function (tag1, tag2, key) {\n    if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n        return false;\n    }\n    return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\nvar isCustom = function (type) { return type === FocusedItemType.CustomItem; };\nvar FocusedItemType;\n(function (FocusedItemType) {\n    FocusedItemType[FocusedItemType[\"None\"] = 0] = \"None\";\n    FocusedItemType[FocusedItemType[\"ListItem\"] = 1] = \"ListItem\";\n    FocusedItemType[FocusedItemType[\"CustomItem\"] = 2] = \"CustomItem\";\n})(FocusedItemType || (FocusedItemType = {}));\n/**\n * Represents the [KendoReact MultiSelect component]({% slug overview_multiselect %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    multiselect = null;\n *    render() {\n *       return (\n *          <div>\n *              <MultiSelect\n *                  data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n *                  ref={component => this.multiselect = component}\n *              />\n *              <button onClick={() => alert(this.multiselect.value)}>alert value</button>\n *          </div>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n    __extends(MultiSelect, _super);\n    function MultiSelect() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            activedescendant: ActiveDescendant.PopupList\n        };\n        _this._valueItemsDuringOnChange = null;\n        _this._inputId = guid();\n        _this.base = new DropDownBase(_this);\n        _this._tags = [];\n        _this._skipFocusEvent = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._input) {\n                _this._input.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleItemSelect = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n            var skip = virtual ? virtual.skip : 0;\n            var dataItem = data[index - skip];\n            var indexInValue = _this.value.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });\n            var newItems = [];\n            if (indexInValue !== -1) { // item is already selected\n                newItems = _this.value;\n                newItems.splice(indexInValue, 1);\n            }\n            else {\n                newItems = _this.value.concat([dataItem]);\n            }\n            var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            if (text) {\n                if (_this.state.text) {\n                    state.data.text = '';\n                }\n                _this.base.filterChanged('', state);\n            }\n            if (_this.state.focusedIndex !== undefined) {\n                state.data.focusedIndex = undefined;\n            }\n            _this.triggerOnChange(newItems, state);\n            _this.base.triggerPageChangeCornerItems(dataItem, state);\n        };\n        /**\n         * @hidden\n         */\n        _this.onTagDelete = function (itemsToRemove, event) {\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (opened) {\n                _this.base.togglePopup(state);\n            }\n            if (!_this.state.focused) {\n                state.data.focused = true;\n            }\n            var selected = _this.value;\n            removeDataItems(selected, itemsToRemove, _this.props.dataItemKey);\n            _this.triggerOnChange(selected, state);\n            _this.applyState(state);\n        };\n        /**\n         * @hidden\n         */\n        _this.itemFocus = function (index, state) {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, allowCustom = _a.allowCustom, virtual = _a.virtual;\n            var skip = virtual ? virtual.skip : 0;\n            var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            var focusedIndex = _this.getFocusedState().focusedIndex;\n            var customItem = allowCustom && text;\n            var nextFocusedItem = data[index - skip];\n            if (nextFocusedItem && focusedIndex !== index) {\n                if (_this.state.focusedIndex !== index) {\n                    state.data.focusedIndex = index;\n                    state.data.activedescendant = ActiveDescendant.PopupList;\n                }\n            }\n            else if (customItem && index === -1) {\n                if (_this.state.focusedIndex !== undefined) {\n                    state.data.focusedIndex = undefined;\n                }\n            }\n            _this.base.triggerPageChangeCornerItems(nextFocusedItem, state);\n        };\n        _this.searchbarRef = function (searchbar) {\n            var input = _this._input = searchbar && searchbar.input;\n            if (input && _this.state.focused) {\n                setTimeout(function () { return input.focus(); }, 0);\n            }\n        };\n        _this.onChangeHandler = function (event) {\n            var state = _this.base.initState();\n            var value = event.currentTarget.value;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            state.syntheticEvent = event;\n            if (_this.props.filter === undefined) {\n                state.data.text = value;\n            }\n            state.data.focusedIndex = undefined;\n            if (!opened) {\n                _this.base.togglePopup(state);\n            }\n            _this.base.filterChanged(value, state);\n            _this.applyState(state);\n        };\n        _this.clearButtonClick = function (event) {\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            event.stopPropagation();\n            if (_this.value.length > 0) {\n                _this.triggerOnChange([], state);\n            }\n            if (_this.state.focusedIndex !== undefined) {\n                state.data.focusedIndex = undefined;\n            }\n            if (opened) {\n                _this.base.togglePopup(state);\n            }\n            var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            if (isPresent(text) && text !== '') {\n                _this.base.filterChanged('', state);\n            }\n            if (_this.state.text) {\n                state.data.text = '';\n            }\n            _this.applyState(state);\n        };\n        _this.onInputKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var focusedItem = _this.getFocusedState().focusedItem;\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (!text && _this.value.length > 0 &&\n                (keyCode === Keys.left || keyCode === Keys.right ||\n                    keyCode === Keys.home || keyCode === Keys.end ||\n                    keyCode === Keys.delete || keyCode === Keys.backspace)) {\n                return _this.onTagsNavigate(event, state);\n            }\n            var togglePopup = function () {\n                event.preventDefault();\n                _this.base.togglePopup(state);\n                _this.applyState(state);\n            };\n            if (opened) {\n                if (event.altKey && keyCode === Keys.up) {\n                    togglePopup();\n                }\n                else if (keyCode === Keys.up || keyCode === Keys.down) {\n                    event.preventDefault();\n                    _this.onNavigate(state, keyCode);\n                }\n                else if (keyCode === Keys.enter) {\n                    event.preventDefault();\n                    if (_this.props.allowCustom && text && focusedItem === null) {\n                        _this.customItemSelect(event);\n                    }\n                    else {\n                        _this.selectFocusedItem(event);\n                    }\n                }\n                else if (keyCode === Keys.esc) {\n                    togglePopup();\n                }\n            }\n            else if (event.altKey && keyCode === Keys.down) {\n                togglePopup();\n            }\n        };\n        _this.renderListContainer = function () {\n            var base = _this.base;\n            var _a = _this.props, header = _a.header, footer = _a.footer, allowCustom = _a.allowCustom, dir = _a.dir;\n            var popupSettings = _this.base.getPopupSettings();\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            var virtual = _this.props.virtual !== undefined;\n            var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n            var listContainerProps = {\n                onMouseDown: preventDefault,\n                dir: dir !== undefined ? dir : base.dirCalculated,\n                onBlur: _this.handleBlur,\n                width: popupWidth,\n                popupSettings: {\n                    className: classNames('k-list-container k-reset', popupSettings.className),\n                    animate: popupSettings.animate,\n                    anchor: _this.element || undefined,\n                    show: opened,\n                    open: _this.onPopupOpened,\n                    close: _this.onPopupClosed,\n                    appendTo: popupSettings.appendTo\n                }\n            };\n            var focusedType = _this.getFocusedState().focusedType;\n            var customItem = allowCustom && text && (React.createElement(\"div\", { className: \"k-list\", key: \"customitem\", onClick: _this.customItemSelect },\n                React.createElement(\"div\", { className: classNames('k-item k-custom-item', { 'k-state-focused': isCustom(focusedType) }) },\n                    text,\n                    React.createElement(\"span\", { className: \"k-icon k-i-plus\", style: { float: 'right' } }))));\n            return (React.createElement(ListContainer, __assign({}, listContainerProps),\n                virtual && header,\n                _this.base.renderScrollWrapper(React.createElement(React.Fragment, null,\n                    !virtual && header,\n                    customItem,\n                    _this.renderList(),\n                    !virtual && footer,\n                    _this.base.renderScrollElement())),\n                virtual && footer));\n        };\n        _this.renderList = function () {\n            var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n            var vs = _this.base.vs;\n            var skip = virtual ? virtual.skip : 0;\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var focusedIndex = _this.getFocusedState().focusedIndex;\n            var popupSettings = _this.base.getPopupSettings();\n            var translate = \"translateY(\" + vs.translate + \"px)\";\n            return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: focusedIndex - skip, value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: vs.enabled ?\n                    { float: 'left', width: '100%' } : { maxHeight: popupSettings.height }, wrapperCssClass: vs.enabled ? undefined : 'k-list-scroller', listStyle: vs.enabled ? { transform: translate } : undefined, key: \"listKey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n        };\n        _this.customItemSelect = function (event) {\n            var _a;\n            var itemText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n            var textField = _this.props.textField;\n            if (!itemText) {\n                return;\n            }\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            var item = textField ? (_a = {}, _a[textField] = itemText, _a) : itemText;\n            if (_this.state.text !== undefined) {\n                state.data.text = '';\n            }\n            state.data.focusedIndex = undefined;\n            _this.base.filterChanged('', state);\n            var newItems = _this.value.concat([item]);\n            _this.triggerOnChange(newItems, state);\n            _this.base.togglePopup(state);\n            _this.applyState(state);\n        };\n        _this.handleWrapperClick = function (event) {\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var input = _this._input;\n            if (!opened && input) {\n                _this.focusElement(input);\n            }\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            if (!_this.state.focused) {\n                state.events.push({ type: 'onFocus' });\n                state.data.focused = true;\n            }\n            _this.base.togglePopup(state);\n            _this.applyState(state);\n        };\n        _this.handleItemClick = function (index, event) {\n            var state = _this.base.initState();\n            state.syntheticEvent = event;\n            _this.handleItemSelect(index, state);\n            if (_this.props.autoClose) {\n                _this.base.togglePopup(state);\n            }\n            _this.applyState(state);\n        };\n        _this.handleBlur = function (event) {\n            if (!_this.state.focused || _this._skipFocusEvent) {\n                return;\n            }\n            var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n            var state = _this.base.initState();\n            var _a = _this.props, allowCustom = _a.allowCustom, filterable = _a.filterable;\n            state.syntheticEvent = event;\n            state.data.focused = false;\n            state.events.push({ type: 'onBlur' });\n            if (opened) {\n                if (_this.state.opened) {\n                    state.data.opened = false;\n                }\n                state.events.push({ type: 'onClose' });\n            }\n            if (!allowCustom && !filterable && _this.state.text) {\n                state.data.text = '';\n            }\n            _this.applyState(state);\n        };\n        _this.handleFocus = function (event) {\n            if (_this._skipFocusEvent) {\n                return;\n            }\n            _this.base.handleFocus(event);\n        };\n        _this.onPopupOpened = function () {\n            if (_this._input && _this.state.focused) {\n                _this.focusElement(_this._input);\n            }\n        };\n        _this.onPopupClosed = function () {\n            if (_this.state.focused) {\n                setTimeout(function () { if (_this.state.focused) {\n                    _this.focusElement(_this._input);\n                } }, 0);\n            }\n        };\n        _this.setValidity = function () {\n            if (_this._input && _this._input.setCustomValidity) {\n                _this._input.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || VALIDATION_MESSAGE);\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(MultiSelect.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiSelect.prototype, \"value\", {\n        /**\n         * Represents the value of the MultiSelect.\n         */\n        get: function () {\n            var result = [];\n            if (this._valueItemsDuringOnChange) {\n                result.push.apply(result, this._valueItemsDuringOnChange);\n            }\n            else if (this.props.value) {\n                result.push.apply(result, this.props.value);\n            }\n            else if (this.state.value) {\n                result.push.apply(result, this.state.value);\n            }\n            else if (this.props.defaultValue) {\n                result.push.apply(result, this.props.defaultValue);\n            }\n            return result;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiSelect.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the MultiSelect.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiSelect.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the MultiSelect is set.\n         */\n        get: function () {\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required\n                || (this.value !== null && this.value.length > 0 && this.value !== undefined));\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiSelect.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : MultiSelect.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiSelect.prototype, \"validityStyles\", {\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : MultiSelect.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    MultiSelect.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a = this.props, virtual = _a.virtual, data = _a.data;\n        var skip = virtual ? virtual.skip : 0;\n        var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n        var opening = !prevOpened && opened;\n        var closing = prevOpened && !opened;\n        var popupSettings = this.base.getPopupSettings();\n        if (!popupSettings.animate && closing) {\n            this.onPopupClosed();\n        }\n        if (virtual && virtual.total !== prevTotal) {\n            this.base.vs.calcScrollElementHeight();\n            this.base.vs.reset();\n        }\n        else {\n            var _b = this.getFocusedState(), focusedItem = _b.focusedItem, focusedIndex = _b.focusedIndex;\n            var focusedItemChanged = focusedIndex !== undefined && prevState.focusedIndex !== focusedIndex;\n            var prevData = prevProps.data;\n            if (opening && virtual) {\n                this.base.scrollToVirtualItem(virtual, focusedIndex - skip);\n            }\n            else if (opening && !virtual) {\n                this.base.scrollToItem(focusedIndex);\n            }\n            else if (opened && prevOpened && focusedItem && (focusedItemChanged || prevData !== data)) {\n                this.base.scrollToItem(focusedIndex - skip);\n            }\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    MultiSelect.prototype.componentDidMount = function () {\n        this.base.didMount();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    MultiSelect.prototype.onNavigate = function (state, keyCode) {\n        var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b;\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n        var _c = this.getFocusedState(), focusedType = _c.focusedType, focusedIndex = _c.focusedIndex;\n        var customItem = allowCustom && text;\n        var customItemFocused = isCustom(focusedType);\n        var base = this.base;\n        var vs = base.vs;\n        if (opened && keyCode === Keys.up && customItemFocused) {\n            if (this.state.focusedIndex !== undefined) {\n                state.data.focusedIndex = undefined;\n            }\n        }\n        else {\n            var newFocused = base.navigation.navigate({\n                keyCode: keyCode,\n                current: focusedIndex,\n                max: (vs.enabled ? vs.total : data.length) - 1,\n                min: customItem ? -1 : 0\n            });\n            if (newFocused !== undefined) {\n                this.itemFocus(newFocused, state);\n            }\n        }\n        this.applyState(state);\n    };\n    /**\n     * @hidden\n     */\n    MultiSelect.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, disabled = _a.disabled, tags = _a.tags, textField = _a.textField, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n        var _b = this.state, focused = _b.focused, text = _b.text, focusedTag = _b.focusedTag;\n        var vs = this.base.vs;\n        var id = this.props.id || this._inputId;\n        vs.enabled = virtual !== undefined;\n        if (virtual !== undefined) {\n            vs.skip = virtual.skip;\n            vs.total = virtual.total;\n            vs.pageSize = virtual.pageSize;\n        }\n        var tagsToRender = [];\n        if (tags === undefined) {\n            this.value.forEach(function (item) {\n                tagsToRender.push({ text: getItemValue(item, textField), data: [item] });\n            });\n        }\n        else {\n            tagsToRender.push.apply(tagsToRender, tags);\n        }\n        this.setItems(tagsToRender, this._tags);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var component = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-multiselect k-header', className, {\n                'k-state-focused': focused && !disabled,\n                'k-state-invalid': !isValid,\n                'k-state-disabled': disabled\n            }), style: !label\n                ? style\n                : __assign({}, style, { width: undefined }), dir: dir, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            React.createElement(\"div\", { onClick: this.handleWrapperClick, ref: function (wrapper) { return _this.base.wrapper = wrapper; }, className: \"k-multiselect-wrap k-floatwrap\", onMouseDown: preventDefaultNonInputs },\n                tagsToRender.length > 0 && React.createElement(TagList, { tagRender: this.props.tagRender, onTagDelete: this.onTagDelete, data: tagsToRender, guid: this.base.guid, focused: focusedTag ? tagsToRender.find(function (t) { return matchTags(t, focusedTag, dataItemKey); }) : undefined }),\n                this.renderSearchbar(id),\n                this.props.loading && React.createElement(\"span\", { className: \"k-icon k-i-loading\" })),\n            this.renderListContainer()));\n        return label ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: text || getItemValue(this.value[0], textField), editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: component })) : component;\n    };\n    MultiSelect.prototype.renderSearchbar = function (id) {\n        var _a = this.state, activedescendant = _a.activedescendant, focusedTag = _a.focusedTag;\n        var _b = this.props, disabled = _b.disabled, placeholder = _b.placeholder;\n        var text = (this.props.filter !== undefined ? this.props.filter : this.state.text) || '';\n        var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n        var focusedIndex = this.getFocusedState().focusedIndex;\n        var clearButton = !!text || this.value.length > 0;\n        var placeholderToShow = this.value.length === 0 && !text ? placeholder : undefined;\n        var ariaActivedescendant = activedescendant === ActiveDescendant.TagsList && focusedTag !== undefined ?\n            \"tag-\" + this.base.guid + \"-\" + focusedTag.text.replace(/\\s+/g, '-') :\n            \"option-\" + this.base.guid + \"-\" + focusedIndex;\n        return (React.createElement(SearchBar, { id: id, size: Math.max((placeholderToShow || '').length, text.length, 1), tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, placeholder: placeholderToShow, value: text, onChange: this.onChangeHandler, onKeyDown: this.onInputKeyDown, ref: this.searchbarRef, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: ariaActivedescendant, ariaDescribedBy: \"tagslist-\" + this.base.guid + \" \" + (this.props.ariaDescribedBy || ''), clearButton: clearButton, clearButtonClick: this.clearButtonClick, ariaLabelledBy: this.props.ariaLabelledBy }));\n    };\n    MultiSelect.prototype.onTagsNavigate = function (event, state) {\n        var keyCode = event.keyCode;\n        var focusedTag = this.state.focusedTag;\n        var tags = this._tags;\n        var itemsKey = this.props.dataItemKey;\n        var focusedIndex = focusedTag ?\n            tags.findIndex(function (t) { return matchTags(t, focusedTag, itemsKey); }) : -1;\n        var newFocusedTag = undefined;\n        var hasFocused = focusedIndex !== -1;\n        if (keyCode === Keys.left) {\n            if (hasFocused) {\n                focusedIndex = Math.max(0, focusedIndex - 1);\n            }\n            else {\n                focusedIndex = tags.length - 1;\n            }\n            newFocusedTag = tags[focusedIndex];\n        }\n        else if (keyCode === Keys.right) {\n            if (focusedIndex === tags.length - 1) {\n                newFocusedTag = undefined;\n            }\n            else if (hasFocused) {\n                focusedIndex = Math.min(tags.length - 1, focusedIndex + 1);\n                newFocusedTag = tags[focusedIndex];\n            }\n        }\n        else if (keyCode === Keys.home) {\n            newFocusedTag = tags[0];\n        }\n        else if (keyCode === Keys.end) {\n            newFocusedTag = tags[tags.length - 1];\n        }\n        else if (keyCode === Keys.delete) {\n            if (hasFocused) {\n                var items = this.value;\n                removeDataItems(items, tags[focusedIndex].data, itemsKey);\n                this.triggerOnChange(items, state);\n            }\n        }\n        else if (keyCode === Keys.backspace) {\n            var items = this.value;\n            if (hasFocused) {\n                removeDataItems(items, tags[focusedIndex].data, itemsKey);\n                this.triggerOnChange(items, state);\n            }\n            else if (!hasFocused && tags.length) {\n                var removed = tags.pop();\n                removeDataItems(items, removed.data, itemsKey);\n                this.triggerOnChange(items, state);\n            }\n        }\n        if (newFocusedTag !== focusedTag) {\n            state.data.focusedTag = newFocusedTag;\n            state.data.activedescendant = ActiveDescendant.TagsList;\n        }\n        this.applyState(state);\n    };\n    MultiSelect.prototype.triggerOnChange = function (items, state) {\n        if (this.props.value === undefined) {\n            state.data.value = items.slice();\n        }\n        this._valueItemsDuringOnChange = [];\n        this.setItems(items, this._valueItemsDuringOnChange);\n        state.events.push({ type: 'onChange' });\n    };\n    MultiSelect.prototype.selectFocusedItem = function (event) {\n        var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual;\n        var focusedIndex = this.getFocusedState().focusedIndex;\n        var skip = virtual ? virtual.skip : 0;\n        if (data[focusedIndex - skip] !== undefined) {\n            this.handleItemClick(focusedIndex, event);\n        }\n    };\n    MultiSelect.prototype.setItems = function (srcItems, destItems) {\n        destItems.length = 0;\n        destItems.push.apply(destItems, srcItems);\n    };\n    MultiSelect.prototype.getFocusedState = function () {\n        var focusedIndex = this.state.focusedIndex;\n        var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n        var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual, textField = _a.textField, _c = _a.focusedItemIndex, focusedItemIndex = _c === void 0 ? itemIndexStartsWith : _c;\n        var skip = (virtual && virtual.skip) || 0;\n        var focusedInd;\n        if (focusedIndex !== undefined) {\n            return {\n                focusedIndex: focusedIndex,\n                focusedItem: data[focusedIndex - skip],\n                focusedType: FocusedItemType.ListItem\n            };\n        }\n        var selected = this.value;\n        if (allowCustom && text) {\n            return { focusedItem: null, focusedIndex: -1, focusedType: FocusedItemType.CustomItem };\n        }\n        else if (text) {\n            focusedInd = focusedItemIndex(data, text, textField);\n            return {\n                focusedItem: data[focusedInd],\n                focusedIndex: focusedInd + skip,\n                focusedType: FocusedItemType.ListItem\n            };\n        }\n        else if (selected.length) {\n            var last_1 = selected[selected.length - 1];\n            focusedInd = data.findIndex(function (i) { return areSame(i, last_1, dataItemKey); });\n            if (data[focusedInd] !== undefined) {\n                return {\n                    focusedIndex: focusedInd + skip,\n                    focusedItem: data[focusedInd],\n                    focusedType: FocusedItemType.ListItem\n                };\n            }\n            return { focusedType: FocusedItemType.None, focusedIndex: -1 };\n        }\n        return skip === 0 ?\n            { focusedItem: data[0], focusedIndex: 0, focusedType: FocusedItemType.ListItem } :\n            { focusedType: FocusedItemType.None, focusedIndex: -1 };\n    };\n    MultiSelect.prototype.focusElement = function (element) {\n        var _this = this;\n        this._skipFocusEvent = true;\n        element.focus();\n        setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n    };\n    MultiSelect.prototype.applyState = function (state) {\n        this.base.applyState(state);\n        this._valueItemsDuringOnChange = null;\n    };\n    /**\n     * @hidden\n     */\n    MultiSelect.propTypes = __assign({}, DropDownBase.propTypes, { autoClose: PropTypes.bool, value: PropTypes.arrayOf(PropTypes.any), defaultValue: PropTypes.arrayOf(PropTypes.any), dataItemKey: PropTypes.string, placeholder: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.shape({\n            text: PropTypes.string,\n            data: PropTypes.arrayOf(PropTypes.any)\n        })), tagRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string });\n    /**\n     * @hidden\n     */\n    MultiSelect.defaultProps = __assign({}, DropDownBase.defaultProps, { autoClose: true, required: false });\n    return MultiSelect;\n}(React.Component));\nexport default MultiSelect;\n//# sourceMappingURL=MultiSelect.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage } from './../messages';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n    __extends(PagerPageSizes, _super);\n    function PagerPageSizes() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.pageSizeChange = function (e) {\n            if (_this.props.pageChange) {\n                _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n            }\n        };\n        return _this;\n    }\n    PagerPageSizes.prototype.render = function () {\n        var _this = this;\n        var sizes = this.props.pageSizes.slice();\n        if (sizes.filter(function (s) { return s === _this.props.pageSize; }).length === 0) {\n            sizes.unshift(this.props.pageSize);\n        }\n        var itemPerPageMessage = this.props.messagesMap ? this.props.messagesMap(pagerItemPerPage) :\n            ({ messageKey: pagerItemPerPage, defaultMessage: messages[pagerItemPerPage] });\n        return (React.createElement(\"span\", { className: \"k-pager-sizes k-label\" },\n            React.createElement(DropDownList, { value: this.props.pageSize, data: sizes, onChange: this.pageSizeChange }),\n            provideLocalizationService(this).toLanguageString(itemPerPageMessage.messageKey, itemPerPageMessage.defaultMessage)));\n    };\n    return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n//# sourceMappingURL=PagerPageSizes.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nvar Pager = /** @class */ (function (_super) {\n    __extends(Pager, _super);\n    function Pager() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.changePage = function (page, event) {\n            if (_this.props.onPageChange && page > 0 && page <= _this.totalPages) {\n                _this.props.onPageChange({\n                    target: _this,\n                    skip: (page - 1) * _this.props.take,\n                    take: _this.props.take,\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent\n                });\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Pager.prototype.render = function () {\n        var _a = this.props, skip = _a.skip, take = _a.take, total = _a.total, pageSizes = _a.pageSizes, className = _a.className, messagesMap = _a.messagesMap;\n        var localizationService = provideLocalizationService(this);\n        var intlService = provideIntlService(this);\n        var currentPage = Math.floor(skip / take) + 1;\n        var changer = this.props.type === 'numeric' ?\n            (React.createElement(PagerNumericButtons, { buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: currentPage, totalPages: this.totalPages, pageChange: this.changePage, messagesMap: messagesMap }));\n        var firstPageMessage = messagesMap ? messagesMap(pagerFirstPage) :\n            ({ messageKey: pagerFirstPage, defaultMessage: messages[pagerFirstPage] });\n        var previousPageMessage = messagesMap ? messagesMap(pagerPreviousPage) :\n            ({ messageKey: pagerPreviousPage, defaultMessage: messages[pagerPreviousPage] });\n        var nextPageMessage = messagesMap ? messagesMap(pagerNextPage) :\n            ({ messageKey: pagerNextPage, defaultMessage: messages[pagerNextPage] });\n        var lastPageMessage = messagesMap ? messagesMap(pagerLastPage) :\n            ({ messageKey: pagerLastPage, defaultMessage: messages[pagerLastPage] });\n        var infoMessage = messagesMap ? messagesMap(pagerInfo) :\n            ({ messageKey: pagerInfo, defaultMessage: messages[pagerInfo] });\n        var first, prev, next, last;\n        if (this.props.previousNext) {\n            first = this.renderButton(1, 'k-link k-pager-nav k-pager-first' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(firstPageMessage.messageKey, firstPageMessage.defaultMessage), 'k-icon k-i-arrow-end-left');\n            prev = this.renderButton(currentPage - 1, 'k-link k-pager-nav' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(previousPageMessage.messageKey, previousPageMessage.defaultMessage), 'k-icon k-i-arrow-60-left');\n            next = this.renderButton(currentPage + 1, 'k-link k-pager-nav' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(nextPageMessage.messageKey, nextPageMessage.defaultMessage), 'k-icon k-i-arrow-60-right');\n            last = this.renderButton(this.totalPages, 'k-link k-pager-nav k-pager-last' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(lastPageMessage.messageKey, lastPageMessage.defaultMessage), 'k-icon k-i-arrow-end-right');\n        }\n        var pagerPageSizes = pageSizes && (React.createElement(PagerPageSizes, { pageChange: this.props.onPageChange, pageSize: take, pageSizes: pageSizes, messagesMap: messagesMap }));\n        var info = this.props.info && (React.createElement(\"div\", { className: \"k-pager-info k-label\" }, intlService\n            .format(localizationService.toLanguageString(infoMessage.messageKey, infoMessage.defaultMessage), [\n            Math.min(skip + 1, total),\n            Math.min(skip + take, total),\n            total\n        ])));\n        return (React.createElement(\"div\", { className: 'k-pager-wrap k-floatwrap k-widget' + (className ? \" \" + className : ''), style: this.props.style },\n            first,\n            prev,\n            changer,\n            next,\n            last,\n            pagerPageSizes,\n            info));\n    };\n    Pager.prototype.renderButton = function (page, className, title, icon) {\n        var _this = this;\n        return (React.createElement(\"a\", { onClick: function (e) {\n                e.preventDefault();\n                _this.changePage(page, e);\n            }, href: \"#\", className: className, title: title },\n            React.createElement(\"span\", { className: icon, \"aria-label\": title })));\n    };\n    Object.defineProperty(Pager.prototype, \"totalPages\", {\n        get: function () {\n            return Math.ceil((this.props.total || 0) / this.props.take);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Pager.propTypes = {\n        className: PropTypes.string,\n        style: PropTypes.object,\n        total: PropTypes.number.isRequired,\n        skip: PropTypes.number.isRequired,\n        take: PropTypes.number.isRequired,\n        buttonCount: PropTypes.number,\n        info: PropTypes.bool,\n        type: PropTypes.oneOf(['numeric', 'input']),\n        pageSizes: PropTypes.arrayOf(PropTypes.number),\n        previousNext: PropTypes.bool,\n        onPageChange: PropTypes.func,\n        messagesMap: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    Pager.defaultProps = {\n        buttonCount: 10,\n        info: true,\n        type: 'numeric'\n    };\n    return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n//# sourceMappingURL=Pager.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport var createFilterCell = function (settings) {\n    var Cell = /** @class */ (function (_super) {\n        __extends(FilterCell, _super);\n        function FilterCell() {\n            var _this = _super !== null && _super.apply(this, arguments) || this;\n            _this.filterChange = function (event) {\n                if (_this.props.onFilterChange) {\n                    _this.props.onFilterChange(event);\n                }\n            };\n            _this.inputChange = function (e) {\n                var value = e.target.value;\n                var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n                var existing = _this.findCellFilter();\n                var filterResult = existing ?\n                    filter.map(function (f) { return f.field === field ? __assign({}, existing, { value: value }) : f; }) : filter.concat([__assign({}, settings.emptyFilter, { value: value, field: field })]);\n                _this.filterChange({\n                    filter: filterResult,\n                    field: field,\n                    syntheticEvent: e.syntheticEvent\n                });\n            };\n            _this.operatorChange = function (e) {\n                var operator = e.target.value.operator;\n                var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n                var existing = _this.findCellFilter();\n                var filterResult = existing ?\n                    filter.map(function (f) { return f.field === field ? __assign({}, existing, { operator: operator }) : f; }) : filter.concat([__assign({}, settings.emptyFilter, { field: field, operator: operator })]);\n                _this.filterChange({\n                    filter: filterResult,\n                    field: field,\n                    syntheticEvent: e.syntheticEvent\n                });\n            };\n            _this.clearButtonClick = function (e) {\n                var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n                _this.filterChange({\n                    filter: filter.filter(function (f) { return f.field !== field; }),\n                    field: field,\n                    syntheticEvent: e\n                });\n            };\n            _this.findCellFilter = function () {\n                var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, field = _a.field;\n                return filter.find(function (f) { return f.field === field; });\n            };\n            return _this;\n        }\n        FilterCell.prototype.render = function () {\n            var _a = this.props, _b = _a.clearButtonTitle, clearButtonTitle = _b === void 0 ? '' : _b, _c = _a.operators, operators = _c === void 0 ? [] : _c;\n            var filter = this.findCellFilter() || __assign({}, settings.emptyFilter, { operator: '' });\n            var operator = filter.operator, value = filter.value;\n            var operatorComponentProps = {\n                value: operators.find(function (item) { return item.operator === operator; }) || null,\n                onChange: this.operatorChange,\n                className: 'k-dropdown-operator',\n                iconClassName: 'k-i-filter k-icon',\n                data: operators,\n                textField: 'text',\n                popupSettings: { width: '' },\n                components: this.props.components\n            };\n            return (React.createElement(\"div\", { className: \"k-filtercell\" },\n                React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n                    settings.inputComponent({ value: value, onChange: this.inputChange, components: this.props.components }),\n                    React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n                        settings.operatorComponent(operatorComponentProps, this.props),\n                        React.createElement(\"button\", { className: \n                            /* button is always visible if there is either value or operator */\n                            (!(value === null || value === '') || operator) ?\n                                'k-button k-button-icon k-clear-button-visible' :\n                                'k-button k-button-icon', title: clearButtonTitle, type: \"button\", onClick: this.clearButtonClick },\n                            React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n        };\n        return FilterCell;\n    }(React.Component));\n    return Cell;\n};\n//# sourceMappingURL=FilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar _a, _b, _c;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { RowHeightService, ScrollerService } from './services';\n/**\n * @hidden\n */\nexport var ScrollDirection;\n(function (ScrollDirection) {\n    ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n    ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar differenceToScroll = function (scrollTop, staticOffset, maxScrollDifference) {\n    return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {},\n    _a[ScrollDirection.Forward] = function (step) { return function (value) { return value + step; }; },\n    _a[ScrollDirection.Backward] = function (step) { return function (value) { return value - step; }; },\n    _a);\nvar scrollNormalizers = (_b = {},\n    _b[ScrollDirection.Forward] = function (end) { return function (value) { return Math.min(value, end); }; },\n    _b[ScrollDirection.Backward] = function (end) { return function (value) { return Math.max(value, end); }; },\n    _b);\nvar scrollValidators = (_c = {},\n    _c[ScrollDirection.Forward] = function (end) { return function (start) { return start < end; }; },\n    _c[ScrollDirection.Backward] = function (end) { return function (start) { return start > end; }; },\n    _c);\n/**\n * @hidden\n */\nvar Virtualization = /** @class */ (function (_super) {\n    __extends(Virtualization, _super);\n    function Virtualization(props) {\n        var _this = _super.call(this, props) || this;\n        _this.animationInProgress = false;\n        _this.scrollTo = function (value) {\n            var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n            if (!_this.scrollContainer) {\n                return;\n            }\n            _this.scrollContainer[scrollProperty] = value;\n        };\n        _this.scrollToIndex = function (index) {\n            if (!_this.rowHeightService) {\n                return;\n            }\n            _this.animationInProgress = false;\n            _this.scrollTo(_this.rowHeightService.offset(index));\n        };\n        _this.animateToIndex = function (index) {\n            if (!_this.rowHeightService || !window) {\n                return;\n            }\n            window.cancelAnimationFrame(_this.cancelAnimation);\n            var indexOffset = _this.rowHeightService.offset(index);\n            var direction = _this.getContainerScrollDirection(indexOffset);\n            var _a = _this.scrollRange(indexOffset, direction), start = _a.start, end = _a.end;\n            if (start === end) {\n                return;\n            }\n            var step = _this.scrollStep(start, end);\n            var modifyScroll = scrollModifiers[direction](step);\n            var normalizeScroll = scrollNormalizers[direction](end);\n            var isScrollValid = scrollValidators[direction](modifyScroll(end));\n            var animate = function (progress) {\n                _this.animationInProgress = true;\n                var next = modifyScroll(progress);\n                _this.scrollTo(normalizeScroll(next));\n                isScrollValid(next)\n                    ? _this.cancelAnimation = window.requestAnimationFrame(function () { animate(next); })\n                    : _this.animationInProgress = false;\n            };\n            _this.cancelAnimation = window.requestAnimationFrame(function () { animate(start); });\n        };\n        _this.scrollToBottom = function () {\n            if (!_this.rowHeightService) {\n                return;\n            }\n            _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n        };\n        _this.scrollStep = function (start, end) {\n            var duration = _this.props.scrollDuration || Virtualization.defaultProps.scrollDuration;\n            return Math.abs(end - start) / (duration / FRAME_DURATION);\n        };\n        _this.scrollRange = function (indexOffset, direction) {\n            var containerScroll = _this.containerScrollPosition;\n            if (parseInt(\"\" + indexOffset, 10) === parseInt(\"\" + containerScroll, 10)) {\n                return { start: indexOffset, end: indexOffset };\n            }\n            var maxScroll = _this.containerMaxScroll();\n            var sign = direction === ScrollDirection.Backward ? 1 : -1;\n            var difference = differenceToScroll(containerScroll, indexOffset, _this.props.maxScrollDifference);\n            var end = Math.min(indexOffset, maxScroll);\n            var start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n            return { start: start, end: end };\n        };\n        _this.containerMaxScroll = function () {\n            return _this.containerScrollSize - _this.containerOffsetSize;\n        };\n        _this.getContainerScrollDirection = function (indexOffset) {\n            return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n        };\n        _this.initServices = function (props) {\n            if (props === void 0) { props = _this.props; }\n            var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n            if (dimension === undefined) {\n                return;\n            }\n            _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n            _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n        };\n        _this.getContainerProperty = function (propertyName) {\n            if (!_this.scrollContainer) {\n                return 0;\n            }\n            return _this.scrollContainer[propertyName];\n        };\n        _this.handleScroll = function (event) {\n            if (!_this.scrollContainer || !_this.rowHeightService) {\n                return;\n            }\n            var target = event.target;\n            _this.scrollerService.onScroll({\n                scrollLeft: target.scrollLeft,\n                scrollTop: target.scrollTop,\n                offsetHeight: target.offsetHeight,\n                offsetWidth: target.offsetWidth\n            });\n            var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n            var onScrollAction = _this.props.onScrollAction;\n            var args = {\n                index: index,\n                target: target,\n                scrollAction: _this.scrollAction,\n                pageAction: _this.pageAction,\n                animationInProgress: _this.animationInProgress\n            };\n            if (onScrollAction) {\n                onScrollAction.call(undefined, args);\n            }\n            _this.scrollAction = undefined;\n            _this.pageAction = undefined;\n        };\n        _this.handleScrollAction = function (action) {\n            _this.scrollAction = action;\n        };\n        _this.handlePageAction = function (action) {\n            _this.pageAction = action;\n        };\n        _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n        return _this;\n    }\n    Object.defineProperty(Virtualization.prototype, \"element\", {\n        get: function () {\n            return this.scrollContainer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerScrollSize\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"containerScrollPosition\", {\n        get: function () {\n            return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"direction\", {\n        get: function () {\n            return this.props.direction !== undefined ? this.props.direction : Virtualization.defaultProps.direction;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Virtualization.prototype, \"scrollOffsetSize\", {\n        get: function () {\n            return this.props.scrollOffsetSize !== undefined\n                ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Virtualization.prototype.activeIndex = function () {\n        return this.itemIndex(Math.ceil(this.containerScrollPosition));\n    };\n    Virtualization.prototype.itemIndex = function (offset) {\n        if (!this.rowHeightService) {\n            return 0;\n        }\n        return this.rowHeightService.index(offset);\n    };\n    Virtualization.prototype.itemOffset = function (index) {\n        if (!this.rowHeightService) {\n            return 0;\n        }\n        return this.rowHeightService.offset(index);\n    };\n    Virtualization.prototype.isIndexVisible = function (index) {\n        if (!this.rowHeightService) {\n            return false;\n        }\n        var containerTop = this.containerScrollPosition;\n        var containerBottom = containerTop + this.containerOffsetSize;\n        var top = this.rowHeightService.offset(index);\n        var bottom = top + this.rowHeightService.height(index);\n        return top >= containerTop && bottom <= containerBottom;\n    };\n    Virtualization.prototype.isListScrolled = function (index) {\n        if (!this.rowHeightService) {\n            return false;\n        }\n        return this.containerScrollPosition !== this.rowHeightService.offset(index);\n    };\n    Virtualization.prototype.componentDidMount = function () {\n        var onMount = this.props.onMount;\n        if (onMount) {\n            onMount.call(undefined, this);\n        }\n    };\n    Virtualization.prototype.render = function () {\n        var _this = this;\n        if (this.lastTotal !== this.props.total\n            || this.lastDirection !== this.direction\n            || this.lastTake !== this.props.take) {\n            this.initServices();\n            this.lastTotal = this.props.total;\n            this.lastDirection = this.direction;\n            this.lastTake = this.props.take;\n        }\n        var vertexLength = \"\" + ((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n        var placeholderStyle = this.direction === 'vertical'\n            ? { height: vertexLength + \"px\" }\n            : { width: vertexLength + \"px\" };\n        var rootClassNames = classNames('k-content k-scrollable', {\n            'k-scrollable-horizontal': this.direction === 'horizontal'\n        }, this.props.className);\n        var scrollableClassNames = classNames('k-scrollable-placeholder', {\n            'k-scrollable-horizontal-placeholder': this.direction === 'horizontal'\n        });\n        return (React.createElement(\"div\", { ref: function (el) { _this.scrollContainer = el; }, onScroll: this.handleScroll, className: rootClassNames, tabIndex: this.props.tabIndex, role: this.props.role },\n            this.props.children,\n            React.createElement(\"div\", { style: placeholderStyle, className: scrollableClassNames })));\n    };\n    Virtualization.propTypes = {\n        bottomOffset: PropTypes.number.isRequired,\n        className: PropTypes.string,\n        direction: PropTypes.oneOf(['horizontal', 'vertical']),\n        forceScroll: PropTypes.bool,\n        itemHeight: PropTypes.number,\n        itemWidth: PropTypes.number,\n        maxScrollDifference: PropTypes.number,\n        onScroll: PropTypes.func,\n        onScrollAction: PropTypes.func,\n        scrollDuration: PropTypes.number,\n        scrollOffsetSize: PropTypes.number,\n        skip: PropTypes.number.isRequired,\n        tabIndex: PropTypes.number,\n        take: PropTypes.number.isRequired,\n        topOffset: PropTypes.number.isRequired,\n        total: PropTypes.number.isRequired,\n        role: PropTypes.string\n    };\n    Virtualization.defaultProps = {\n        direction: 'vertical',\n        forceScroll: false,\n        scrollOffsetSize: 0,\n        maxScrollDifference: 100,\n        scrollDuration: 100\n    };\n    return Virtualization;\n}(React.Component));\nexport { Virtualization };\n//# sourceMappingURL=Virtualization.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nvar booleanOperator = 'eq';\nvar settings = {\n    emptyFilter: { operator: booleanOperator, value: '' },\n    inputComponent: function (_props) { return null; },\n    operatorComponent: function (props, cellProps) {\n        var _a = cellProps.filter, filter = _a === void 0 ? [] : _a, field = cellProps.field;\n        var current = filter.find(function (f) { return f.field === field; });\n        return (React.createElement(DropDownList, __assign({}, props, { value: props.data.find(function (x) { return x.operator === (current ? current.value : ''); }), onChange: function (e) {\n                if (!cellProps.onFilterChange) {\n                    return;\n                }\n                var value = e.target.value.operator;\n                if (value === '') {\n                    if (current) {\n                        cellProps.onFilterChange.call(undefined, {\n                            filter: filter.filter(function (f) { return f.field !== current.field; }),\n                            field: field,\n                            syntheticEvent: e.syntheticEvent\n                        });\n                    }\n                    return;\n                }\n                var filterResult = current ?\n                    filter.map(function (f) { return f.field === field ? __assign({}, current, { value: value }) : f; }) : filter.concat([{ value: value, field: field, operator: booleanOperator }]);\n                cellProps.onFilterChange.call(undefined, {\n                    filter: filterResult,\n                    field: field,\n                    syntheticEvent: e.syntheticEvent\n                });\n            } })));\n    }\n};\n/**\n * @hidden\n */\nvar BooleanFilterCell = /** @class */ (function (_super) {\n    __extends(BooleanFilterCell, _super);\n    function BooleanFilterCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return BooleanFilterCell;\n}(createFilterCell(settings)));\nexport { BooleanFilterCell };\n//# sourceMappingURL=BooleanFilter.js.map","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n    var newDate = cloneDate(date);\n    if (hour === 0 && newDate.getHours() === 23) {\n        newDate.setHours(newDate.getHours() + 2);\n    }\n    return newDate;\n};\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n    if (hours === void 0) { hours = 0; }\n    if (minutes === void 0) { minutes = 0; }\n    if (seconds === void 0) { seconds = 0; }\n    if (milliseconds === void 0) { milliseconds = 0; }\n    var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n    if (year > -1 && year < 100) {\n        date.setFullYear(date.getFullYear() - 1900);\n    }\n    return adjustDST(date, hours);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n    return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n    if (!candidate && !expected) {\n        return true;\n    }\n    return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport var isEqualDate = function (candidate, expected) {\n    if (!candidate && !expected) {\n        return true;\n    }\n    return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","/**\n * @hidden\n */\nvar update = function (arr, idx, value) { return (arr.slice(0, idx + 1).concat((arr.slice(idx + 1).map(function (x) { return x + value; })))); };\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n    function RowHeightService(total, rowHeight, detailRowHeight) {\n        if (total === void 0) { total = 0; }\n        this.total = total;\n        this.rowHeight = rowHeight;\n        this.detailRowHeight = detailRowHeight;\n        this.offsets = [];\n        this.heights = [];\n        var agg = 0;\n        for (var idx = 0; idx < total; idx++) {\n            this.offsets.push(agg);\n            agg += rowHeight;\n            this.heights.push(rowHeight);\n        }\n    }\n    RowHeightService.prototype.height = function (rowIndex) {\n        return this.heights[rowIndex];\n    };\n    RowHeightService.prototype.expandDetail = function (rowIndex) {\n        if (this.height(rowIndex) === this.rowHeight) {\n            this.updateRowHeight(rowIndex, this.detailRowHeight);\n        }\n    };\n    RowHeightService.prototype.collapseDetail = function (rowIndex) {\n        if (this.height(rowIndex) > this.rowHeight) {\n            this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n        }\n    };\n    RowHeightService.prototype.index = function (position) {\n        for (var i = 0; i < this.offsets.length; i++) {\n            if (position === this.offsets[i]) {\n                return i;\n            }\n            if (position < this.offsets[i]) {\n                return i - 1;\n            }\n        }\n        return this.total - 1;\n    };\n    RowHeightService.prototype.offset = function (rowIndex) {\n        return this.offsets[rowIndex];\n    };\n    RowHeightService.prototype.totalHeight = function () {\n        return this.heights.reduce(function (prev, curr) { return prev + curr; }, 0);\n    };\n    RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n        this.heights[rowIndex] += value;\n        this.offsets = update(this.offsets, rowIndex, value);\n    };\n    return RowHeightService;\n}());\nexport { RowHeightService };\n//# sourceMappingURL=RowHeightService.js.map","var normalize = function (x) { return Math.max(x, 0); };\n/**\n * @hidden\n */\nvar ScrollAction = /** @class */ (function () {\n    function ScrollAction(offset) {\n        this.offset = offset;\n    }\n    return ScrollAction;\n}());\nexport { ScrollAction };\n/**\n * @hidden\n */\nvar PageAction = /** @class */ (function () {\n    function PageAction(skip) {\n        this.skip = skip;\n    }\n    return PageAction;\n}());\nexport { PageAction };\n/**\n * @hidden\n */\nvar ScrollerService = /** @class */ (function () {\n    function ScrollerService(onScrollAction, onPageAction) {\n        this.onScrollAction = onScrollAction;\n        this.onPageAction = onPageAction;\n        this.firstLoaded = 0;\n        this.bottomOffset = 0;\n        this.topOffset = 0;\n    }\n    ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n        if (topOffset === void 0) { topOffset = 0; }\n        if (bottomOffset === void 0) { bottomOffset = 0; }\n        if (direction === void 0) { direction = 'vertical'; }\n        this.rowHeightService = rowHeightService;\n        this.firstLoaded = skip;\n        this.lastLoaded = skip + take;\n        this.take = take;\n        this.total = total;\n        this.lastScrollTop = 0;\n        this.topOffset = topOffset;\n        this.bottomOffset = bottomOffset;\n        this.direction = direction;\n        var offsetBufferRows = this.rowsForHeight(topOffset);\n        var skipWithOffset = normalize(skip - offsetBufferRows);\n        this.onScrollAction(new ScrollAction(this.rowOffset(skipWithOffset)));\n        this.onPageAction(new PageAction(skipWithOffset));\n    };\n    ScrollerService.prototype.onScroll = function (_a) {\n        var scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth;\n        var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n        var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n        if (this.lastScrollTop === scrollPosition) {\n            return;\n        }\n        var up = this.lastScrollTop >= scrollPosition;\n        this.lastScrollTop = scrollPosition;\n        var firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n        var lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n        if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n            this.firstLoaded = firstItemIndex;\n            this.onScrollAction(new ScrollAction(this.rowOffset(firstItemIndex)));\n            this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n            this.onPageAction(new PageAction(this.firstLoaded));\n        }\n        if (up && firstItemIndex <= this.firstLoaded) {\n            var nonVisibleBuffer = Math.floor(this.take * 0.3);\n            this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n            this.onScrollAction(new ScrollAction(this.rowOffset(this.firstLoaded)));\n            this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n            this.onPageAction(new PageAction(this.firstLoaded));\n        }\n    };\n    ScrollerService.prototype.rowOffset = function (index) {\n        return this.rowHeightService.offset(index) + this.topOffset;\n    };\n    ScrollerService.prototype.rowsForHeight = function (height) {\n        return Math.ceil(height / this.rowHeightService.height(0));\n    };\n    return ScrollerService;\n}());\nexport { ScrollerService };\n//# sourceMappingURL=ScrollerService.js.map","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n    /**\n     * The Sunday value with an underlying `0` number value.\n     */\n    Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n    /**\n     * The Monday value with an underlying `1` number value.\n     */\n    Day[Day[\"Monday\"] = 1] = \"Monday\";\n    /**\n     * The Tuesday value with an underlying `2` number value.\n     */\n    Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n    /**\n     * The Wednesday value with an underlying `3` number value.\n     */\n    Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n    /**\n     * The Thursday value with an underlying `4` number value.\n     */\n    Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n    /**\n     * The Friday value with an underlying `5` number value.\n     */\n    Day[Day[\"Friday\"] = 5] = \"Friday\";\n    /**\n     * The Saturday value with an underlying `6` number value.\n     */\n    Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n    var newDate = cloneDate(date);\n    newDate.setDate(newDate.getDate() + offset);\n    return adjustDST(newDate, date.getHours());\n};\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n    /**\n     * The `Forward` value with an underlying `1` number value.\n     */\n    Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n    /**\n     * The `Backward` value with an underlying `-1` (minus one) number value.\n     */\n    Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n    if (direction === void 0) { direction = Direction.Forward; }\n    var newDate = cloneDate(date);\n    var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n    newDate.setDate(newDate.getDate() + newDay);\n    return adjustDST(newDate, date.getHours());\n};\n","/**\n * @hidden\n */\nexport var Action;\n(function (Action) {\n    Action[Action[\"Left\"] = 0] = \"Left\";\n    Action[Action[\"Right\"] = 1] = \"Right\";\n    Action[Action[\"Up\"] = 2] = \"Up\";\n    Action[Action[\"Down\"] = 3] = \"Down\";\n    Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n    Action[Action[\"NextView\"] = 5] = \"NextView\";\n    Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n    Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n    Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n    Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n//# sourceMappingURL=NavigationAction.js.map","/**\n * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n(function (CalendarViewEnum) {\n    CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n    CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n    CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n    CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n//# sourceMappingURL=CalendarViewEnum.js.map","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nvar moveDateToWeekStart = function (date, weekStartDay) {\n    if (weekStartDay !== Day.Monday) {\n        return addDays(prevDayOfWeek(date, weekStartDay), 4);\n    }\n    return addDays(date, (4 - (date.getDay() || 7)));\n};\nvar calcWeekInYear = function (date, weekStartDay) {\n    var firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n    var newDate = moveDateToWeekStart(date, weekStartDay);\n    var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n    var days = Math.floor(diffInMS / MS_PER_DAY);\n    return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport var weekInYear = function (date, weekStartDay) {\n    if (weekStartDay === void 0) { weekStartDay = Day.Monday; }\n    var prevWeekDate = addDays(date, -7);\n    var nextWeekDate = addDays(date, 7);\n    var weekNumber = calcWeekInYear(date, weekStartDay);\n    if (weekNumber === 0) {\n        return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n    }\n    if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n        return 1;\n    }\n    return weekNumber;\n};\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport var prevDayOfWeek = function (date, weekDay) {\n    return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","/**\n * The number of milliseconds in one minute.\n */\nexport var MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport var MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport var MS_PER_DAY = 86400000;\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar compareProps = function (x, y) {\n    var xProps = Object.getOwnPropertyNames(x);\n    var yProps = Object.getOwnPropertyNames(y);\n    if (xProps.length !== yProps.length) {\n        return false;\n    }\n    for (var i = 0; i < xProps.length; i++) {\n        var propName = xProps[i];\n        if (x[propName] !== y[propName]) {\n            return false;\n        }\n    }\n    return true;\n};\n/**\n * The `CalendarCell` component is internally used for rendering the items in the current view. Also be used as a custom `cell` of the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-cell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-cell).\n *\n * * [Customizing the cells inside the Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the cells inside the MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarCell = /** @class */ (function (_super) {\n    __extends(CalendarCell, _super);\n    function CalendarCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        // tslint:enable:max-line-length\n        _this.handleClick = function (event) {\n            var _a = _this.props, onClick = _a.onClick, value = _a.value;\n            if (onClick) {\n                onClick.call(undefined, value, event);\n            }\n        };\n        _this.handleMouseEnter = function () {\n            var _a = _this.props, onMouseEnter = _a.onMouseEnter, value = _a.value;\n            if (onMouseEnter) {\n                onMouseEnter.call(undefined, value);\n            }\n        };\n        _this.handleMouseLeave = function () {\n            var _a = _this.props, onMouseLeave = _a.onMouseLeave, value = _a.value;\n            if (onMouseLeave) {\n                onMouseLeave.call(undefined, value);\n            }\n        };\n        return _this;\n    }\n    // Manually checking if the component needs an update\n    // due to date object being compared by instance\n    // and new Date object is created\n    // every time and fails the shallow compare of the React.PureComponent.\n    /**\n     * @hidden\n     */\n    CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n        var _a = this.props, value = _a.value, props = __rest(_a, [\"value\"]);\n        var newValue = nextProps.value, newProps = __rest(nextProps, [\"value\"]);\n        var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n        return !(valueEqual && compareProps(props, newProps));\n    };\n    // tslint:disable:max-line-length\n    /**\n     * @return\n     * Returns a `<td />` element with a `<span className=\"k-link\" />` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n     */\n    CalendarCell.prototype.render = function () {\n        var _a = this.props, className = _a.className, formattedValue = _a.formattedValue, isWeekend = _a.isWeekend, isFocused = _a.isFocused, isInRange = _a.isInRange, isSelected = _a.isSelected, isRangeStart = _a.isRangeStart, isRangeMid = _a.isRangeMid, isRangeEnd = _a.isRangeEnd, isRangeSplitStart = _a.isRangeSplitStart, isRangeSplitEnd = _a.isRangeSplitEnd, isToday = _a.isToday, isDisabled = _a.isDisabled, view = _a.view, value = _a.value, other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isInRange\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n        var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n        var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n        var rootClassName = classNames({\n            'k-range-end': isRangeEnd,\n            'k-range-mid': isRangeMid,\n            'k-range-split-end': isRangeSplitEnd,\n            'k-range-split-start': isRangeSplitStart,\n            'k-range-start': isRangeStart,\n            'k-state-active': isStartActive || isEndActive,\n            'k-state-pending-focus': isFocused,\n            'k-state-selected': isSelected || isRangeStart || isRangeEnd,\n            'k-today': isToday,\n            'k-weekend': isWeekend,\n            'k-state-disabled': isDisabled\n        }, className);\n        return (React.createElement(\"td\", __assign({}, other, { className: rootClassName, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }),\n            React.createElement(\"span\", { className: \"k-link\" }, this.props.children)));\n    };\n    return CalendarCell;\n}(React.Component));\nexport { CalendarCell };\n//# sourceMappingURL=CalendarCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * The `CalendarWeekCell` component is internally used for rendering the week cells inside the `month` view of the Calendar. Also used as a [custom week cell for the Calendar]({% slug api_dateinputs_calendarprops %}#toc-weekcell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-weekcell) components.\n *\n * * [Customizing week-column cells in the Calendar]({% slug custom_rendering_calendar %}#toc-cells-inside-the-week-column)\n * * [Customizing week-column cells in the MultiViewCalendar]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-week-column)\n */\nvar CalendarWeekCell = /** @class */ (function (_super) {\n    __extends(CalendarWeekCell, _super);\n    function CalendarWeekCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @return\n     * Returns a `<td />` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n     */\n    CalendarWeekCell.prototype.render = function () {\n        return (React.createElement(\"td\", __assign({}, this.props), this.props.children));\n    };\n    return CalendarWeekCell;\n}(React.Component));\nexport { CalendarWeekCell };\n//# sourceMappingURL=CalendarWeekCell.js.map","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = { start: null, end: null };\n//# sourceMappingURL=SelectionRange.js.map","var _a;\n/* tslint:disable:object-literal-sort-keys */\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addDecades(date, -1); },\n    _a[Action.Up] = function (date) { return addDecades(date, -5); },\n    _a[Action.Right] = function (date) { return addDecades(date, 1); },\n    _a[Action.Down] = function (date) { return addDecades(date, 5); },\n    _a[Action.PrevView] = function (date) { return addCenturies(date, -1); },\n    _a[Action.NextView] = function (date) { return addCenturies(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstDecadeOfCentury(date); },\n    _a[Action.LastInView] = function (date) { return lastDecadeOfCentury(date); },\n    _a);\n/**\n * @hidden\n */\nvar CenturyViewService = /** @class */ (function () {\n    function CenturyViewService() {\n    }\n    CenturyViewService.prototype.addToDate = function (min, skip) {\n        return addCenturies(min, skip);\n    };\n    CenturyViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addCenturies(start, i); });\n    };\n    CenturyViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var cells = range(0, CELLS_LENGTH);\n        var firstDate = firstDecadeOfCentury(viewDate);\n        var lastDate = lastDecadeOfCentury(viewDate);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addDecades(baseDate, cellOffset), min, max);\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return {\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isWeekend: false,\n                    isInRange: isInRange(cellDate, min, max),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n            });\n        });\n    };\n    CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    CenturyViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        // TODO: double-check this!\n        return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n    };\n    CenturyViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n    };\n    CenturyViewService.prototype.isInRange = function (candidate, min, max) {\n        var year = firstYearOfDecade(candidate).getFullYear();\n        var aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n        var belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n        return aboveMin && belowMax;\n    };\n    CenturyViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInCenturies(candidate, value) === 0;\n    };\n    CenturyViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 1000 === 0;\n    };\n    CenturyViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    CenturyViewService.prototype.cellTitle = function (value) {\n        return firstYearOfDecade(value).getFullYear().toString();\n    };\n    CenturyViewService.prototype.navigationTitle = function (value) {\n        return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n    };\n    CenturyViewService.prototype.title = function (value) {\n        if (!value) {\n            return '';\n        }\n        return firstDecadeOfCentury(value).getFullYear() + \" - \" + lastDecadeOfCentury(value).getFullYear();\n    };\n    CenturyViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    CenturyViewService.prototype.skip = function (value, min) {\n        return durationInCenturies(min, value);\n    };\n    CenturyViewService.prototype.total = function (min, max) {\n        return durationInCenturies(min, max) + 1;\n    };\n    CenturyViewService.prototype.value = function (current) {\n        return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n    };\n    CenturyViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInCenturies(date, max) < border;\n        return renderTwoViews ? addCenturies(date, -1) : date;\n    };\n    CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return CenturyViewService;\n}());\nexport { CenturyViewService };\n//# sourceMappingURL=CenturyViewService.js.map","var _a;\nimport { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addYears(date, -1); },\n    _a[Action.Up] = function (date) { return addYears(date, -5); },\n    _a[Action.Right] = function (date) { return addYears(date, 1); },\n    _a[Action.Down] = function (date) { return addYears(date, 5); },\n    _a[Action.PrevView] = function (date) { return addDecades(date, -1); },\n    _a[Action.NextView] = function (date) { return addDecades(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstYearOfDecade(date); },\n    _a[Action.LastInView] = function (date) { return lastYearOfDecade(date); },\n    _a);\n/**\n * @hidden\n */\nvar DecadeViewService = /** @class */ (function () {\n    function DecadeViewService() {\n    }\n    DecadeViewService.prototype.addToDate = function (min, skip) {\n        return addDecades(min, skip);\n    };\n    DecadeViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addDecades(start, i); });\n    };\n    DecadeViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var cells = range(0, CELLS_LENGTH);\n        var firstDate = firstYearOfDecade(viewDate);\n        var lastDate = lastYearOfDecade(viewDate);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addYears(baseDate, cellOffset), min, max);\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return {\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isWeekend: false,\n                    isInRange: isInRange(cellDate, min, max),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n            });\n        });\n    };\n    DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    DecadeViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return candidate.getFullYear() === expected.getFullYear();\n    };\n    DecadeViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n    };\n    DecadeViewService.prototype.isInRange = function (candidate, min, max) {\n        var year = candidate.getFullYear();\n        var aboveMin = !min || min.getFullYear() <= year;\n        var belowMax = !max || year <= max.getFullYear();\n        return aboveMin && belowMax;\n    };\n    DecadeViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 100 === 0;\n    };\n    DecadeViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInDecades(candidate, value) === 0;\n    };\n    DecadeViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    DecadeViewService.prototype.cellTitle = function (value) {\n        return value.getFullYear().toString();\n    };\n    DecadeViewService.prototype.navigationTitle = function (value) {\n        return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n    };\n    DecadeViewService.prototype.title = function (value) {\n        if (!value) {\n            return '';\n        }\n        return firstYearOfDecade(value).getFullYear() + \" - \" + lastYearOfDecade(value).getFullYear();\n    };\n    DecadeViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    DecadeViewService.prototype.skip = function (value, min) {\n        return durationInDecades(min, value);\n    };\n    DecadeViewService.prototype.total = function (min, max) {\n        return durationInDecades(min, max) + 1;\n    };\n    DecadeViewService.prototype.value = function (current) {\n        return current ? current.getFullYear().toString() : '';\n    };\n    DecadeViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInDecades(date, max) < border;\n        return renderTwoViews ? addDecades(date, -1) : date;\n    };\n    DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return DecadeViewService;\n}());\nexport { DecadeViewService };\n//# sourceMappingURL=DecadeViewService.js.map","var _a;\nimport { addDays, addWeeks, addMonths, dayOfWeek, durationInMonths, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 7;\nvar ROWS_LENGTH = 6;\nvar SATURDAY = 6;\nvar SUNDAY = 0;\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addDays(date, -1); },\n    _a[Action.Up] = function (date) { return addWeeks(date, -1); },\n    _a[Action.Right] = function (date) { return addDays(date, 1); },\n    _a[Action.Down] = function (date) { return addWeeks(date, 1); },\n    _a[Action.PrevView] = function (date) { return addMonths(date, -1); },\n    _a[Action.NextView] = function (date) { return addMonths(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstDayOfMonth(date); },\n    _a[Action.LastInView] = function (date) { return lastDayOfMonth(date); },\n    _a);\n/**\n * @hidden\n */\nvar MonthViewService = /** @class */ (function () {\n    function MonthViewService(intl) {\n        this.intl = intl;\n    }\n    MonthViewService.prototype.addToDate = function (min, skip) {\n        return addMonths(min, skip);\n    };\n    MonthViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addMonths(start, i); });\n    };\n    MonthViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var firstMonthDate = firstDayOfMonth(viewDate);\n        var lastMonthDate = lastDayOfMonth(viewDate);\n        var backward = -1;\n        var date = dayOfWeek(firstMonthDate, this.intl.firstDay(), backward);\n        var cells = range(0, CELLS_LENGTH);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addDays(date, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addDays(baseDate, cellOffset), min, max);\n                var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n                if (otherMonth) {\n                    return null;\n                }\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                var cell = {\n                    formattedValue: _this.value(cellDate),\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isInRange: isInRange(cellDate, min, max),\n                    isWeekend: _this.isWeekend(cellDate),\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstMonthDate),\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastMonthDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n                return cell;\n            });\n        });\n    };\n    MonthViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return getDate(candidate).getTime() === getDate(expected).getTime();\n    };\n    MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    MonthViewService.prototype.isInArray = function (date, dates) {\n        return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n    };\n    MonthViewService.prototype.isInRange = function (candidate, min, max) {\n        var value = getDate(candidate);\n        var aboveMin = !min || getDate(min) <= value;\n        var belowMax = !max || value <= getDate(max);\n        return aboveMin && belowMax;\n    };\n    MonthViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInMonths(candidate, value) === 0;\n    };\n    MonthViewService.prototype.isRangeStart = function (value) {\n        return !value.getMonth();\n    };\n    MonthViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    MonthViewService.prototype.cellTitle = function (value) {\n        return this.intl.formatDate(value, 'D');\n    };\n    MonthViewService.prototype.navigationTitle = function (value) {\n        if (!value) {\n            return '';\n        }\n        return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n    };\n    MonthViewService.prototype.title = function (current) {\n        return this.wideMonthNames()[current.getMonth()] + \" \" + current.getFullYear();\n    };\n    MonthViewService.prototype.rowLength = function (prependCell) {\n        return CELLS_LENGTH + (prependCell ? 1 : 0);\n    };\n    MonthViewService.prototype.skip = function (value, min) {\n        return durationInMonths(min, value);\n    };\n    MonthViewService.prototype.total = function (min, max) {\n        return durationInMonths(min, max) + 1;\n    };\n    MonthViewService.prototype.value = function (current) {\n        return current ? current.getDate().toString() : '';\n    };\n    MonthViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInMonths(date, max) < border;\n        return renderTwoViews ? addMonths(date, -1) : date;\n    };\n    MonthViewService.prototype.isWeekend = function (date) {\n        var day = date.getDay();\n        return day === SATURDAY || day === SUNDAY;\n    };\n    MonthViewService.prototype.abbrMonthNames = function () {\n        return this.intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n    };\n    MonthViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return getDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return getDate(max);\n        }\n        return cellDate;\n    };\n    MonthViewService.prototype.wideMonthNames = function () {\n        return this.intl.dateFormatNames({ nameType: 'wide', type: 'months' });\n    };\n    return MonthViewService;\n}());\nexport { MonthViewService };\n//# sourceMappingURL=MonthViewService.js.map","var _a;\nimport { addMonths, addYears, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { cloneDate } from '@progress/kendo-react-common';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 3;\nvar upStep = function (month) {\n    if (month > 4) {\n        return -5;\n    }\n    if (month < 2) {\n        return -2;\n    }\n    return -7;\n};\nvar downStep = function (month) {\n    if (month < 7) {\n        return 5;\n    }\n    if (month < 10) {\n        return 7;\n    }\n    return 2;\n};\nvar ACTIONS = (_a = {},\n    _a[Action.Left] = function (date) { return addMonths(date, -1); },\n    _a[Action.Up] = function (date) { return addMonths(date, upStep(date.getMonth())); },\n    _a[Action.Right] = function (date) { return addMonths(date, 1); },\n    _a[Action.Down] = function (date) { return addMonths(date, downStep(date.getMonth())); },\n    _a[Action.PrevView] = function (date) { return addYears(date, -1); },\n    _a[Action.NextView] = function (date) { return addYears(date, 1); },\n    _a[Action.FirstInView] = function (date) { return firstMonthOfYear(date); },\n    _a[Action.LastInView] = function (date) { return lastMonthOfYear(date); },\n    _a);\n/**\n * @hidden\n */\nvar YearViewService = /** @class */ (function () {\n    function YearViewService(intl) {\n        this._intl = intl;\n    }\n    YearViewService.prototype.addToDate = function (min, skip) {\n        return addYears(min, skip);\n    };\n    YearViewService.prototype.datesList = function (start, count) {\n        return range(0, count).map(function (i) { return addYears(start, i); });\n    };\n    YearViewService.prototype.data = function (options) {\n        var _this = this;\n        var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n        if (!viewDate) {\n            return EMPTY_DATA;\n        }\n        var months = this.abbrMonthNames();\n        var firstDate = firstMonthOfYear(viewDate);\n        var lastDate = lastMonthOfYear(viewDate);\n        var currentYear = firstDate.getFullYear();\n        var cells = range(0, CELLS_LENGTH);\n        var today = getToday();\n        return range(0, ROWS_LENGTH).map(function (rowOffset) {\n            var baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n            return cells.map(function (cellOffset) {\n                var cellDate = _this.normalize(addMonths(baseDate, cellOffset), min, max);\n                var changedYear = currentYear < cellDate.getFullYear();\n                if (changedYear) {\n                    return null;\n                }\n                var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n                var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n                var isInMiddle = !isRangeStart && !isRangeEnd;\n                var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n                var isSelected = isActiveView && (!Array.isArray(selectedDate)\n                    ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n                    : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n                return {\n                    formattedValue: months[cellDate.getMonth()],\n                    id: \"\" + cellUID + cellDate.getTime(),\n                    isFocused: _this.isEqual(cellDate, focusedDate),\n                    isSelected: isSelected,\n                    isInRange: isInRange(cellDate, min, max),\n                    isWeekend: false,\n                    isRangeStart: isRangeStart,\n                    isRangeMid: isRangeMid,\n                    isRangeEnd: isRangeEnd,\n                    isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n                    isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n                    isToday: _this.isEqual(cellDate, today),\n                    title: _this.cellTitle(cellDate),\n                    value: cellDate\n                };\n            });\n        });\n    };\n    YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n        var _this = this;\n        var result = false;\n        dates.forEach(function (date) {\n            if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n                result = true;\n            }\n        });\n        return result;\n    };\n    YearViewService.prototype.isEqual = function (candidate, expected) {\n        if (!candidate || !expected) {\n            return false;\n        }\n        return candidate.getFullYear() === expected.getFullYear() &&\n            candidate.getMonth() === expected.getMonth();\n    };\n    YearViewService.prototype.isInArray = function (date, dates) {\n        if (!dates.length) {\n            return false;\n        }\n        var year = date.getFullYear();\n        return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n    };\n    YearViewService.prototype.isInRange = function (candidate, min, max) {\n        var candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n        var aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n        var belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n        return aboveMin && belowMax;\n    };\n    YearViewService.prototype.isInSameView = function (candidate, value) {\n        return durationInYears(candidate, value) === 0;\n    };\n    YearViewService.prototype.isRangeStart = function (value) {\n        return value.getFullYear() % 10 === 0;\n    };\n    YearViewService.prototype.move = function (value, action) {\n        var modifier = ACTIONS[action];\n        if (!modifier) {\n            return value;\n        }\n        return modifier(value);\n    };\n    YearViewService.prototype.cellTitle = function (value) {\n        return value.getFullYear() + \" \" + this.value(value);\n    };\n    YearViewService.prototype.navigationTitle = function (value) {\n        return this.title(value);\n    };\n    YearViewService.prototype.title = function (current) {\n        return current ? current.getFullYear().toString() : '';\n    };\n    YearViewService.prototype.rowLength = function (_) {\n        return CELLS_LENGTH;\n    };\n    YearViewService.prototype.skip = function (value, min) {\n        return durationInYears(min, value);\n    };\n    YearViewService.prototype.total = function (min, max) {\n        return durationInYears(min, max) + 1;\n    };\n    YearViewService.prototype.value = function (current) {\n        return current ? this.abbrMonthNames()[current.getMonth()] : '';\n    };\n    YearViewService.prototype.viewDate = function (date, max, border) {\n        if (border === void 0) { border = 1; }\n        var renderTwoViews = durationInYears(date, max) < border;\n        return renderTwoViews ? addYears(date, -1) : date;\n    };\n    YearViewService.prototype.abbrMonthNames = function () {\n        return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n    };\n    YearViewService.prototype.normalize = function (cellDate, min, max) {\n        if (cellDate < min && this.isEqual(cellDate, min)) {\n            return cloneDate(min);\n        }\n        if (cellDate > max && this.isEqual(cellDate, max)) {\n            return cloneDate(max);\n        }\n        return cellDate;\n    };\n    return YearViewService;\n}());\nexport { YearViewService };\n//# sourceMappingURL=YearViewService.js.map","var _a;\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {},\n    _a[CalendarViewEnum.month] = MonthViewService,\n    _a[CalendarViewEnum.year] = YearViewService,\n    _a[CalendarViewEnum.decade] = DecadeViewService,\n    _a[CalendarViewEnum.century] = CenturyViewService,\n    _a);\nvar viewOffset = function (view, offset) {\n    var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n    return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nvar BusViewService = /** @class */ (function () {\n    function BusViewService(onViewChanged) {\n        this.bottom = CalendarViewEnum.month;\n        this.top = CalendarViewEnum.century;\n        this.onViewChanged = onViewChanged;\n    }\n    BusViewService.prototype.configure = function (bottom, top) {\n        this.bottom = bottom;\n        this.top = top;\n    };\n    BusViewService.prototype.service = function (view, intl) {\n        return new services[\"\" + view](intl);\n    };\n    BusViewService.prototype.moveDown = function (view, event) {\n        this.move(view, -1, event);\n    };\n    BusViewService.prototype.moveUp = function (view, event) {\n        this.move(view, 1, event);\n    };\n    BusViewService.prototype.moveToBottom = function (activeView) {\n        if (activeView === this.bottom) {\n            return;\n        }\n        this.onViewChanged({ view: this.bottom });\n    };\n    BusViewService.prototype.canMoveDown = function (view) {\n        return this.bottom < view;\n    };\n    BusViewService.prototype.canMoveUp = function (view) {\n        return view < this.top;\n    };\n    BusViewService.prototype.clamp = function (view) {\n        if (view < this.bottom) {\n            return this.bottom;\n        }\n        if (view > this.top) {\n            return this.top;\n        }\n        return view;\n    };\n    BusViewService.prototype.move = function (view, offset, event) {\n        var candidate = this.clamp(viewOffset(view, offset));\n        if (candidate === view) {\n            return;\n        }\n        this.onViewChanged({ view: candidate }, event);\n    };\n    return BusViewService;\n}());\nexport { BusViewService };\n//# sourceMappingURL=BusViewService.js.map","import { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { getDate } from '@progress/kendo-date-math';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/SelectionRange';\n/**\n * @hidden\n */\nexport var isEqualRange = function (initial, updated) {\n    var _a = initial || EMPTY_SELECTIONRANGE, initialStart = _a.start, initialEnd = _a.end;\n    var _b = updated || EMPTY_SELECTIONRANGE, updatedStart = _b.start, updatedEnd = _b.end;\n    if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n        return false;\n    }\n    return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\nexport var viewInRange = function (candidate, min, max) {\n    if (min === undefined || max === undefined) {\n        return candidate;\n    }\n    return min <= candidate && candidate <= max\n        ? candidate\n        : candidate < min\n            ? min\n            : max;\n};\n/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\nvar isSet = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isValidRange = function (min, max) { return (!isSet(min) || !isSet(max) || min <= max); };\n/**\n * @hidden\n */\nexport var setTime = function (origin, candidate) {\n    var date = cloneDate(origin);\n    date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n    return date;\n};\n/**\n * @hidden\n */\nexport var getToday = function () { return getDate(new Date()); };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (!candidate || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var isInDateRange = function (candidate, min, max) { return (candidate === null\n    || !((min && getDate(min) > getDate(candidate))\n        || (max && getDate(max) < getDate(candidate)))); };\n/**\n * @hidden\n */\nexport var isInSelectionRange = function (value, selectionRange) {\n    var _a = selectionRange || EMPTY_SELECTIONRANGE, start = _a.start, end = _a.end;\n    if (!start || !end) {\n        return false;\n    }\n    return start < value && value < end;\n};\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n    if (step === void 0) { step = 1; }\n    var result = [];\n    for (var i = start; i < end; i = i + step) {\n        result.push(i);\n    }\n    return result;\n};\n/**\n * @hidden\n */\nexport var shiftWeekNames = function (names, offset) { return (names.slice(offset).concat(names.slice(0, offset))); };\n/**\n * @hidden\n */\nexport var dateInRange = function (candidate, min, max) {\n    if (!candidate) {\n        return candidate;\n    }\n    if (min && candidate < min) {\n        return cloneDate(min);\n    }\n    if (max && candidate > max) {\n        return cloneDate(max);\n    }\n    return candidate;\n};\n/**\n * @hidden\n */\nexport var domContainerFactory = function (type) { return function (children, classes, styles) {\n    if (classes === void 0) { classes = ''; }\n    if (styles === void 0) { styles = {}; }\n    var container = document.createElement(type);\n    container.className = classes;\n    Object.keys(styles).map(function (key) { return container.style[key] = styles[key]; });\n    if (typeof children === 'string') {\n        container.innerHTML = children || '';\n    }\n    else {\n        (children || []).forEach(function (child) { return child && container.appendChild(child); });\n    }\n    return container;\n}; };\n//# sourceMappingURL=utils.js.map","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n    var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n    var newDate = cloneDate(date);\n    var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n    var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n    newDate.setMonth(newDate.getMonth() + offset);\n    return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setYear = function (value, year) {\n    var month = value.getMonth();\n    var candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n    return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport var addYears = function (value, offset) {\n    return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport var addDecades = function (value, offset) {\n    return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport var addCenturies = function (value, offset) {\n    return addYears(value, 100 * offset);\n};\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport var normalizeYear = function (value, year) { return (setYear(value, year(value.getFullYear()))); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport var firstDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100); })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport var lastDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100) + 90; })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport var firstYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10); })); };\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInCenturies = function (start, end) { return ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport var lastYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10) + 9; })); };\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInDecades = function (start, end) { return ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10); };\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport var addWeeks = function (date, offset) {\n    return addDays(date, offset * 7);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n    return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInMonths = function (start, end) { return (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth())); };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setMonth = function (value, month) {\n    var day = value.getDate();\n    var candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n    return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport var firstMonthOfYear = function (value) { return setMonth(value, 0); };\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport var lastMonthOfYear = function (value) { return setMonth(value, 11); };\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInYears = function (start, end) { return (end.getFullYear() - start.getFullYear()); };\n","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n    function DOMService() {\n        this.didCalculate = false;\n    }\n    DOMService.prototype.ensureHeights = function () {\n        if (this.calendarHeight !== undefined) {\n            return;\n        }\n        this.calculateHeights();\n    };\n    DOMService.prototype.calculateHeights = function (container) {\n        var _this = this;\n        if (!canUseDOM) {\n            return;\n        }\n        var div = containerFactory('div');\n        var ul = containerFactory('ul');\n        var li = containerFactory('li');\n        var td = containerFactory('td');\n        var th = containerFactory('th');\n        var tr = containerFactory('tr');\n        var tbody = containerFactory('tbody');\n        var thead = containerFactory('thead');\n        var table = containerFactory('table');\n        var monthHeader = function () { return (div(\"\\n            <span class=\\\"k-calendar-title\\\">March 2017</span>\\n            <span class=\\\"k-calendar-today\\\">TODAY</span>\\n        \", 'k-calendar-header')); };\n        var monthWeekHeader = function () { return (table([\n            thead([\n                tr([th('MO')])\n            ])\n        ], 'k-calendar-weekdays')); };\n        var repeat = function (count, mapper) { return new Array(count).fill('1').map(mapper); };\n        var content = function (rows, cells) {\n            if (cells === void 0) { cells = 1; }\n            return (table([\n                tbody([tr([th('1')])].concat(repeat(rows, function () { return tr(repeat(cells, function (c) { return td(\"<span class=\\\"k-link\\\">\" + c + \"</span>\"); })); })))\n            ]));\n        };\n        var scrollable = function (children) { return div(children, 'k-content k-scrollable'); };\n        var view = function (contentElement, className, renderWeekHeader) { return (div(renderWeekHeader\n            ? [\n                monthHeader(),\n                monthWeekHeader(),\n                scrollable([contentElement, contentElement])\n            ]\n            : [\n                monthHeader(),\n                scrollable([contentElement, contentElement])\n            ], className, { left: '-10000px', position: 'absolute' })); };\n        var navigationList = (function () {\n            var navElement;\n            return function () {\n                if (!canUseDOM) {\n                    return null;\n                }\n                if (!navElement) {\n                    navElement = div([scrollable([ul([li('<span>FEB</span>')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n                }\n                return navElement;\n            };\n        })();\n        var viewFactory = function (_a, className, renderWeekHeader) {\n            var cells = _a.cells, rows = _a.rows;\n            var viewElement;\n            return function () {\n                if (!canUseDOM) {\n                    return null;\n                }\n                if (!viewElement) {\n                    viewElement = view(content(rows, cells), className, renderWeekHeader);\n                }\n                return viewElement;\n            };\n        };\n        var getScrollable = function (element) { return element.querySelector('.k-scrollable'); };\n        var horizontal = function (element) {\n            var scrollableElement = getScrollable(element);\n            scrollableElement.className = scrollableElement.className + \" k-scrollable-horizontal\";\n            return element;\n        };\n        var monthView = viewFactory({ cells: 7, rows: 6 }, 'k-calendar-view k-calendar-monthview', true);\n        var yearView = viewFactory({ cells: 5, rows: 3 }, 'k-calendar-view k-calendar-yearview', false);\n        var decadeView = viewFactory({ cells: 5, rows: 2 }, 'k-calendar-view k-calendar-decadeview', false);\n        var horzMonthView = function () { return horizontal(monthView()); };\n        var horzYearView = function () { return horizontal(yearView()); };\n        var horzDecadeView = function () { return horizontal(decadeView()); };\n        var height = function (element) { return (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight); };\n        var width = function (element) {\n            var styles = window.getComputedStyle(element);\n            var computed = parseFloat(styles.width)\n                + parseFloat(styles.paddingLeft)\n                + parseFloat(styles.paddingRight);\n            return computed || element.offsetWidth;\n        };\n        var getBody = function (element) { return element.querySelector('tbody'); };\n        this.didCalculate = true;\n        if (container) {\n            this.hostContainer = container;\n        }\n        this.batch(monthView(), function (contentElement) {\n            var viewElement = getBody(contentElement);\n            _this.calendarHeight = height(contentElement);\n            _this.monthViewHeight = height(viewElement);\n            _this.headerHeight = height(viewElement.children[0]);\n            _this.scrollableContentHeight = height(getScrollable(contentElement));\n        });\n        this.batch(horzMonthView(), function (contentElement) {\n            var viewElement = getBody(contentElement);\n            _this.calendarWidth = width(contentElement);\n            _this.monthViewWidth = width(viewElement);\n            _this.scrollableContentWidth = width(getScrollable(contentElement));\n        });\n        this.batch(yearView(), function (contentElement) {\n            _this.yearViewHeight = height(getBody(contentElement));\n            _this.scrollableYearContentHeight = height(getScrollable(contentElement));\n        });\n        this.batch(horzYearView(), function (contentElement) {\n            _this.yearViewWidth = width(getBody(contentElement));\n        });\n        this.batch(decadeView(), function (contentElement) {\n            _this.decadeViewHeight = height(getBody(contentElement));\n            _this.centuryViewHeight = _this.decadeViewHeight;\n        });\n        this.batch(horzDecadeView(), function (contentElement) {\n            _this.decadeViewWidth = width(getBody(contentElement));\n            _this.centuryViewWidth = _this.decadeViewWidth;\n        });\n        this.batch(navigationList(), function (contentElement) {\n            _this.navigationItemHeight = height(contentElement.querySelector('li'));\n        });\n    };\n    DOMService.prototype.viewHeight = function (viewType) {\n        return this.viewDimension(viewType, 'height');\n    };\n    DOMService.prototype.viewWidth = function (viewType) {\n        return this.viewDimension(viewType, 'width');\n    };\n    DOMService.prototype.viewDimension = function (viewType, dimension) {\n        var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n        switch (viewType) {\n            case CalendarViewEnum.month:\n                return this[\"month\" + viewProp];\n            case CalendarViewEnum.year:\n                return this[\"year\" + viewProp];\n            case CalendarViewEnum.decade:\n                return this[\"decade\" + viewProp];\n            case CalendarViewEnum.century:\n                return this[\"century\" + viewProp];\n            default:\n                return 1;\n        }\n    };\n    DOMService.prototype.batch = function (contentElement, action) {\n        var hostContainer = this.hostContainer || document.body;\n        var appendedContent = hostContainer.appendChild(contentElement);\n        action(appendedContent);\n        hostContainer.removeChild(appendedContent);\n    };\n    return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=DOMService.js.map","import { Action } from '../models/NavigationAction';\nvar KEY_TO_ACTION = {\n    '33': Action.PrevView,\n    '34': Action.NextView,\n    '35': Action.LastInView,\n    '36': Action.FirstInView,\n    '37': Action.Left,\n    '38': Action.Up,\n    '39': Action.Right,\n    '40': Action.Down,\n    'meta+38': Action.UpperView,\n    'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n    function NavigationService(bus) {\n        this.bus = bus;\n    }\n    NavigationService.prototype.action = function (event) {\n        var action = \"\" + (event.ctrlKey || event.metaKey ? 'meta+' : '') + event.keyCode;\n        return KEY_TO_ACTION[action];\n    };\n    NavigationService.prototype.move = function (value, action, activeView, service, event) {\n        if (!service) {\n            return value;\n        }\n        if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n            this.bus.moveUp(activeView, event);\n            return value;\n        }\n        if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n            this.bus.moveDown(activeView, event);\n            return value;\n        }\n        return service.move(value, action);\n    };\n    return NavigationService;\n}());\nexport { NavigationService };\n//# sourceMappingURL=NavigationService.js.map","var divideByMagnitude = function (magnitude) { return function (x) { return Math.floor(x / magnitude); }; };\nvar powerByMagnitude = function (magnitude) { return function (x) { return x * magnitude; }; };\n/**\n * @hidden\n */\nvar ScrollSyncService = /** @class */ (function () {\n    function ScrollSyncService(dom) {\n        this.dom = dom;\n        this.monthScrolled = false;\n        this.navScrolled = false;\n    }\n    ScrollSyncService.prototype.configure = function (activeView) {\n        var magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n        this.divideByMagnitude = divideByMagnitude(magnitude);\n        this.powerByMagnitude = powerByMagnitude(magnitude);\n    };\n    ScrollSyncService.prototype.sync = function (navigator, view, e) {\n        if (!navigator || !view) {\n            return;\n        }\n        this.navigator = navigator;\n        this.view = view;\n        if (e.target === this.navigator.element) {\n            if (this.monthScrolled) {\n                this.monthScrolled = false;\n                return;\n            }\n            this.navScrolled = true;\n            this.scrollSiblingOf(this.navigator.element);\n        }\n        if (e.target === this.view.element) {\n            if (this.navScrolled) {\n                this.navScrolled = false;\n                return;\n            }\n            this.monthScrolled = true;\n            this.scrollSiblingOf(this.view.element);\n        }\n    };\n    ScrollSyncService.prototype.scrollSiblingOf = function (scrolledElement) {\n        var component = this.siblingComponent(scrolledElement);\n        var scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n        component.scrollTo(scrollTop);\n    };\n    ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n        return this.navigator.element === scrollableElement ? this.view : this.navigator;\n    };\n    ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n        var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n        return modifier(scrollTop);\n    };\n    return ScrollSyncService;\n}());\nexport { ScrollSyncService };\n//# sourceMappingURL=ScrollSyncService.js.map","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\nvar WeekNamesService = /** @class */ (function () {\n    function WeekNamesService(intl) {\n        this.intl = intl;\n    }\n    WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n        if (includeWeekNumber === void 0) { includeWeekNumber = false; }\n        var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n        return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n    };\n    return WeekNamesService;\n}());\nexport { WeekNamesService };\n//# sourceMappingURL=WeekNamesService.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { weekInYear, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { CalendarCell } from './CalendarCell';\nimport { CalendarWeekCell } from './CalendarWeekCell';\nimport { CalendarViewEnum } from '../models';\nimport { setTime, getToday } from '../../utils';\nimport { WeekNamesService } from '../services';\n// tslint:disable-next-line jsx-use-translation-function\nvar emptyCell = function (idx) { return (React.createElement(\"td\", { key: idx }, \"\\u00A0\")); };\n/**\n * @hidden\n */\nvar View = /** @class */ (function (_super) {\n    __extends(View, _super);\n    function View() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.buildWeekNumber = function (row, idx) {\n            var firstDayOfWeek = _this.firstDate(row);\n            if (!firstDayOfWeek) {\n                return emptyCell(\"week-cell-\" + idx);\n            }\n            var weekCellValue = _this.getWeekNumber(_this.firstDate(row));\n            var uniqueID = \"kendo-react-calendar-week-cell-\" + weekCellValue;\n            var cellProps = {\n                className: 'k-alt',\n                value: weekCellValue\n            };\n            return _this.props.weekCell\n                ? React.createElement(_this.props.weekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue)\n                : React.createElement(CalendarWeekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue);\n        };\n        _this.buildRow = function (row) {\n            return row.map(function (cell, idx) {\n                if (!cell) {\n                    return emptyCell(idx);\n                }\n                var aria = { 'aria-selected': cell.isSelected };\n                var uniqueID = \"kendo-react-calendar-cell-\" + cell.value.getTime();\n                var cellProps = __assign({}, aria, cell, { isDisabled: !cell.isInRange, view: _this.props.activeView, onClick: _this.handleClick, onMouseEnter: _this.handleMouseEnter, onMouseLeave: _this.handleMouseLeave });\n                return _this.props.cell\n                    ? (React.createElement(_this.props.cell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue))\n                    : (React.createElement(CalendarCell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue));\n            });\n        };\n        _this.firstDate = function (row) {\n            var cell = _this.firstWeekDateContext(row);\n            return cell ? cell.value : null;\n        };\n        _this.firstWeekDateContext = function (rowCtx) {\n            if (!_this.weekNumber) {\n                return null;\n            }\n            var idx = 0;\n            var ctx = rowCtx[idx];\n            while (!ctx && idx < rowCtx.length) {\n                ctx = rowCtx[++idx];\n            }\n            return ctx;\n        };\n        _this.handleClick = function (value, event) {\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    value: cloneDate(value),\n                    target: _this,\n                    nativeEvent: event && event.nativeEvent,\n                    syntheticEvent: event\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.handleMouseEnter = function (value) {\n            var onCellEnter = _this.props.onCellEnter;\n            if (onCellEnter) {\n                onCellEnter.call(undefined, cloneDate(value));\n            }\n        };\n        _this.handleMouseLeave = function (value) {\n            var onCellLeave = _this.props.onCellLeave;\n            if (onCellLeave) {\n                onCellLeave.call(undefined, cloneDate(value));\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(View.prototype, \"min\", {\n        get: function () {\n            return this.props.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"max\", {\n        get: function () {\n            return this.props.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"isHorizontal\", {\n        get: function () {\n            return this.props.direction === 'horizontal';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"isMonthView\", {\n        get: function () {\n            return this.props.activeView === CalendarViewEnum.month;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"weekNumber\", {\n        get: function () {\n            return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(View.prototype, \"selectedDate\", {\n        get: function () {\n            return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    View.prototype.render = function () {\n        var _this = this;\n        this.intl = provideIntlService(this);\n        this.weekService = new WeekNamesService(this.intl);\n        var weekNames = this.weekService.getWeekNames(this.weekNumber);\n        var colSpan = this.props.service.rowLength(this.weekNumber);\n        var title = this.props.service.title(this.props.viewDate);\n        var time = getToday();\n        var viewDate = setTime(this.props.viewDate, time);\n        var data = this.props.service.data({\n            cellUID: this.props.cellUID,\n            min: this.min,\n            max: this.max,\n            focusedDate: this.props.focusedDate,\n            isActiveView: !this.props.bus.canMoveDown(this.props.activeView),\n            selectedDate: this.selectedDate,\n            selectionRange: this.props.selectionRange,\n            viewDate: viewDate\n        });\n        return (React.createElement(\"tbody\", { role: \"rowgroup\" },\n            !this.isHorizontal && (React.createElement(\"tr\", { role: \"row\" },\n                React.createElement(\"th\", { scope: \"col\", colSpan: colSpan }, title))),\n            (this.isMonthView && this.isHorizontal) && (React.createElement(\"tr\", { role: \"row\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx }, name)); }))),\n            data.map(function (row, idx) {\n                return (React.createElement(\"tr\", { role: \"row\", key: idx },\n                    _this.weekNumber && _this.buildWeekNumber(row, idx),\n                    _this.buildRow(row)));\n            })));\n    };\n    View.prototype.getWeekNumber = function (date) {\n        if (!this.weekNumber) {\n            return null;\n        }\n        return weekInYear(date, this.intl.firstDay());\n    };\n    View.propTypes = {\n        activeRangeEnd: PropTypes.oneOf(['start', 'end', null]),\n        activeView: PropTypes.number.isRequired,\n        cellUID: PropTypes.string.isRequired,\n        direction: PropTypes.oneOf(['horizontal', 'vertical']),\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]),\n        showWeekNumbers: PropTypes.bool,\n        viewDate: PropTypes.instanceOf(Date).isRequired\n    };\n    View.defaultProps = {\n        direction: 'vertical',\n        selectedDate: getToday(),\n        showWeekNumbers: false\n    };\n    return View;\n}(React.Component));\nexport { View };\nregisterForIntl(View);\n//# sourceMappingURL=View.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\n/**\n * The `CalendarHeaderTitle` component is internally used for rendering the title of the current calendar view. Also used as a custom `headerTitle` for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-headertitle) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-headertitle) components.\n *\n * * [Customizing the title for the current Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the title for the current MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarHeaderTitle = /** @class */ (function (_super) {\n    __extends(CalendarHeaderTitle, _super);\n    function CalendarHeaderTitle() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @return\n     * Returns a `<span />` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n     */\n    CalendarHeaderTitle.prototype.render = function () {\n        var _a = this.props, view = _a.view, props = __rest(_a, [\"view\"]);\n        return (React.createElement(\"span\", __assign({}, props), this.props.children));\n    };\n    return CalendarHeaderTitle;\n}(React.PureComponent));\nexport { CalendarHeaderTitle };\n//# sourceMappingURL=CalendarHeaderTitle.js.map","var _a;\n/**\n * @hidden\n */\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[today] = 'TODAY',\n    _a[now] = 'NOW',\n    _a[timePickerSet] = 'Set',\n    _a[timePickerCancel] = 'Cancel',\n    _a[date] = 'Date',\n    _a[time] = 'Time',\n    _a[dateTimePickerCancel] = 'Cancel',\n    _a[dateTimePickerSet] = 'Set',\n    _a[start] = 'Start',\n    _a[end] = 'End',\n    _a[separator] = ' ',\n    _a[selectNow] = 'Select Now',\n    _a[toggleTimeSelector] = 'Toggle TimeSelector',\n    _a[toggleClock] = 'Toggle Clock',\n    _a[increaseValue] = 'Increase value',\n    _a[decreaseValue] = 'Decrease value',\n    _a[toggleCalendar] = 'Toggle calendar',\n    _a[prevView] = 'Navigate to previous view',\n    _a[nextView] = 'Navigate to next view',\n    _a[swapStartEnd] = 'Swap start and end values',\n    _a[toggleDateTimeSelector] = 'Toggle date-time selector',\n    _a);\n//# sourceMappingURL=index.js.map","/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n//# sourceMappingURL=defaults.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { getDate } from '@progress/kendo-date-math';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { messages, today } from '../../messages';\nimport { getToday, isInRange, dateInRange, MAX_DATE } from '../../utils';\nimport { MIN_DATE } from '../../defaults';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n    __extends(Header, _super);\n    function Header() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.getTitle = function () {\n            if (!_this.props.currentDate) {\n                return '';\n            }\n            var take = _this.rangeLength - 1;\n            var title = _this.props.service.title(_this.props.currentDate);\n            var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n            if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n                return title;\n            }\n            return title + \" - \" + _this.props.service.title(nextDate);\n        };\n        _this.handleTitleClick = function (event) {\n            if (!_this.navigate) {\n                return;\n            }\n            _this.props.bus.moveUp(_this.props.activeView, event);\n        };\n        _this.handleTodayClick = function (event) {\n            if (!_this.todayIsInRange) {\n                return;\n            }\n            _this.props.bus.moveToBottom(_this.props.activeView);\n            var onTodayClick = _this.props.onTodayClick;\n            if (onTodayClick) {\n                var args = {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: dateInRange(getToday(), _this.min, _this.max),\n                    target: _this\n                };\n                onTodayClick.call(undefined, args);\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(Header.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : Header.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : Header.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"rangeLength\", {\n        get: function () {\n            return this.props.rangeLength !== undefined ? this.props.rangeLength : Header.defaultProps.rangeLength;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"navigate\", {\n        get: function () {\n            return this.props.bus.canMoveUp(this.props.activeView);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Header.prototype, \"todayIsInRange\", {\n        get: function () {\n            return isInRange(getToday(), getDate(this.min), getDate(this.max));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Header.prototype.render = function () {\n        this.localization = provideLocalizationService(this);\n        var todayMessage = this.localization.toLanguageString(today, messages[today]);\n        var title = this.getTitle();\n        var titleClassNames = classNames('k-button k-bare k-title', {\n            'k-state-disabled': !this.navigate\n        });\n        var todayClassNames = classNames('k-today', {\n            'k-state-disabled': !this.todayIsInRange\n        });\n        var headerTitleProps = {\n            children: title,\n            value: title,\n            view: this.props.activeView,\n            className: titleClassNames,\n            onClick: this.handleTitleClick\n        };\n        var headerTitle = this.props.headerTitle\n            ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title)\n            : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n        return (React.createElement(\"div\", { className: \"k-calendar-header\" },\n            headerTitle,\n            React.createElement(\"span\", { className: todayClassNames, onClick: this.handleTodayClick }, todayMessage)));\n    };\n    Header.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        currentDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onTodayClick: PropTypes.func,\n        rangeLength: PropTypes.number\n    };\n    Header.defaultProps = {\n        rangeLength: 1,\n        min: MIN_DATE,\n        max: MAX_DATE\n    };\n    return Header;\n}(React.Component));\nexport { Header };\nregisterForLocalization(Header);\n//# sourceMappingURL=Header.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../../virtualization/Virtualization';\nimport { View } from './View';\nimport { Header } from './Header';\nimport { dateInRange, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\nvar ViewList = /** @class */ (function (_super) {\n    __extends(ViewList, _super);\n    function ViewList(props) {\n        var _this = _super.call(this, props) || this;\n        _this.isActive = false;\n        _this.animateToIndex = true;\n        _this.shouldScroll = false;\n        _this.focusActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n            var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n            if (focusedCell && focusedCell[0]) {\n                focusedCell[0].classList.remove('k-state-focused');\n            }\n            if (nextActiveCell) {\n                nextActiveCell.classList.add('k-state-focused');\n            }\n            _this.isActive = true;\n        };\n        _this.blurActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n            if (focusedCell) {\n                focusedCell.classList.remove('k-state-focused');\n            }\n            _this.isActive = false;\n        };\n        _this.handleVirtualizationMount = function (virtualization) {\n            _this.virtualization = virtualization;\n            if (_this.virtualization && _this.table) {\n                _this.table.style.transform = \"translateY(\" + _this.viewOffset + \"px)\";\n                var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n                var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n                _this.virtualization.scrollToIndex(indexToScroll);\n            }\n        };\n        _this.buildMonthView = function (cols, weekNames) {\n            return (React.createElement(\"table\", { key: \"calendar-view-list-weekdays\", className: \"k-calendar-weekdays\" },\n                React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n                React.createElement(\"thead\", null,\n                    React.createElement(\"tr\", null, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx }, name)); })))));\n        };\n        _this.buildDates = function (cols, dates) {\n            var cellUID = _this.props.cellUID;\n            return (React.createElement(\"table\", { ref: function (table) { return _this.table = table; } },\n                React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n                dates.map(function (date) { return (React.createElement(View, { ref: function (el) { if (!_this.calendarView) {\n                        _this.calendarView = el;\n                    } }, key: date.getTime(), activeView: _this.props.activeView, viewDate: date, min: _this.props.min, max: _this.props.max, cellUID: cellUID, focusedDate: _this.props.focusedDate, cell: _this.props.cell, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, bus: _this.props.bus, service: _this.props.service, weekCell: _this.props.weekCell })); })));\n        };\n        _this.calculateHeights = function () {\n            if (!_this.props.dom) {\n                return;\n            }\n            var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ?\n                _this.props.dom.scrollableContentHeight :\n                _this.props.dom.scrollableYearContentHeight;\n            _this.bottomOffset = scrollableHeight - _this.props.dom.viewHeight(_this.props.activeView);\n            _this.viewOffset = -1 * _this.props.dom.headerHeight;\n            _this.viewHeight = _this.props.dom.viewHeight(_this.props.activeView) || 1;\n        };\n        _this.getTake = function (skip, total) {\n            return Math.min(total - skip, _this.take);\n        };\n        _this.handleScrollAction = function (_a) {\n            var index = _a.index, scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n            var skip = pageAction ? pageAction.skip : _this.state.skip;\n            if (_this.state.index !== index || _this.state.skip !== skip) {\n                _this.setState({ index: index, skip: skip });\n            }\n            if (_this.table && scrollAction) {\n                var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n                _this.table.style.transform = translate;\n            }\n        };\n        _this.handleTodayClick = function (event) {\n            _this.shouldScroll = true;\n            _this.handleDateChange.call(undefined, event, true);\n        };\n        _this.handleDateChange = function (event, isTodayClick) {\n            if (isTodayClick === void 0) { isTodayClick = false; }\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: cloneDate(event.value),\n                    target: _this,\n                    isTodayClick: isTodayClick\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.lastView = _this.props.activeView;\n        _this.lastFocus = _this.props.focusedDate;\n        _this.state = {\n            skip: _this.props.service.skip(_this.props.focusedDate, _this.props.min),\n            index: _this.props.service.skip(_this.props.focusedDate, _this.props.min)\n        };\n        return _this;\n    }\n    Object.defineProperty(ViewList.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"weekNames\", {\n        get: function () {\n            this.intl = provideIntlService(this);\n            var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n            return this.weekNumber ? [''].concat(weekNames) : weekNames;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"weekNumber\", {\n        get: function () {\n            return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"take\", {\n        get: function () {\n            return this.props.take !== undefined ? this.props.take : ViewList.defaultProps.take;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ViewList.prototype, \"animate\", {\n        get: function () {\n            return Boolean(this.props.smoothScroll && this.animateToIndex);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n        this.shouldScroll = false;\n        if (this.indexToScroll !== undefined && this.virtualization) {\n            this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n        }\n        if (this.isActive) {\n            this.focusActiveDate();\n        }\n        this.lastView = this.props.activeView;\n        // this.lastFocus = this.props.focusedDate;\n        this.indexToScroll = undefined;\n    };\n    ViewList.prototype.render = function () {\n        var _this = this;\n        this.calculateHeights();\n        var didViewChange = this.lastView !== this.props.activeView;\n        var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n        var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n        var total = this.props.service.total(this.props.min, this.props.max);\n        var take = this.getTake(skip, total);\n        var viewDate = this.props.service.addToDate(this.props.min, skip);\n        var activeDate = this.props.service.addToDate(this.props.min, this.state.index);\n        var cols = new Array(this.props.service.rowLength(this.weekNumber)).fill('');\n        var didViewChanged = this.props.activeView !== this.lastView;\n        this.animateToIndex = !didViewChanged;\n        if (didViewChanged\n            || !isEqualDate(this.lastFocus, focusedDate)\n            || this.shouldScroll\n            || (!this.props.shouldScroll || this.props.shouldScroll())) {\n            this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n        }\n        this.lastFocus = focusedDate;\n        var rootClassNames = classNames('k-calendar-view', {\n            'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n            'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n            'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n            'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n        });\n        var dates = this.buildDates(cols, this.props.service.datesList(viewDate, take));\n        var viewListBody = [\n            (React.createElement(Header, { key: \"calendar-view-list-header\", currentDate: activeDate, min: this.props.min, max: this.props.max, activeView: this.props.activeView, onTodayClick: this.handleTodayClick, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle })),\n            (this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames)),\n            (React.createElement(Virtualization, { key: \"calendar-view-list-content\", skip: skip, take: this.take, total: total, itemHeight: this.viewHeight, topOffset: this.viewOffset, bottomOffset: this.bottomOffset, scrollOffsetSize: this.viewOffset, maxScrollDifference: this.viewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, children: dates }))\n        ];\n        return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dom.didCalculate ? viewListBody : null));\n    };\n    ViewList.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        bottomOffset: PropTypes.number,\n        cellUID: PropTypes.string.isRequired,\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        showWeekNumbers: PropTypes.bool,\n        smoothScroll: PropTypes.bool,\n        take: PropTypes.number,\n        value: PropTypes.instanceOf(Date),\n        viewHeight: PropTypes.number,\n        viewOffset: PropTypes.number\n    };\n    ViewList.defaultProps = {\n        take: VIEWS_COUNT,\n        showWeekNumbers: false,\n        smoothScroll: true\n    };\n    return ViewList;\n}(React.Component));\nexport { ViewList };\nregisterForIntl(ViewList);\n//# sourceMappingURL=ViewList.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarNavigationItem` component is internally used for rendering the items in the side navigation of the Calendar. Also used as a custom navigation item for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-navigationitem) ([see example]({% slug custom_rendering_calendar %}#toc-items-in-the-side-navigation)).\n */\nvar CalendarNavigationItem = /** @class */ (function (_super) {\n    __extends(CalendarNavigationItem, _super);\n    function CalendarNavigationItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleClick = function (event) {\n            var _a = _this.props, onClick = _a.onClick, value = _a.value;\n            if (onClick) {\n                onClick.call(undefined, value, event);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @return\n     * Returns a `<li />` element with a `<span />` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n     */\n    CalendarNavigationItem.prototype.render = function () {\n        var _a = this.props, isRangeStart = _a.isRangeStart, value = _a.value, text = _a.text, other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n        return (React.createElement(\"li\", __assign({}, other, { onClick: this.handleClick }),\n            React.createElement(\"span\", { className: classNames({ 'k-calendar-navigation-marker': isRangeStart }) }, this.props.children)));\n    };\n    return CalendarNavigationItem;\n}(React.Component));\nexport { CalendarNavigationItem };\n//# sourceMappingURL=CalendarNavigationItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { CalendarNavigationItem } from './CalendarNavigationItem';\nimport { dateInRange } from '../../utils';\nimport { Virtualization } from '../../virtualization/Virtualization';\nvar ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function (_super) {\n    __extends(Navigation, _super);\n    function Navigation(props) {\n        var _this = _super.call(this, props) || this;\n        _this.topOffset = 0;\n        _this.handleVirtualizationMount = function (virtualization) {\n            _this.virtualization = virtualization;\n            if (_this.virtualization && _this.list) {\n                _this.list.style.transform = \"translateY(\" + _this.topOffset + \"px)\";\n                var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n                var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n                _this.virtualization.scrollToIndex(indexToScroll);\n            }\n        };\n        _this.buildNavigationItem = function (date) {\n            var text = _this.props.service.navigationTitle(date);\n            var isRangeStart = _this.props.service.isRangeStart(date);\n            var uniqueID = \"kendo-react-calendar-nav-item-\" + date.getTime();\n            var navigationItemProps = {\n                text: text,\n                value: date,\n                isRangeStart: isRangeStart,\n                view: _this.props.activeView,\n                onClick: _this.handleDateChange\n            };\n            return _this.props.navigationItem\n                ? (React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text))\n                : (React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text));\n        };\n        _this.calculateHeights = function () {\n            var calendarHeight = _this.props.dom.calendarHeight;\n            _this.itemHeight = _this.props.dom.navigationItemHeight || 1;\n            _this.maxViewHeight = _this.props.dom.monthViewHeight;\n            _this.topOffset = (calendarHeight - _this.itemHeight) / 2;\n            _this.bottomOffset = calendarHeight - _this.itemHeight;\n        };\n        _this.handleDateChange = function (value, event) {\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    value: cloneDate(value),\n                    target: _this,\n                    nativeEvent: event && event.nativeEvent,\n                    syntheticEvent: event\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.handleScrollAction = function (_a) {\n            var scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n            var skip = pageAction ? pageAction.skip : _this.state.skip;\n            if (_this.state.skip !== skip) {\n                _this.setState({ skip: skip });\n            }\n            if (_this.list && scrollAction) {\n                var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n                _this.list.style.transform = translate;\n            }\n        };\n        _this.lastView = _this.props.activeView;\n        _this.lastFocus = _this.props.focusedDate;\n        var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n        var total = _this.props.service.total(_this.props.min, _this.props.max);\n        _this.state = {\n            skip: (skip - _this.getTake(skip, total) > 0) ? skip : 0\n        };\n        return _this;\n    }\n    Object.defineProperty(Navigation.prototype, \"take\", {\n        get: function () {\n            return this.props.take !== undefined\n                ? this.props.take\n                : Navigation.defaultProps.take;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n        if (this.indexToScroll !== undefined && this.virtualization) {\n            this.virtualization.scrollToIndex(this.indexToScroll);\n        }\n        this.lastView = this.props.activeView;\n        this.lastFocus = this.props.focusedDate;\n        this.indexToScroll = undefined;\n    };\n    Navigation.prototype.render = function () {\n        var _this = this;\n        this.calculateHeights();\n        var didViewChange = this.lastView !== this.props.activeView;\n        var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n        var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n        var total = this.props.service.total(this.props.min, this.props.max);\n        var take = this.getTake(skip, total);\n        var viewDate = this.props.service.addToDate(this.props.min, skip);\n        var dates = this.props.service.datesList(viewDate, take);\n        if (this.props.activeView !== this.lastView\n            || !isEqual(focusedDate, this.lastFocus)) {\n            this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n        }\n        var navigationBody = (React.createElement(Virtualization, { skip: skip, take: this.take, total: total, itemHeight: this.itemHeight, topOffset: this.topOffset, bottomOffset: this.bottomOffset, maxScrollDifference: this.maxViewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount },\n            React.createElement(\"ul\", { ref: function (el) { _this.list = el; }, className: \"k-reset\" }, dates.map(function (date) { return (_this.buildNavigationItem(date)); }))));\n        return (React.createElement(\"div\", { className: \"k-calendar-navigation\" },\n            React.createElement(\"span\", { className: \"k-calendar-navigation-highlight\" }),\n            this.props.dom.didCalculate ? navigationBody : null));\n    };\n    Navigation.prototype.getTake = function (skip, total) {\n        return Math.min(total - skip, this.take);\n    };\n    Navigation.propTypes = {\n        activeView: PropTypes.number.isRequired,\n        focusedDate: PropTypes.instanceOf(Date).isRequired,\n        max: PropTypes.instanceOf(Date).isRequired,\n        min: PropTypes.instanceOf(Date).isRequired,\n        onChange: PropTypes.func,\n        take: PropTypes.number\n    };\n    Navigation.defaultProps = {\n        take: ITEMS_COUNT\n    };\n    return Navigation;\n}(React.Component));\nexport { Navigation };\n//# sourceMappingURL=Navigation.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { ViewList } from './ViewList';\nimport { Navigation } from './Navigation';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { CalendarViewEnum } from '../models';\nimport { getToday, dateInRange, isInRange, viewInRange } from '../../utils';\nimport { BusViewService, DOMService, ScrollSyncService, NavigationService } from '../services';\nvar virtualizationProp = function (x) { return x ? x.virtualization : null; };\nvar calculateValue = function (min, max, stateValue, propValue) {\n    if (min === void 0) { min = Calendar.defaultProps.min; }\n    if (max === void 0) { max = Calendar.defaultProps.max; }\n    return propValue !== undefined\n        ? propValue !== null && isInRange(propValue, min, max)\n            ? propValue\n            : null\n        : stateValue !== null && isInRange(stateValue, min, max)\n            ? stateValue\n            : null;\n};\nvar Calendar = /** @class */ (function (_super) {\n    __extends(Calendar, _super);\n    function Calendar(props) {\n        var _this = _super.call(this, props) || this;\n        _this.cellUID = guid();\n        _this.id = guid();\n        _this.isActive = false;\n        _this.didNavigationChange = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        _this.shouldScroll = function () { return _this.didNavigationChange; };\n        _this.handleScroll = function (event) {\n            if (!_this.scrollSyncService) {\n                return;\n            }\n            _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n        };\n        _this.handleNavigationChange = function (event) {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.didNavigationChange = true;\n            var focusedDate = cloneDate(event.value);\n            _this.setState({ focusedDate: focusedDate });\n        };\n        _this.handleViewChange = function (_a) {\n            var view = _a.view;\n            _this.scrollSyncService.configure(view);\n            _this.setState({ activeView: view });\n        };\n        _this.handleDateChange = function (event) {\n            var value = cloneDate(event.value);\n            var focusedDate = cloneDate(event.value);\n            var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n            if (_this.props.disabled) {\n                return;\n            }\n            if (canNavigateDown) {\n                if (event.isTodayClick) {\n                    _this.bus.moveToBottom(_this.state.activeView);\n                }\n                else {\n                    _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n                    _this.setState({ focusedDate: focusedDate });\n                    return;\n                }\n            }\n            _this.setState({ value: value, focusedDate: focusedDate });\n            _this.valueDuringOnChange = value;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: value,\n                    target: _this\n                };\n                onChange.call(undefined, args);\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            _this.isActive = true;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.focusActiveDate();\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.isActive = false;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.blurActiveDate();\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            if (keyCode === Keys.enter) {\n                if (_this.value !== null\n                    && isEqualDate(_this.focusedDate, _this.value)) {\n                    var viewDate = dateInRange(_this.focusedDate, _this.min, _this.max);\n                    virtualizationProp(_this.calendarViewList).scrollToIndex(_this.service.skip(viewDate, _this.min));\n                }\n                var args = {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.focusedDate,\n                    target: _this\n                };\n                _this.handleDateChange.call(undefined, args);\n            }\n            else {\n                var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n                if (isEqualDate(_this.focusedDate, candidate)) {\n                    return;\n                }\n                _this.setState({ focusedDate: candidate });\n            }\n            event.preventDefault();\n        };\n        _this.handleMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleClick = function (_) {\n            if (_this._element) {\n                _this._element.focus({ preventScroll: true });\n            }\n        };\n        var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || Calendar.defaultProps.defaultValue, _this.props.value);\n        _this.state = {\n            value: value,\n            activeView: viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView),\n            focusedDate: dateInRange(props.focusedDate\n                || value\n                || getToday(), _this.min, _this.max)\n        };\n        _this.dom = new DOMService();\n        _this.bus = new BusViewService(_this.handleViewChange);\n        _this.navigation = new NavigationService(_this.bus);\n        _this.oldValue = value;\n        return _this;\n    }\n    Object.defineProperty(Calendar.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the Calendar.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Calendar.prototype, \"value\", {\n        /**\n         * Gets the value of the Calendar.\n         */\n        get: function () {\n            return this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Calendar.prototype, \"min\", {\n        get: function () {\n            return getDate(this.props.min !== undefined\n                ? this.props.min\n                : Calendar.defaultProps.min);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Calendar.prototype, \"max\", {\n        get: function () {\n            return getDate(this.props.max !== undefined\n                ? this.props.max\n                : Calendar.defaultProps.max);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Calendar.prototype, \"bottomView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.bottomView !== undefined\n                ? this.props.bottomView\n                : Calendar.defaultProps.bottomView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Calendar.prototype, \"topView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.topView !== undefined\n                ? this.props.topView\n                : Calendar.defaultProps.topView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Calendar.prototype.componentDidMount = function () {\n        var _this = this;\n        // Async calculation of height to avoid animation cancellation\n        Promise.resolve().then(function () {\n            if (!_this._element) {\n                return;\n            }\n            _this.dom.calculateHeights(_this._element);\n            _this.scrollSyncService = new ScrollSyncService(_this.dom);\n            _this.scrollSyncService.configure(_this.state.activeView);\n            _this.forceUpdate();\n        });\n    };\n    /**\n     * @hidden\n     */\n    Calendar.prototype.componentDidUpdate = function (_, prevState) {\n        if (prevState.activeView !== this.state.activeView) {\n            this.scrollSyncService.configure(this.state.activeView);\n        }\n        if (this.calendarViewList) {\n            this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n        }\n        this.didNavigationChange = false;\n        this.oldValue = this.value;\n    };\n    /**\n     * @hidden\n     */\n    Calendar.prototype.render = function () {\n        var _this = this;\n        if (this.props._ref) {\n            this.props._ref(this);\n        }\n        var didValueChange = this.value !== null && this.oldValue !== null\n            ? !isEqualDate(this.value, this.oldValue)\n            : this.value !== this.oldValue;\n        var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined\n            ? this.props.bottomView\n            : Calendar.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined\n            ? this.props.topView\n            : Calendar.defaultProps.topView]);\n        var value = calculateValue(this.min, this.max, this.value, this.value);\n        var sanitizedValue = value ? getDate(value) : null;\n        this.focusedDate = getDate(dateInRange(didValueChange && value !== null\n            ? value\n            : this.state.focusedDate, this.min, this.max));\n        this.intl = provideIntlService(this);\n        this.bus.configure(this.bottomView, this.topView);\n        this.service = this.bus.service(activeView, this.intl);\n        var rootClassNames = classNames('k-widget k-calendar k-calendar-infinite', {\n            'k-state-disabled': this.props.disabled,\n            'k-week-number': this.props.weekNumber\n        }, this.props.className);\n        var aria = {\n            'aria-disabled': this.props.disabled,\n            'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n        };\n        var calendarBody = [this.props.navigation && (React.createElement(Navigation, { key: 0, ref: function (el) { _this.Navigation = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, onChange: this.handleNavigationChange, service: this.service, dom: this.dom, navigationItem: this.props.navigationItem })), (React.createElement(ViewList, { key: 1, ref: function (el) { _this.calendarViewList = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, shouldScroll: this.shouldScroll, service: this.service, cell: this.props.cell, weekCell: this.props.weekCell, dom: this.dom, smoothScroll: this.props.smoothScroll, showWeekNumbers: this.props.weekNumber, onChange: this.handleDateChange, value: sanitizedValue, cellUID: this.cellUID, headerTitle: this.props.headerTitle }))];\n        return (React.createElement(\"div\", __assign({}, aria, { ref: function (el) { _this._element = el; }, className: rootClassNames, id: this.props.id || this.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, role: \"grid\", tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined, onScroll: this.handleScroll, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onClick: this.handleClick }), calendarBody));\n    };\n    /**\n     * @hidden\n     */\n    Calendar.propTypes = {\n        className: PropTypes.string,\n        defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        navigation: PropTypes.bool,\n        smoothScroll: PropTypes.bool,\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        onFocus: PropTypes.func,\n        tabIndex: PropTypes.number,\n        value: PropTypes.instanceOf(Date),\n        weekNumber: PropTypes.bool,\n        topView: function (props, propName, componentName) {\n            var prop = props[propName];\n            var bottomView = props.bottomView;\n            if (prop && bottomView && CalendarViewEnum[prop] < CalendarViewEnum[bottomView]) {\n                return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n                    \" + propName + \" can not be smaller than bottomView.\\n                    \");\n            }\n        },\n        bottomView: function (props, propName, componentName) {\n            var prop = props[propName];\n            var topView = props.topView;\n            if (prop && topView && CalendarViewEnum[prop] > CalendarViewEnum[topView]) {\n                return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n                    \" + propName + \" can not be bigger than topView.\\n                    \");\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    Calendar.defaultProps = {\n        disabled: false,\n        min: MIN_DATE,\n        max: MAX_DATE,\n        navigation: true,\n        defaultActiveView: 'month',\n        defaultValue: null,\n        smoothScroll: true,\n        topView: 'century',\n        bottomView: 'month'\n    };\n    return Calendar;\n}(React.Component));\nexport { Calendar };\nregisterForIntl(Calendar);\n//# sourceMappingURL=Calendar.js.map","/**\n * @hidden\n */\nvar Mask = /** @class */ (function () {\n    function Mask() {\n        this.symbols = '';\n    }\n    return Mask;\n}());\nexport { Mask };\n//# sourceMappingURL=mask.js.map","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (oldTextOrigin, oldFormat, newTextOrigin, selectionStart) {\n    /*\n      Remove the right part of the cursor.\n      oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n    */\n    var oldTextSeparator = oldTextOrigin[selectionStart + oldTextOrigin.length - newTextOrigin.length];\n    var oldText = oldTextOrigin.substring(0, selectionStart + oldTextOrigin.length - newTextOrigin.length);\n    var newText = newTextOrigin.substring(0, selectionStart);\n    var diff = [];\n    /* Handle the typing of a single character over the same selection. */\n    if (oldText === newText && selectionStart > 0) {\n        diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n        return diff;\n    }\n    if (oldText.indexOf(newText) === 0 &&\n        (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n        /* Handle Delete/Backspace. */\n        var deletedSymbol = '';\n        /*\n            The whole text is replaced by the same character.\n            A nasty patch is required to keep the selection in the first segment.\n        */\n        if (newText.length === 1) {\n            diff.push([oldFormat[0], newText[0]]);\n        }\n        for (var i = newText.length; i < oldText.length; i++) {\n            if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== '_') {\n                deletedSymbol = oldFormat[i];\n                diff.push([deletedSymbol, '']);\n            }\n        }\n        return diff;\n    }\n    /*\n        Handle the insertion of the text (the new text is longer than the previous one).\n        Handle the typing over a literal as well.\n    */\n    if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n        var symbol = oldFormat[0];\n        for (var i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n            if (oldFormat[i] !== '_') {\n                symbol = oldFormat[i];\n                break;\n            }\n        }\n        return [[symbol, newText[selectionStart - 1]]];\n    }\n    /* Handle the entering of a space or a separator for navigating to the next item. */\n    if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n        return [[oldFormat[selectionStart - 1], '_']];\n    }\n    /* Handle typing over a correctly selected part. */\n    return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) { map[part.pattern[0]] = part.type; return map; };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var invalidClasses = ['k-state-invalid'];\n/** @hidden */\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];\n//# sourceMappingURL=utils.js.map","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\nvar KendoDate = /** @class */ (function () {\n    function KendoDate(intlProvider, formatPlaceholder, format) {\n        this.year = true;\n        this.month = true;\n        this.date = true;\n        this.hours = true;\n        this.minutes = true;\n        this.seconds = true;\n        this.milliseconds = true;\n        this.leadingZero = null;\n        this.typedMonthPart = '';\n        this.knownParts = 'adHhmMsEy';\n        this.symbols = {\n            'E': 'E',\n            'H': 'H',\n            'M': 'M',\n            'a': 'a',\n            'd': 'd',\n            'h': 'h',\n            'm': 'm',\n            's': 's',\n            'y': 'y'\n        };\n        this._value = getDate(new Date());\n        this.intlProvider = intlProvider;\n        this.formatPlaceholder = formatPlaceholder;\n        this.format = format;\n        this.monthNames = this.allFormatedMonths();\n    }\n    Object.defineProperty(KendoDate.prototype, \"intl\", {\n        get: function () {\n            return this.intlProvider();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(KendoDate.prototype, \"value\", {\n        get: function () {\n            return this._value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    KendoDate.prototype.setValue = function (value) {\n        if (!value) {\n            this._value = getDate(new Date());\n            this.modifyExisting(false);\n        }\n        else if (!isEqual(value, this._value)) {\n            this._value = cloneDate(value);\n            this.modifyExisting(true);\n        }\n    };\n    KendoDate.prototype.hasValue = function () {\n        var _this = this;\n        var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n        return this.intl.splitDateFormat(this.format).reduce(pred, false);\n    };\n    KendoDate.prototype.getDateObject = function () {\n        for (var i = 0; i < this.knownParts.length; i++) {\n            if (!this.getExisting(this.knownParts[i])) {\n                return null;\n            }\n        }\n        return cloneDate(this.value);\n    };\n    KendoDate.prototype.getTextAndFormat = function () {\n        return this.merge(this.intl.formatDate(this.value, this.format), this.dateFormatString(this.value, this.format));\n    };\n    KendoDate.prototype.modifyExisting = function (value) {\n        var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n        for (var i = 0; i < sampleFormat.length; i++) {\n            this.setExisting(sampleFormat[i], value);\n        }\n    };\n    KendoDate.prototype.getExisting = function (symbol) {\n        switch (symbol) {\n            case 'y': return this.year;\n            case 'M':\n            case 'L': return this.month;\n            case 'd': return this.date;\n            case 'E': return this.date && this.month && this.year;\n            case 'h':\n            case 'H': return this.hours;\n            case 'm': return this.minutes;\n            case 's': return this.seconds;\n            default: return true;\n        }\n    };\n    KendoDate.prototype.setExisting = function (symbol, value) {\n        switch (symbol) {\n            case 'y':\n                // allow 2/29 dates\n                this.year = value;\n                if (value === false) {\n                    this._value.setFullYear(2000);\n                }\n                break;\n            case 'M':\n                // make sure you can type 31 in the day part\n                this.month = value;\n                if (value === false) {\n                    this._value.setMonth(0);\n                }\n                break;\n            case 'd':\n                this.date = value;\n                break;\n            case 'h':\n            case 'H':\n                this.hours = value;\n                break;\n            case 'm':\n                this.minutes = value;\n                break;\n            case 's':\n                this.seconds = value;\n                break;\n            default: return;\n        }\n    };\n    KendoDate.prototype.modifyPart = function (symbol, offset) {\n        var newValue = cloneDate(this.value);\n        switch (symbol) {\n            case 'y':\n                newValue.setFullYear(newValue.getFullYear() + offset);\n                break;\n            case 'M':\n                newValue = addMonths(this.value, offset);\n                break;\n            case 'd':\n            case 'E':\n                newValue.setDate(newValue.getDate() + offset);\n                break;\n            case 'h':\n            case 'H':\n                newValue.setHours(newValue.getHours() + offset);\n                break;\n            case 'm':\n                newValue.setMinutes(newValue.getMinutes() + offset);\n                break;\n            case 's':\n                newValue.setSeconds(newValue.getSeconds() + offset);\n                break;\n            case 'a':\n                newValue.setHours(newValue.getHours() + (12 * offset));\n                break;\n            default: break;\n        }\n        this.setExisting(symbol, true);\n        this._value = newValue;\n    };\n    KendoDate.prototype.parsePart = function (symbol, currentChar) {\n        var _a;\n        this.resetLeadingZero();\n        if (!currentChar) {\n            this.setExisting(symbol, false);\n            return { value: null };\n        }\n        var baseDate = this.intl.formatDate(this.value, this.format);\n        var dateParts = this.dateFormatString(this.value, this.format);\n        var baseFormat = dateParts.symbols;\n        var replaced = false;\n        var prefix = '';\n        var current = '';\n        var suffix = '';\n        for (var i = 0; i < baseDate.length; i++) {\n            if (baseFormat[i] === symbol) {\n                current += this.getExisting(symbol) ? baseDate[i] : '0';\n                replaced = true;\n            }\n            else if (!replaced) {\n                prefix += baseDate[i];\n            }\n            else {\n                suffix += baseDate[i];\n            }\n        }\n        var parsedDate = null;\n        var month = this.matchMonth(currentChar);\n        while (current.length > 0 && current.charAt(0) === '0') {\n            current = current.slice(1);\n        }\n        if (current.length >= 4) {\n            current = '';\n        }\n        for (var i = 0; i < 2; i++) {\n            var middle = current + currentChar;\n            var middleNumber = parseInt(middle, 10);\n            parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n            if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n                if (symbol === 'M' && !month) {\n                    var monthNumber = middleNumber - 1;\n                    if (monthNumber > -1 && monthNumber < 12) {\n                        parsedDate = cloneDate(this.value);\n                        parsedDate.setMonth(monthNumber);\n                        if (parsedDate.getMonth() !== monthNumber) {\n                            parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n                        }\n                    }\n                }\n                if (symbol === 'y') {\n                    parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n                    if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n                        parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n                    }\n                }\n            }\n            if (parsedDate) {\n                this._value = parsedDate;\n                this.setExisting(symbol, true);\n                return { value: this.value };\n            }\n            current = '';\n        }\n        if (month) {\n            parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n            if (parsedDate) {\n                this._value = parsedDate;\n                this.setExisting(symbol, true);\n                return { value: this.value };\n            }\n        }\n        if (currentChar === '0') {\n            this.leadingZero = !this.isAbbrMonth(dateParts.partMap, symbol) ? (_a = {}, _a[symbol] = true, _a) : null;\n            this.setExisting(symbol, false);\n        }\n        return { value: null };\n    };\n    KendoDate.prototype.symbolMap = function (symbol) {\n        return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n    };\n    KendoDate.prototype.resetLeadingZero = function () {\n        var hasLeadingZero = this.leadingZero !== null;\n        this.leadingZero = null;\n        return hasLeadingZero;\n    };\n    KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n        var pattern = this.partPattern(parts, symbol);\n        return pattern.type === 'month' && pattern.names;\n    };\n    KendoDate.prototype.partPattern = function (parts, symbol) {\n        return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n    };\n    KendoDate.prototype.matchMonth = function (typedChar) {\n        this.typedMonthPart += typedChar.toLowerCase();\n        if (this.monthNames.length === 0) {\n            return '';\n        }\n        while (this.typedMonthPart.length > 0) {\n            for (var i = 0; i < this.monthNames.length; i++) {\n                if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n                    return this.monthNames[i];\n                }\n            }\n            var monthAsNum = parseInt(this.typedMonthPart, 10);\n            /* ensure they exact match */\n            if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n                return this.monthNames[monthAsNum - 1];\n            }\n            this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n        }\n        return '';\n    };\n    KendoDate.prototype.allFormatedMonths = function () {\n        var dateFormatParts = this.intl.splitDateFormat(this.format);\n        for (var i = 0; i < dateFormatParts.length; i++) {\n            if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n                return this.intl.dateFormatNames(dateFormatParts[i].names);\n            }\n        }\n        return [];\n    };\n    KendoDate.prototype.dateFormatString = function (date, format) {\n        var dateFormatParts = this.intl.splitDateFormat(format);\n        var parts = [];\n        var partMap = [];\n        for (var i = 0; i < dateFormatParts.length; i++) {\n            var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n            while (partLength > 0) {\n                parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n                partMap.push(dateFormatParts[i]);\n                partLength--;\n            }\n        }\n        var returnValue = new Mask();\n        returnValue.symbols = parts.join('');\n        returnValue.partMap = partMap;\n        return returnValue;\n    };\n    KendoDate.prototype.merge = function (text, mask) {\n        // Important: right to left.\n        var resultText = '';\n        var resultFormat = '';\n        var format = mask.symbols;\n        for (var r = format.length - 1; r >= 0; r--) {\n            if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n                resultText = text[r] + resultText;\n                resultFormat = format[r] + resultFormat;\n            }\n            else {\n                var currentSymbol = format[r];\n                while (r >= 0 && currentSymbol === format[r]) {\n                    r--;\n                }\n                r++;\n                if (this.leadingZero && this.leadingZero[currentSymbol]) {\n                    resultText = '0' + resultText;\n                }\n                else {\n                    resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n                }\n                while (resultFormat.length < resultText.length) {\n                    resultFormat = format[r] + resultFormat;\n                }\n            }\n        }\n        return { text: resultText, format: resultFormat };\n    };\n    KendoDate.prototype.dateFieldName = function (part) {\n        var formatPlaceholder = this.formatPlaceholder || 'wide';\n        if (formatPlaceholder[part.type]) {\n            return formatPlaceholder[part.type];\n        }\n        if (formatPlaceholder === 'formatPattern') {\n            return part.pattern;\n        }\n        return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n    };\n    return KendoDate;\n}());\nexport { KendoDate };\n//# sourceMappingURL=kendo-date.js.map","/**\n * @hidden\n */\nexport var TIME_PART = {\n    dayperiod: 'dayperiod',\n    hour: 'hour',\n    millisecond: 'millisecond',\n    minute: 'minute',\n    second: 'second'\n};\n//# sourceMappingURL=TimePart.js.map","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\nvar setter = function (method) { return function (date, value) {\n    var clone = cloneDate(date);\n    clone[method](value);\n    return clone;\n}; };\nvar defaultGetters = [\n    { type: TIME_PART.hour, getter: function (value) { return value.getHours(); } },\n    { type: TIME_PART.minute, getter: function (value) { return value.getMinutes(); } },\n    { type: TIME_PART.second, getter: function (value) { return value.getSeconds(); } },\n    { type: TIME_PART.millisecond, getter: function (value) { return value.getMilliseconds(); } }\n];\nvar left = function (getter) { return function (origin, _) { return getter(origin); }; };\nvar right = function (getter) { return function (_, candidate) { return getter(candidate); }; };\nvar convertToObject = function (parts) { return parts.reduce(function (obj, p) { obj[p.type] = p.type; return obj; }, {}); };\nvar getterByPart = function (parts) { return function (g) { return parts[g.type] ? right(g.getter) : left(g.getter); }; };\nvar gettersFactory = function (getters) { return function (parts) { return (getters.map(getterByPart(convertToObject(parts)))); }; };\nvar snapValue = function (getter, step, min, type) { return function (date) {\n    var value = getter(date);\n    var minValue = getter(min);\n    if (type === 'hour') {\n        return value - ((value - minValue) % step);\n    }\n    if (date.getTime() <= min.getTime()\n        && value !== 0\n        && value <= minValue) {\n        return (Math.ceil(value / step)) * step;\n    }\n    return value - (value % step);\n}; };\nvar snappersFactory = function (getters) { return function (steps, min) { return (getters.map(function (g) {\n    var step = Math.floor(steps[g.type]);\n    return step ? snapValue(g.getter, step, min, g.type) : g.getter;\n})); }; };\n/**\n * @hidden\n */\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var valueMerger = function (getters) { return function (origin, candidate) {\n    origin.setHours.apply(origin, getters.map(function (g) { return g(origin, candidate); }));\n    return origin;\n}; };\n/**\n * @hidden\n */\nexport var snapTime = function (snappers) { return function (candidate) {\n    var date = cloneDate(candidate);\n    date.setHours.apply(date, snappers.map(function (s) { return s(date); }));\n    return date;\n}; };\n/**\n * @hidden\n */\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport var getNow = function () { return new Date(); };\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n    if (step === void 0) { step = 1; }\n    var result = [];\n    for (var i = start; i < end; i = i + step) {\n        result.push(i);\n    }\n    return result;\n};\nvar normalizeTimes = function (candidate, min, max) { return ({\n    candidateValue: setTime(MIDNIGHT_DATE, candidate),\n    maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ? 0 : 1),\n    minValue: setTime(MIDNIGHT_DATE, min)\n}); };\n/**\n * @hidden\n */\nexport var timeInRange = function (candidate, min, max) {\n    if (!candidate || !min || !max) {\n        return candidate;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    if (candidateValue < minValue) {\n        return setTime(candidate, min);\n    }\n    if (candidateValue > maxValue) {\n        return setTime(candidate, max);\n    }\n    return candidate;\n};\n/**\n * @hidden\n */\nexport var isInTimeRange = function (candidate, min, max) {\n    if (!candidate || !min || !max) {\n        return true;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) {\n    if (candidate === null) {\n        return true;\n    }\n    var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n    return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isSmallerThanMin = function (val, min) {\n    if (val === null || min === null) {\n        return false;\n    }\n    var normalizedValue = setTime(MIDNIGHT_DATE, val);\n    var normalizedMin = setTime(MIDNIGHT_DATE, min);\n    return normalizedValue.getTime() < normalizedMin.getHours();\n};\n/**\n * @hidden\n */\nexport var isBiggerThanMax = function (val, max) {\n    if (val === null || max === null) {\n        return false;\n    }\n    var normalizedValue = setTime(MIDNIGHT_DATE, val);\n    var normalizedMax = setTime(MIDNIGHT_DATE, max);\n    return normalizedMax.getTime() < normalizedValue.getHours();\n};\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { KendoDate } from './models';\nimport { guid, noop, classNames } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, wrapperClasses } from './utils';\nimport { MAX_DATE, MIN_DATE } from './../utils';\nimport { messages, increaseValue, decreaseValue } from './../messages';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME, MAX_TIME } from '../defaults';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\nvar DateInput = /** @class */ (function (_super) {\n    __extends(DateInput, _super);\n    function DateInput() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.kendoDate = null;\n        _this._element = null;\n        _this._wrapper = null;\n        _this._inputId = guid();\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.setValidity = function () {\n            if (_this.element && _this.element.setCustomValidity) {\n                _this.element.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || DateInput.defaultProps.validationMessage);\n            }\n        };\n        /* Handlers */\n        _this.spinnersMouseDown = function (event) {\n            /* do not steal focus from input when changing value with spinners */\n            event.preventDefault();\n            /* manually focus the input in case the user clicks the spinners first */\n            if (_this.element && document.activeElement !== _this.element) {\n                _this.element.focus({ preventScroll: true });\n            }\n        };\n        _this.elementChange = function (event) {\n            if (!_this.element || !_this.kendoDate) {\n                return;\n            }\n            var _a = _this.kendoDate.getTextAndFormat(), text = _a.text, currentFormat = _a.format;\n            _this.currentFormat = currentFormat;\n            var dateBeforeChange = _this.value;\n            var diff = approximateStringMatching(text, _this.currentFormat, _this.element.value, _this.selection.start);\n            var navigationOnly = (diff.length === 1 && diff[0][1] === '_');\n            if (!navigationOnly) {\n                for (var i = 0; i < diff.length; i++) {\n                    _this.kendoDate.parsePart(diff[i][0], diff[i][1]);\n                }\n            }\n            if (diff.length && diff[0][0] !== '_') {\n                _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n            }\n            if (navigationOnly) {\n                _this.switchDateSegment(1);\n            }\n            _this.triggerChange(event, dateBeforeChange);\n        };\n        _this.elementClick = function (_) {\n            _this.setSelection(_this.selectionByIndex(_this.selection.start));\n        };\n        _this.wheel = function (event) {\n            if (document.activeElement !== _this.element) {\n                return;\n            }\n            if (event.nativeEvent.deltaY < 0) {\n                event.preventDefault();\n                _this.increasePart(event);\n            }\n            if (event.nativeEvent.deltaY > 0) {\n                event.preventDefault();\n                _this.decreasePart(event);\n            }\n        };\n        _this.increasePart = function (event) {\n            _this.modifyDateSegmentValue(1, event);\n        };\n        _this.decreasePart = function (event) {\n            _this.modifyDateSegmentValue(-1, event);\n        };\n        _this.elementKeyDown = function (event) {\n            if (event.altKey) {\n                return;\n            }\n            switch (event.keyCode) {\n                case 37:\n                    /*\n                    * Key: `Left Arrow`\n                    * Action: Switches to previous logical* segment.\n                    * (*) https://www.w3.org/International/articles/inline-bidi-markup/uba-basics\n                    */\n                    _this.switchDateSegment(-1);\n                    break;\n                case (38):\n                    /*\n                    * Key: `Up Arrow`\n                    * Action: Increases the currently selected segment value.\n                    */\n                    _this.modifyDateSegmentValue(1, event);\n                    break;\n                case 39:\n                    /*\n                    * Key: `Right Arrow`\n                    * Action: Switches to the next logical segment.\n                    */\n                    _this.switchDateSegment(1);\n                    break;\n                case 40:\n                    /*\n                    * Key: `Down Arrow`\n                    * Action: Decreases the currently selected segment value.\n                    */\n                    _this.modifyDateSegmentValue(-1, event);\n                    break;\n                default:\n                    /*\n                    * Key: any\n                    * Action: Does not prevent the default behavior.\n                    */\n                    return;\n            }\n            event.preventDefault();\n        };\n        _this.elementOnFocus = function (_) {\n            if (_this.wrapper) {\n                _this.wrapper.classList.add('k-state-focused');\n            }\n        };\n        _this.elementOnBlur = function (_) {\n            if (_this.wrapper) {\n                _this.wrapper.classList.remove('k-state-focused');\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    DateInput.prototype.componentDidMount = function () {\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DateInput.prototype.componentDidUpdate = function () {\n        if (this._lastSelectedSymbol) {\n            this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    DateInput.prototype.render = function () {\n        var _this = this;\n        if (this.props._ref) {\n            this.props._ref(this);\n        }\n        var localizationService = provideLocalizationService(this);\n        var props = __assign({}, DateInput.defaultProps, this.props);\n        var formatPlaceholder = props.formatPlaceholder, format = props.format, value = props.value, min = props.min, max = props.max, name = props.name, label = props.label, id = props.id, defaultValue = props.defaultValue;\n        if (this.kendoDate === null) {\n            this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n            this.kendoDate.setValue(value || defaultValue || null);\n        }\n        else {\n            this.kendoDate.format = format;\n            this.kendoDate.formatPlaceholder = formatPlaceholder;\n        }\n        if (value !== undefined && this.value !== value) {\n            this.kendoDate.setValue(value);\n        }\n        var _a = this.kendoDate.getTextAndFormat(), currentText = _a.text, currentFormat = _a.format;\n        this.currentFormat = currentFormat;\n        var inputId = id || this._inputId;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var ariaProps = {\n            'aria-valuemin': min === null ? undefined : min.getTime(),\n            'aria-valuemax': max === null ? undefined : max.getTime(),\n            'aria-valuetext': currentText\n        };\n        if (this.value !== null) {\n            ariaProps['aria-valuenow'] = this.value.getTime();\n        }\n        var wrapperClassesInstance = wrapperClasses.slice();\n        if (this.props.className) {\n            wrapperClassesInstance.push(this.props.className);\n        }\n        var dateinput = (React.createElement(\"span\", { style: !label\n                ? { width: this.props.width }\n                : undefined, dir: this.props.dir, className: wrapperClassesInstance.join(' ') },\n            React.createElement(\"span\", { className: classNames('k-dateinput-wrap', {\n                    'k-state-disabled': this.props.disabled,\n                    'k-state-invalid': !isValid\n                }), ref: function (span) { _this._wrapper = span; }, onFocus: this.elementOnFocus, onBlur: this.elementOnBlur },\n                React.createElement(\"input\", __assign({ role: \"spinbutton\", tabIndex: this.props.tabIndex, disabled: this.props.disabled, title: this.props.title !== undefined ? this.props.title : currentText, type: \"text\", spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input\", id: inputId, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, onWheel: this.wheel, onClick: this.elementClick, onInput: this.elementChange, onKeyDown: this.elementKeyDown, onChange: noop, value: currentText, name: name }, ariaProps, { ref: function (input) { return _this._element = input; } })),\n                this.props.children,\n                this.props.spinners &&\n                    React.createElement(\"span\", { className: \"k-select\", onMouseDown: this.spinnersMouseDown },\n                        React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n                                .toLanguageString(increaseValue, messages[increaseValue]), title: localizationService\n                                .toLanguageString(increaseValue, messages[increaseValue]), onClick: this.increasePart },\n                            React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n                        React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n                                .toLanguageString(decreaseValue, messages[decreaseValue]), title: localizationService\n                                .toLanguageString(decreaseValue, messages[decreaseValue]), onClick: this.decreasePart },\n                            React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" }))))));\n        return label\n            ? (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: currentText, editorValid: isValid, editorDisabled: this.props.disabled, children: dateinput, style: { width: this.props.width } }))\n            : dateinput;\n    };\n    Object.defineProperty(DateInput.prototype, \"value\", {\n        /* Public Getters */\n        /**\n         * Gets the value of the DateInput.\n         */\n        get: function () {\n            if (this.valueDuringOnChange !== undefined) {\n                return this.valueDuringOnChange;\n            }\n            return this.kendoDate && this.kendoDate.getDateObject();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DateInput.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DateInput.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DateInput.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DateInput is set.\n         */\n        get: function () {\n            var inRange = isInRange(this.value, this.min, this.max)\n                && isInTimeRange(this.value, this.props.minTime, this.props.maxTime);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n                rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"element\", {\n        /**\n         * Gets the element of the DateInput.\n         *\n         * @return - An `HTMLInputElement`.\n         *\n         * @example\n         * ```jsx\n         * class App extends React.Component {\n         *     constructor(props) {\n         *         super(props);\n         *     }\n         *     element = null;\n         *     render() {\n         *         return (\n         *             <div>\n         *                 <DateInput\n         *                     ref={(dateInput) =>\n         *                         this.element = dateInput ? dateInput.element : null}\n         *                 />\n         *                 <button onClick={() => console.log(this.element)}>console.log the element</button>\n         *             </div>\n         *         );\n         *     }\n         * }\n         *\n         * ReactDOM.render(\n         *     <App />,\n         *     document.getElementsByTagName('my-app')[0]\n         * );\n         * ```\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DateInput.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DateInput.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateInput.prototype, \"wrapper\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._wrapper;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DateInput.prototype.intl = function () {\n        return provideIntlService(this);\n    };\n    Object.defineProperty(DateInput.prototype, \"selection\", {\n        /*  end handlers */\n        get: function () {\n            var returnValue = { start: 0, end: 0 };\n            if (this.element !== null && this.element.selectionStart !== undefined) {\n                returnValue = { start: this.element.selectionStart, end: this.element.selectionEnd };\n            }\n            return returnValue;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DateInput.prototype.setSelection = function (selection) {\n        var _this = this;\n        this._lastSelectedSymbol = this.currentFormat[selection.start];\n        window.requestAnimationFrame(function () {\n            if (_this.element && document.activeElement === _this.element) {\n                _this.element.setSelectionRange(selection.start, selection.end);\n            }\n        });\n    };\n    DateInput.prototype.triggerChange = function (event, oldValue) {\n        this.valueDuringOnChange = this.value;\n        this.forceUpdate();\n        if (this.props.onChange\n            && !isEqual(oldValue, this.value)) {\n            // isEqual works with null\n            this.props.onChange.call(undefined, {\n                syntheticEvent: event,\n                nativeEvent: event.nativeEvent,\n                value: this.value,\n                target: this\n                // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n            });\n        }\n        this.valueDuringOnChange = undefined;\n    };\n    DateInput.prototype.selectionBySymbol = function (symbol) {\n        var start = -1;\n        var end = 0;\n        for (var i = 0; i < this.currentFormat.length; i++) {\n            if (this.currentFormat[i] === symbol) {\n                end = i + 1;\n                if (start === -1) {\n                    start = i;\n                }\n            }\n        }\n        if (start < 0) {\n            start = 0;\n        }\n        return { start: start, end: end };\n    };\n    DateInput.prototype.selectionByIndex = function (index) {\n        var selection = { start: index, end: index };\n        for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n            if (i < this.currentFormat.length && this.currentFormat[i] !== '_') {\n                selection = this.selectionBySymbol(this.currentFormat[i]);\n                break;\n            }\n            if (j >= 0 && this.currentFormat[j] !== '_') {\n                selection = this.selectionBySymbol(this.currentFormat[j]);\n                break;\n            }\n        }\n        return selection;\n    };\n    DateInput.prototype.switchDateSegment = function (offset) {\n        var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n        if (selectionStart < selectionEnd &&\n            this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n            this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n            return;\n        }\n        var previousFormatSymbol = this.currentFormat[selectionStart];\n        var a = selectionStart + offset;\n        while (a > 0 && a < this.currentFormat.length) {\n            if (this.currentFormat[a] !== previousFormatSymbol &&\n                this.currentFormat[a] !== '_') {\n                break;\n            }\n            a += offset;\n        }\n        if (this.currentFormat[a] === '_') {\n            // no known symbol is found\n            return;\n        }\n        var b = a;\n        while (b >= 0 && b < this.currentFormat.length) {\n            if (this.currentFormat[b] !== this.currentFormat[a]) {\n                break;\n            }\n            b += offset;\n        }\n        if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n            this.setSelection({ start: b + 1, end: a + 1 });\n        }\n        else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n            this.setSelection({ start: a, end: b });\n        }\n    };\n    DateInput.prototype.modifyDateSegmentValue = function (offset, event) {\n        if (!this.kendoDate) {\n            return;\n        }\n        var oldValue = this.value;\n        var symbol = this.currentFormat[this.selection.start];\n        var currentStepSymbol = this.kendoDate.symbolMap(symbol);\n        var step = ((this.props.steps || {})[currentStepSymbol] || 1) * offset;\n        this.kendoDate.modifyPart(symbol, step);\n        this.setSelection(this.selectionBySymbol(symbol));\n        this.triggerChange(event, oldValue);\n    };\n    /**\n     * @hidden\n     */\n    DateInput.propTypes = {\n        value: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        width: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.number\n        ]),\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        steps: PropTypes.shape({\n            year: PropTypes.number,\n            month: PropTypes.number,\n            day: PropTypes.number,\n            hour: PropTypes.number,\n            minute: PropTypes.number,\n            second: PropTypes.number\n        }),\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        spinners: PropTypes.bool,\n        name: PropTypes.string,\n        dir: PropTypes.string,\n        label: PropTypes.string,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        onChange: PropTypes.func,\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DateInput.defaultProps = {\n        format: defaultFormat,\n        formatPlaceholder: defaultFormatPlaceholder,\n        // defaultValue: null as Date | null,\n        spinners: false,\n        disabled: false,\n        max: cloneDate(MAX_DATE),\n        min: cloneDate(MIN_DATE),\n        minTime: cloneDate(MIN_TIME),\n        maxTime: cloneDate(MAX_TIME),\n        required: false,\n        validityStyles: true,\n        validationMessage: VALIDATION_MESSAGE\n        // the rest of the properties are undefined by default\n    };\n    return DateInput;\n}(React.Component));\nexport { DateInput };\nregisterForIntl(DateInput);\nregisterForLocalization(DateInput);\n//# sourceMappingURL=DateInput.js.map","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `toggleButton` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var ToggleButton = React.forwardRef(function (props, ref) {\n    var className = classNames('k-select', props.className);\n    return (React.createElement(\"a\", { ref: ref, id: props.id, role: \"button\", style: props.style, className: className, tabIndex: props.tabIndex, title: props.title, \"aria-label\": props.title, onMouseDown: props.onMouseDown, onClick: props.onClick, onMouseUp: props.onMouseUp }, props.children));\n});\n//# sourceMappingURL=ToggleButton.js.map","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `pickerWrap` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var PickerWrap = React.forwardRef(function (props, ref) {\n    var _ref = props._ref;\n    var element = React.useRef(null);\n    React.useImperativeHandle(ref, function () { return element.current; });\n    React.useImperativeHandle(_ref, function () { return element.current; });\n    var className = React.useMemo(function () { return classNames(props.className, 'k-picker-wrap'); }, [props.className]);\n    return (React.createElement(\"span\", { ref: element, id: props.id, style: props.style, className: className, tabIndex: props.tabIndex }, props.children));\n});\n//# sourceMappingURL=PickerWrap.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getDate, cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { MIN_DATE, MAX_DATE, setTime } from '../utils';\nimport { isInDateRange } from '../utils';\nimport { messages, toggleCalendar } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { ToggleButton } from './ToggleButton';\nimport { PickerWrap } from '../common/PickerWrap';\nvar DatePicker = /** @class */ (function (_super) {\n    __extends(DatePicker, _super);\n    function DatePicker(props) {\n        var _this = _super.call(this, props) || this;\n        _this._popupId = guid();\n        _this._element = null;\n        _this._wrapper = null;\n        _this._dateInput = null;\n        _this._calendar = null;\n        _this.shouldFocusDateInput = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._dateInput) {\n                _this._dateInput.focus();\n            }\n        };\n        // Using this, to avoid bumping the react version\n        // to 16.3 and use `createRef()`;\n        // Inline arrow functions is a performance hit\n        // so... we use this.\n        _this.setDateInputRef = function (dateInput) {\n            _this._dateInput = dateInput;\n        };\n        _this.setCalendarRef = function (calendar) {\n            _this._calendar = calendar;\n        };\n        _this.nextValue = function (nextProps, nextState) {\n            return nextProps.value !== undefined\n                ? nextProps.value\n                : nextState.value;\n        };\n        _this.nextShow = function (nextProps, nextState) {\n            return nextProps.show !== undefined\n                ? nextProps.show\n                : nextState.show;\n        };\n        _this.handleInputValueChange = function (event) {\n            _this.handleValueChange(event.value, event);\n        };\n        _this.handleCalendarValueChange = function (event) {\n            var value = _this.mergeTime(event.value);\n            _this.handleValueChange(value, event);\n        };\n        _this.handleValueChange = function (value, event) {\n            _this.setState({\n                value: cloneDate(value || undefined),\n                show: false\n            });\n            _this.valueDuringOnChange = value;\n            _this.showDuringOnChange = false;\n            _this.shouldFocusDateInput = true;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    show: _this.show,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n            _this.showDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            clearTimeout(_this.nextTickId);\n            if (_this._wrapper) {\n                _this._wrapper.classList.add('k-state-focused');\n            }\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.nextTick(function () {\n                if (_this._wrapper) {\n                    _this._wrapper.classList.remove('k-state-focused');\n                }\n                _this.setShow(false);\n            });\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleIconClick = function () {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.shouldFocusDateInput = true;\n            _this.setShow(!_this.show);\n        };\n        _this.handleIconMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleKeyDown = function (event) {\n            var altKey = event.altKey, keyCode = event.keyCode;\n            if (keyCode === Keys.esc) {\n                _this.setShow(false);\n                return;\n            }\n            if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n                event.preventDefault();\n                event.stopPropagation();\n                _this.shouldFocusDateInput = keyCode === Keys.up;\n                _this.setShow(keyCode === Keys.down);\n            }\n        };\n        _this.state = {\n            value: _this.props.defaultValue || DatePicker.defaultProps.defaultValue,\n            show: _this.props.defaultShow || DatePicker.defaultProps.defaultShow\n        };\n        return _this;\n    }\n    Object.defineProperty(DatePicker.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the DatePicker.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"dateInput\", {\n        /**\n         * Gets the DateInput component inside the DatePicker component.\n         */\n        get: function () {\n            return this._dateInput;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"calendar\", {\n        /**\n         * Gets the Calendar component inside the DatePicker component.\n         */\n        get: function () {\n            return this._calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"value\", {\n        /**\n         * Gets the value of the DatePicker.\n         */\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return (value !== null) ? cloneDate(value) : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"show\", {\n        /**\n         * Gets the popup state of the DatePicker.\n         */\n        get: function () {\n            return this.showDuringOnChange !== undefined\n                ? this.showDuringOnChange\n                : this.props.show !== undefined\n                    ? this.props.show\n                    : this.state.show;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DatePicker.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DatePicker.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DatePicker.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"dateInputComp\", {\n        get: function () {\n            return this.props.dateInput || DatePicker.defaultProps.dateInput;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"toggleButtonComp\", {\n        get: function () {\n            return this.props.toggleButton || DatePicker.defaultProps.toggleButton;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"calendarComp\", {\n        get: function () {\n            return this.props.calendar || DatePicker.defaultProps.calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"popupComp\", {\n        get: function () {\n            return this.props.popup || DatePicker.defaultProps.popup;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"pickerWrapComp\", {\n        get: function () {\n            return this.props.pickerWrap || DatePicker.defaultProps.pickerWrap;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DatePicker is set.\n         */\n        get: function () {\n            var inRange = isInDateRange(this.value, this.min, this.max);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n                rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DatePicker.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DatePicker.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DatePicker.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DatePicker.prototype.componentDidMount = function () {\n        if (this.show) {\n            // If defaultShow is true during the initial render, the popup is not aligned.\n            this.forceUpdate();\n        }\n        if (this._dateInput && this._dateInput.element) {\n            this._dateInput.element.setAttribute('aria-haspopup', 'true');\n            // this._dateInput.element.setAttribute('aria-expanded', `${this.show}`);\n        }\n        if (this.element) {\n            this.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n    };\n    /**\n     * @hidden\n     */\n    DatePicker.prototype.componentDidUpdate = function (prevProps) {\n        if (this.element) {\n            this.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n        if (this._calendar && this._calendar.element && this.show && !prevProps.show) {\n            this._calendar.element.focus({ preventScroll: true });\n        }\n        if (this._dateInput\n            && this._dateInput.element\n            && !this.show\n            && this.shouldFocusDateInput) {\n            this._dateInput.element.focus({ preventScroll: true });\n        }\n        this.shouldFocusDateInput = false;\n    };\n    /**\n     * @hidden\n     */\n    DatePicker.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    DatePicker.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n        var _b = this.props.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n        var show = this.show;\n        var value = this.value;\n        var sanitizedValue = value && getDate(value);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var rootClassName = classNames('k-widget k-datepicker', className);\n        var wrapperClassNames = classNames('k-picker-wrap', {\n            'k-state-default': !disabled && isValid,\n            'k-state-invalid': !isValid,\n            'k-state-disabled': disabled\n        });\n        var popupClassNames = classNames('k-calendar-container k-group k-reset', popupClass);\n        var dateInputProps = {\n            disabled: disabled,\n            format: format,\n            formatPlaceholder: formatPlaceholder,\n            id: id,\n            ariaLabelledBy: ariaLabelledBy,\n            ariaDescribedBy: ariaDescribedBy,\n            max: max,\n            min: min,\n            name: name,\n            onChange: this.handleInputValueChange,\n            required: required,\n            tabIndex: !show ? tabIndex : -1,\n            title: title,\n            valid: this.validity.valid,\n            validationMessage: validationMessage,\n            validityStyles: validityStyles,\n            value: value\n        };\n        var popupProps = __assign({ show: show, anchor: this._wrapper || this._element || undefined, className: popupClassNames, id: this._popupId, anchorAlign: {\n                horizontal: 'left',\n                vertical: 'bottom'\n            }, popupAlign: {\n                horizontal: 'left',\n                vertical: 'top'\n            } }, otherPopupSettings);\n        var calendarProps = {\n            disabled: disabled,\n            value: sanitizedValue,\n            min: min,\n            max: max,\n            weekNumber: weekNumber,\n            focusedDate: focusedDate,\n            onChange: this.handleCalendarValueChange\n        };\n        return (React.createElement(\"span\", { role: \"group\", \"aria-expanded\": this.show, ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            React.createElement(this.pickerWrapComp, { _ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n                React.createElement(this.dateInputComp, __assign({ _ref: this.setDateInputRef }, dateInputProps)),\n                React.createElement(this.toggleButtonComp, { onMouseDown: this.handleIconMouseDown, onClick: this.handleIconClick, title: provideLocalizationService(this)\n                        .toLanguageString(toggleCalendar, messages[toggleCalendar]), className: \"k-select\" },\n                    React.createElement(\"span\", { className: \"k-icon k-i-calendar\" }))),\n            React.createElement(this.popupComp, __assign({}, popupProps),\n                React.createElement(this.calendarComp, __assign({ _ref: this.setCalendarRef }, calendarProps)))));\n    };\n    DatePicker.prototype.setShow = function (show) {\n        if (this.show === show) {\n            return;\n        }\n        this.setState({ show: show });\n    };\n    DatePicker.prototype.mergeTime = function (value) {\n        return this.value && value ? setTime(value, this.value) : value;\n    };\n    DatePicker.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        // Handles multiple focus events happening at the same time.\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    /**\n     * @hidden\n     */\n    DatePicker.propTypes = {\n        className: PropTypes.string,\n        defaultShow: PropTypes.bool,\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        name: PropTypes.string,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.bool,\n            appendTo: PropTypes.any,\n            popupClass: PropTypes.string\n        }),\n        show: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        value: PropTypes.instanceOf(Date),\n        weekNumber: PropTypes.bool,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DatePicker.defaultProps = {\n        defaultShow: false,\n        defaultValue: null,\n        dateInput: DateInput,\n        calendar: Calendar,\n        toggleButton: ToggleButton,\n        popup: Popup,\n        pickerWrap: PickerWrap,\n        disabled: false,\n        format: 'd',\n        max: MAX_DATE,\n        min: MIN_DATE,\n        popupSettings: {},\n        tabIndex: 0,\n        title: '',\n        weekNumber: false,\n        required: false,\n        validityStyles: true\n    };\n    return DatePicker;\n}(React.Component));\nexport { DatePicker };\nregisterForLocalization(DatePicker);\n//# sourceMappingURL=DatePicker.js.map","import { cloneDate } from '@progress/kendo-date-math';\nvar setHours = function (date, hours) {\n    var clone = cloneDate(date);\n    clone.setHours(hours);\n    return clone;\n};\nvar isAM = function (value) { return value !== null && value < 12; };\nvar isPM = function (value) { return value !== null && (!value || value > 11); };\nvar inRange = function (value, min, max) { return ((!min && !max) || (value >= min && value <= max)); };\nvar inReverseRange = function (value, min, max) { return ((!min && !max) || value >= min || value <= max); };\n/**\n * @hidden\n */\nvar DayPeriodService = /** @class */ (function () {\n    function DayPeriodService(intl) {\n        this.intl = intl;\n    }\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.apply = function (value, candidate) {\n        var hour = value.getHours();\n        var hourAM = isAM(hour);\n        var candidateAM = isAM(candidate.getHours());\n        if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n            return value;\n        }\n        var _a = this.normalizedRange(), min = _a[0], _b = _a[1], max = _b === void 0 ? 24 : _b;\n        var result = hour + (candidateAM ? -12 : 12);\n        return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.configure = function (settings) {\n        var _a = settings.min, min = _a === void 0 ? this.min : _a, _b = settings.max, max = _b === void 0 ? this.max : _b, _c = settings.part, part = _c === void 0 ? this.part : _c;\n        this.min = min;\n        this.max = max;\n        this.part = part;\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.data = function (_) {\n        var names = this.part.names;\n        if (!names) {\n            return [];\n        }\n        var data = [];\n        var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n        var dayPeriod = this.intl.dateFormatNames(names);\n        if (isAM(min)) {\n            data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n        }\n        if (isPM(max)) {\n            data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n        }\n        return this.min.getHours() !== min ? data.reverse() : data;\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.isRangeChanged = function (_, __) {\n        return false;\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.limitRange = function (min, max, _) {\n        return [min, max];\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.total = function () {\n        var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n        if (!min && !max) {\n            return 2;\n        }\n        if (min > 11 || max < 12) {\n            return 1;\n        }\n        return 2;\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.selectedIndex = function (value) {\n        if (!this.valueInList(value)) {\n            return -1;\n        }\n        var index = Math.floor(value.getHours() / 12);\n        return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n    };\n    /**\n     * @hidden\n     */\n    DayPeriodService.prototype.valueInList = function (value) {\n        var reverse = this.min.getHours() !== this.normalizedRange()[0];\n        var isInRange = reverse ? inReverseRange : inRange;\n        return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n    };\n    DayPeriodService.prototype.normalizedRange = function () {\n        var minHour = this.min.getHours();\n        var maxHour = this.max.getHours();\n        return [\n            Math.min(minHour, maxHour),\n            Math.max(minHour, maxHour)\n        ];\n    };\n    return DayPeriodService;\n}());\nexport { DayPeriodService };\n//# sourceMappingURL=DayPeriodService.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar _a, _b;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { Keys, noop } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../virtualization/Virtualization';\nimport { TIME_PART } from './models';\nimport { SecondsService, MinutesService, HoursService, DayPeriodService, DOMService } from './services';\nimport { MAX_TIME, MIDNIGHT_DATE } from '../utils';\nvar SCROLL_THRESHOLD = 2; // < 2px threshold\nvar SNAP_THRESHOLD = 0.05; // % of the item height\nvar SKIP = 0;\nvar getters = (_a = {},\n    _a[Keys.end] = function (data, _) { return data[data.length - 1]; },\n    _a[Keys.home] = function (data, _) { return data[0]; },\n    _a[Keys.up] = function (data, index) { return data[index - 1]; },\n    _a[Keys.down] = function (data, index) { return data[index + 1]; },\n    _a);\nvar services = (_b = {},\n    _b[TIME_PART.dayperiod] = DayPeriodService,\n    _b[TIME_PART.hour] = HoursService,\n    _b[TIME_PART.minute] = MinutesService,\n    _b[TIME_PART.second] = SecondsService,\n    _b);\n/**\n * @hidden\n */\nvar TimeList = /** @class */ (function (_super) {\n    __extends(TimeList, _super);\n    function TimeList(props) {\n        var _this = _super.call(this, props) || this;\n        _this.animateToIndex = false;\n        _this.focus = function (args) {\n            Promise.resolve().then(function () {\n                if (!_this.element) {\n                    return;\n                }\n                _this.element.focus(args);\n            });\n        };\n        _this.itemOffset = function (scrollTop) {\n            if (!_this.virtualization) {\n                return -1;\n            }\n            var valueIndex = _this.service.selectedIndex(_this.props.value);\n            var activeIndex = _this.virtualization.activeIndex();\n            var offset = _this.virtualization.itemOffset(activeIndex);\n            var distance = Math.abs(Math.ceil(scrollTop) - offset);\n            if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n                return offset;\n            }\n            var scrollUp = valueIndex > activeIndex;\n            var moveToNext = scrollUp && distance >= _this.bottomThreshold || !scrollUp && distance > _this.topThreshold;\n            return moveToNext ? _this.virtualization.itemOffset(activeIndex + 1) : offset;\n        };\n        _this.calculateHeights = function () {\n            if (!_this.dom.didCalculate) {\n                return;\n            }\n            _this.itemHeight = _this.dom.itemHeight;\n            _this.listHeight = _this.dom.timeListHeight;\n            _this.topOffset = (_this.listHeight - _this.itemHeight) / 2;\n            _this.bottomOffset = _this.listHeight - _this.itemHeight;\n            _this.topThreshold = _this.itemHeight * SNAP_THRESHOLD;\n            _this.bottomThreshold = _this.itemHeight * (1 - SNAP_THRESHOLD);\n        };\n        _this.configureServices = function (_a) {\n            var _b = _a === void 0 ? _this.props : _a, min = _b.min, max = _b.max, value = _b.value;\n            var _c = _this.service.limitRange(min || _this.min, max || _this.max, value || _this.props.value), newMin = _c[0], newMax = _c[1];\n            _this.service.configure(_this.serviceSettings({ min: newMin, max: newMax }));\n        };\n        _this.serviceSettings = function (settings) {\n            var defaults = {\n                boundRange: _this.props.boundRange || TimeList.defaultProps.boundRange,\n                insertUndividedMax: false,\n                min: cloneDate(_this.min),\n                max: cloneDate(_this.max),\n                part: _this.props.part,\n                step: _this.step\n            };\n            var result = Object.assign({}, defaults, settings);\n            result.boundRange = result.part.type !== 'hour' || _this.props.boundRange || TimeList.defaultProps.boundRange;\n            return result;\n        };\n        _this.handleScrollAction = function (_a) {\n            var target = _a.target, animationInProgress = _a.animationInProgress;\n            if (!_this.virtualization) {\n                return;\n            }\n            if (target && !animationInProgress) {\n                _this.animateToIndex = false;\n                var index = _this.virtualization.itemIndex(_this.itemOffset(target.scrollTop));\n                var dataItem = _this.service.data(_this.props.value)[index];\n                _this.handleChange(dataItem);\n            }\n        };\n        _this.handleFocus = function (event) {\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleMouseOver = function () {\n            if (!_this._element) {\n                return;\n            }\n            if (document && document.activeElement !== _this._element) {\n                _this._element.focus({ preventScroll: true });\n            }\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            if (keyCode === Keys.down\n                || keyCode === Keys.up\n                || keyCode === Keys.end\n                || keyCode === Keys.home) {\n                event.preventDefault();\n            }\n            var getter = getters[event.keyCode] || noop;\n            var dataItem = getter(_this.service.data(_this.props.value), _this.service.selectedIndex(_this.props.value));\n            if (dataItem) {\n                _this.handleChange(dataItem);\n            }\n        };\n        _this.handleChange = function (dataItem) {\n            var candidate = _this.service.apply(_this.props.value, dataItem.value);\n            if (_this.props.value.getTime() === candidate.getTime()) {\n                return;\n            }\n            _this.setState({\n                value: candidate\n            });\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, candidate);\n            }\n        };\n        _this.dom = new DOMService();\n        return _this;\n    }\n    Object.defineProperty(TimeList.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeList.prototype, \"animate\", {\n        get: function () {\n            return Boolean(this.props.smoothScroll && this.animateToIndex);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeList.prototype, \"min\", {\n        get: function () {\n            return this.props.min || TimeList.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeList.prototype, \"max\", {\n        get: function () {\n            return this.props.max || TimeList.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeList.prototype, \"step\", {\n        get: function () {\n            return this.props.step !== undefined && this.props.step !== 0\n                ? Math.floor(this.props.step)\n                : TimeList.defaultProps.step;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    TimeList.prototype.componentDidMount = function () {\n        var _this = this;\n        // Async calculation of height to avoid animation cancellation\n        Promise.resolve().then(function () {\n            if (!_this._element) {\n                return;\n            }\n            _this.dom.calculateHeights(_this._element);\n            _this.forceUpdate();\n        });\n    };\n    /**\n     * @hidden\n     */\n    TimeList.prototype.componentDidUpdate = function () {\n        if (!this.virtualization) {\n            return;\n        }\n        var index = this.service.selectedIndex(this.props.value);\n        this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](index);\n        this.animateToIndex = true;\n    };\n    /**\n     * @hidden\n     */\n    TimeList.prototype.render = function () {\n        var _this = this;\n        if (!this.props.part.type || !services[this.props.part.type]) {\n            return;\n        }\n        this.calculateHeights();\n        this.intl = provideIntlService(this);\n        this.service = new services[this.props.part.type](this.intl);\n        this.configureServices();\n        var data = this.service.data(this.props.value);\n        var transform = 'translateY(' + this.topOffset + 'px)';\n        var total = this.service.total(this.props.value);\n        var list = (React.createElement(\"ul\", { style: { transform: transform, msTransform: transform }, className: \"k-reset\" }, data.map(function (item, idx) {\n            return (React.createElement(\"li\", { key: idx, className: \"k-item\", onClick: function () { _this.handleChange(item); } },\n                React.createElement(\"span\", null, item.text)));\n        })));\n        return (React.createElement(\"div\", { className: \"k-time-list\", id: String(this.props.id || ''), tabIndex: this.props.disabled ? -1 : 0, ref: function (el) { _this._element = el; }, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseOver: this.handleMouseOver }, this.dom.didCalculate\n            ? (React.createElement(Virtualization, { bottomOffset: this.bottomOffset, children: list, className: \"k-time-container\", itemHeight: this.itemHeight, maxScrollDifference: this.listHeight, onScrollAction: this.handleScrollAction, ref: function (el) { _this.virtualization = el; }, role: \"presentation\", skip: SKIP, tabIndex: -1, take: total, topOffset: this.topOffset, total: total }))\n            : (React.createElement(\"div\", { className: \"k-time-container\" }, list))));\n    };\n    TimeList.propTypes = {\n        id: PropTypes.number,\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        part: function (props, propName, componentName) {\n            var prop = props[propName];\n            if (!prop || !services[prop.type]) {\n                throw new Error(\"\\n                    Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n                    Supported part types are hour|minute|second|dayperiod.\\n                \");\n            }\n        },\n        step: function (props, propName, componentName) {\n            var prop = props[propName];\n            if (prop !== undefined && prop <= 0) {\n                throw new Error(\"\\n                    Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n                    \" + propName + \" cannot be less than 1.\\n                \");\n            }\n        },\n        value: PropTypes.instanceOf(Date),\n        smoothScroll: PropTypes.bool\n    };\n    TimeList.defaultProps = {\n        boundRange: false,\n        max: MAX_TIME,\n        min: MIDNIGHT_DATE,\n        step: 1,\n        smoothScroll: true\n    };\n    return TimeList;\n}(React.Component));\nexport { TimeList };\nregisterForIntl(TimeList);\n//# sourceMappingURL=TimeList.js.map","import { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n    function DOMService() {\n        this.didCalculate = false;\n    }\n    DOMService.prototype.ensureHeights = function () {\n        if (this.timeListHeight !== undefined) {\n            return;\n        }\n        this.calculateHeights();\n    };\n    DOMService.prototype.calculateHeights = function (container) {\n        if (!canUseDOM) {\n            return;\n        }\n        var div = containerFactory('div');\n        var ul = containerFactory('ul');\n        var li = containerFactory('li');\n        var listItem = function () { return li('<span>02</span>', 'k-item'); };\n        var list = function () { return ul([listItem()], 'k-reset'); };\n        var scrollable = function () { return (div([list()], 'k-time-container k-content k-scrollable')); };\n        var timeListWrapper = function () {\n            return div([div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n        };\n        var timeWrapper = timeListWrapper();\n        var listContainer = container && container.querySelector('.k-time-container');\n        var hostContainer = listContainer || document.body;\n        var wrapper = hostContainer.appendChild(timeWrapper);\n        this.timeListHeight = wrapper.querySelector('.k-scrollable').offsetHeight;\n        this.itemHeight = wrapper.querySelector('li').offsetHeight;\n        hostContainer.removeChild(wrapper);\n        this.didCalculate = true;\n    };\n    return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=DOMService.js.map","import { getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setHours } from '../utils';\nvar HOURS_IN_DAY = 24;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(HOURS_IN_DAY);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(HOURS_IN_DAY + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n    var useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n    return useBarrier ? barrier : setHours(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nvar HoursService = /** @class */ (function () {\n    function HoursService(intl) {\n        this.intl = intl;\n        this.boundRange = false;\n        this.insertUndividedMax = false;\n    }\n    HoursService.prototype.apply = function (value, candidate) {\n        return setHours(value, candidate.getHours());\n    };\n    HoursService.prototype.configure = function (settings) {\n        var _this = this;\n        var _a = settings.boundRange, boundRange = _a === void 0 ? this.boundRange : _a, _b = settings.insertUndividedMax, insertUndividedMax = _b === void 0 ? this.insertUndividedMax : _b, _c = settings.min, min = _c === void 0 ? this.min : _c, _d = settings.max, max = _d === void 0 ? this.max : _d, part = settings.part, _e = settings.step, step = _e === void 0 ? this.step : _e;\n        this.boundRange = boundRange;\n        this.insertUndividedMax = insertUndividedMax;\n        this.toListItem = function (hour) {\n            var date = setHours(MIDNIGHT_DATE, hour);\n            return {\n                text: _this.intl.formatDate(date, part.pattern),\n                value: date\n            };\n        };\n        this.min = min;\n        this.max = max;\n        this.step = step;\n    };\n    HoursService.prototype.data = function (selectedValue) {\n        var _this = this;\n        var min = this.range(selectedValue)[0];\n        var getHour = stepper(min, this.step);\n        var convertToItem = function (idx) { return (_this.toListItem(getHour(idx))); };\n        var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n        this.addLast(data);\n        if (selectedValue) {\n            this.addMissing(data, selectedValue);\n        }\n        return data;\n    };\n    HoursService.prototype.isRangeChanged = function (min, max) {\n        return !isEqual(this.min, min) || !isEqual(this.max, max);\n    };\n    HoursService.prototype.limitRange = function (min, max, value) {\n        return this.boundRange ? [limitDown(min, value), limitUp(max, value)] : [min, max];\n    };\n    HoursService.prototype.total = function (value) {\n        var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n        var missing = this.isMissing(value) ? 1 : 0;\n        return this.countFromMin(value) + missing + last;\n    };\n    HoursService.prototype.selectedIndex = function (value) {\n        return Math.ceil(this.divideByStep(value));\n    };\n    HoursService.prototype.valueInList = function (value) {\n        if (!value) {\n            return true;\n        }\n        var matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n        return matchMax || !this.isMissing(value);\n    };\n    HoursService.prototype.addLast = function (data, value) {\n        if (this.insertUndividedMax && this.isLastMissing(value)) {\n            data.push(this.toListItem(this.lastHour(value)));\n        }\n        return data;\n    };\n    HoursService.prototype.addMissing = function (data, value) {\n        if (this.valueInList(value)) {\n            return data;\n        }\n        var missingItem = this.toListItem(value.getHours());\n        data.splice(this.selectedIndex(value), 0, missingItem);\n        return data;\n    };\n    HoursService.prototype.countFromMin = function (value) {\n        var _a = this.range(value), min = _a[0], max = _a[1];\n        return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n    };\n    HoursService.prototype.isMissing = function (value) {\n        if (!value) {\n            return false;\n        }\n        return this.selectedIndex(value) !== this.divideByStep(value);\n    };\n    HoursService.prototype.isLastMissing = function (value) {\n        return this.isMissing(setHours(this.max, this.lastHour(value)));\n    };\n    HoursService.prototype.divideByStep = function (value) {\n        return distanceFromMin(value.getHours(), this.min.getHours()) / this.step;\n    };\n    HoursService.prototype.lastHour = function (value) {\n        return this.range(value)[1];\n    };\n    HoursService.prototype.range = function (value) {\n        var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n        return [min.getHours(), max.getHours()];\n    };\n    return HoursService;\n}());\nexport { HoursService };\n//# sourceMappingURL=HoursService.js.map","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setMinutes } from '../utils';\nvar MINUTES_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(MINUTES_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(MINUTES_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n    var useBarrier = !value || barrier.getHours() === value.getHours();\n    return useBarrier ? barrier : setMinutes(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar MinutesService = /** @class */ (function () {\n    function MinutesService(intl) {\n        this.intl = intl;\n        this.insertUndividedMax = false;\n    }\n    MinutesService.prototype.apply = function (value, candidate) {\n        return setMinutes(value, candidate.getMinutes());\n    };\n    MinutesService.prototype.configure = function (settings) {\n        var _this = this;\n        var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n        this.insertUndividedMax = insertUndividedMax;\n        this.toListItem = function (minute) {\n            var date = setMinutes(MIDNIGHT_DATE, minute);\n            return {\n                text: _this.intl.formatDate(date, part.pattern),\n                value: date\n            };\n        };\n        this.min = min;\n        this.max = max;\n        this.step = step;\n    };\n    MinutesService.prototype.data = function (selectedValue) {\n        var _this = this;\n        var min = this.range(selectedValue)[0];\n        var getMinute = stepper(min, this.step);\n        var convertToItem = function (idx) { return (_this.toListItem(getMinute(idx))); };\n        var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n        this.addLast(data);\n        if (selectedValue) {\n            this.addMissing(data, selectedValue);\n        }\n        return data;\n    };\n    MinutesService.prototype.isRangeChanged = function (min, max) {\n        return !isEqual(this.min, min) || !isEqual(this.max, max);\n    };\n    MinutesService.prototype.limitRange = function (min, max, value) {\n        return [limitDown(min, value), limitUp(max, value)];\n    };\n    MinutesService.prototype.total = function (value) {\n        var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n        var missing = this.isMissing(value) ? 1 : 0;\n        return this.countFromMin(value) + missing + last;\n    };\n    MinutesService.prototype.selectedIndex = function (value) {\n        return Math.ceil(this.divideByStep(value));\n    };\n    MinutesService.prototype.valueInList = function (value) {\n        if (!value) {\n            return true;\n        }\n        var matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n        return matchMax || !this.isMissing(value);\n    };\n    MinutesService.prototype.addLast = function (data, value) {\n        if (this.insertUndividedMax && this.isLastMissing(value)) {\n            data.push(this.toListItem(this.lastMinute(value)));\n        }\n        return data;\n    };\n    MinutesService.prototype.addMissing = function (data, value) {\n        if (this.valueInList(value)) {\n            return data;\n        }\n        var missingItem = this.toListItem(value.getMinutes());\n        data.splice(this.selectedIndex(value), 0, missingItem);\n        return data;\n    };\n    MinutesService.prototype.countFromMin = function (value) {\n        var _a = this.range(value), min = _a[0], max = _a[1];\n        return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n    };\n    MinutesService.prototype.isMissing = function (value) {\n        if (!value) {\n            return false;\n        }\n        return this.selectedIndex(value) !== this.divideByStep(value);\n    };\n    MinutesService.prototype.isLastMissing = function (value) {\n        return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n    };\n    MinutesService.prototype.divideByStep = function (value) {\n        return distanceFromMin(value.getMinutes(), this.min.getMinutes()) / this.step;\n    };\n    MinutesService.prototype.lastMinute = function (value) {\n        return this.range(value)[1];\n    };\n    MinutesService.prototype.range = function (value) {\n        var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n        return [min.getMinutes(), max.getMinutes()];\n    };\n    return MinutesService;\n}());\nexport { MinutesService };\n//# sourceMappingURL=MinutesService.js.map","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setSeconds } from '../utils';\nvar SECONDS_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(SECONDS_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(SECONDS_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n    var useBarrier = !value ||\n        (barrier.getMinutes() === value.getMinutes() && barrier.getHours() === value.getHours());\n    return useBarrier ? barrier : setSeconds(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar SecondsService = /** @class */ (function () {\n    function SecondsService(intl) {\n        this.intl = intl;\n        this.insertUndividedMax = false;\n    }\n    SecondsService.prototype.apply = function (value, candidate) {\n        return setSeconds(value, candidate.getSeconds());\n    };\n    SecondsService.prototype.configure = function (settings) {\n        var _this = this;\n        var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n        this.insertUndividedMax = insertUndividedMax;\n        this.toListItem = function (minute) {\n            var date = setSeconds(MIDNIGHT_DATE, minute);\n            return {\n                text: _this.intl.formatDate(date, part.pattern),\n                value: date\n            };\n        };\n        this.min = min;\n        this.max = max;\n        this.step = step;\n    };\n    SecondsService.prototype.data = function (selectedValue) {\n        var _this = this;\n        var min = this.range(selectedValue)[0];\n        var getSecond = stepper(min, this.step);\n        var convertToItem = function (idx) { return (_this.toListItem(getSecond(idx))); };\n        var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n        this.addLast(data);\n        if (selectedValue) {\n            this.addMissing(data, selectedValue);\n        }\n        return data;\n    };\n    SecondsService.prototype.isRangeChanged = function (min, max) {\n        return !isEqual(this.min, min) || !isEqual(this.max, max);\n    };\n    SecondsService.prototype.limitRange = function (min, max, value) {\n        return [limitDown(min, value), limitUp(max, value)];\n    };\n    SecondsService.prototype.total = function (value) {\n        var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n        var missing = this.isMissing(value) ? 1 : 0;\n        return this.countFromMin(value) + missing + last;\n    };\n    SecondsService.prototype.selectedIndex = function (value) {\n        return Math.ceil(this.divideByStep(value));\n    };\n    SecondsService.prototype.valueInList = function (value) {\n        if (!value) {\n            return true;\n        }\n        var matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n        return matchMax || !this.isMissing(value);\n    };\n    SecondsService.prototype.divideByStep = function (value) {\n        return distanceFromMin(value.getSeconds(), this.min.getSeconds()) / this.step;\n    };\n    SecondsService.prototype.addLast = function (data, value) {\n        if (this.insertUndividedMax && this.isLastMissing(value)) {\n            data.push(this.toListItem(this.lastSecond(value)));\n        }\n        return data;\n    };\n    SecondsService.prototype.addMissing = function (data, value) {\n        if (this.valueInList(value)) {\n            return data;\n        }\n        var missingItem = this.toListItem(value.getSeconds());\n        data.splice(this.selectedIndex(value), 0, missingItem);\n        return data;\n    };\n    SecondsService.prototype.countFromMin = function (value) {\n        var _a = this.range(value), min = _a[0], max = _a[1];\n        return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n    };\n    SecondsService.prototype.isMissing = function (value) {\n        if (!value) {\n            return false;\n        }\n        return this.selectedIndex(value) !== this.divideByStep(value);\n    };\n    SecondsService.prototype.isLastMissing = function (value) {\n        return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n    };\n    SecondsService.prototype.lastSecond = function (value) {\n        return this.range(value)[1];\n    };\n    SecondsService.prototype.range = function (value) {\n        var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n        return [min.getSeconds(), max.getSeconds()];\n    };\n    return SecondsService;\n}());\nexport { SecondsService };\n//# sourceMappingURL=SecondsService.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, now, selectNow } from '../messages';\nimport { TimeList } from './TimeList';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../utils';\nimport { TIME_PART } from './models/TimePart';\nimport { generateSnappers, getNow, isInTimeRange, snapTime, timeInRange } from './utils';\nvar formatRegExp = new RegExp(TIME_PART.hour + \"|\" + TIME_PART.minute + \"|\" + TIME_PART.second + \"|\" + TIME_PART.dayperiod + \"|literal\");\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n    Direction[Direction[\"Left\"] = 0] = \"Left\";\n    Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimePart = /** @class */ (function (_super) {\n    __extends(TimePart, _super);\n    function TimePart(props) {\n        var _this = _super.call(this, props) || this;\n        _this.timeLists = [];\n        _this.focus = function (args) {\n            Promise.resolve().then(function () {\n                var timeList = _this.timeLists[0];\n                if ((_this.state.activeListIndex === -1) && !_this.hasActiveButton() && timeList && timeList.element) {\n                    timeList.focus(args);\n                }\n            });\n        };\n        _this.timeFormatReducer = function (acc, current) { return acc + current.pattern; };\n        // Filtering only the time part of the format.\n        // Literal types are added if the previous part is\n        // part of a time format.\n        _this.timeFormatFilter = function (part, index, all) {\n            var prevItem = index >= 1 && all[index - 1];\n            if (!prevItem) {\n                return formatRegExp.test(part.type || '');\n            }\n            if (prevItem && part.type === 'literal') {\n                return formatRegExp.test(prevItem.type || '');\n            }\n            return formatRegExp.test(part.type || '');\n        };\n        _this.focusList = function (dir) {\n            if (!_this.timeLists.length) {\n                return;\n            }\n            _this.timeLists.reduce(_this.listReducer, ([]))\n                .map(function (state) { return dir === Direction.Right ? state.next : state.prev; })\n                .map(function (list) { return list && list.element && list.element.focus({ preventScroll: true }); });\n        };\n        _this.listReducer = function (state, list, idx, all) {\n            if (state.length || list.props.id !== _this.state.activeListIndex) {\n                return state;\n            }\n            return [{\n                    next: all[idx + 1] || list,\n                    prev: all[idx - 1] || list\n                }];\n        };\n        _this.showNowButton = function () {\n            return !_this.hasSteps() && _this.props.nowButton && isInTimeRange(getNow(), _this.min, _this.max);\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            switch (keyCode) {\n                case Keys.left:\n                    event.preventDefault();\n                    _this.focusList(Direction.Left);\n                    return;\n                case Keys.right:\n                    event.preventDefault();\n                    _this.focusList(Direction.Right);\n                    return;\n                default:\n                    return;\n            }\n        };\n        _this.handleListBlur = function () {\n            _this.nextTick(function () {\n                _this.setState({ activeListIndex: -1 });\n            });\n        };\n        _this.handleListFocus = function (idx) {\n            clearTimeout(_this.nextTickId);\n            _this.setState({\n                activeListIndex: idx\n            });\n        };\n        _this.handleChange = function (candidate) {\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, candidate);\n            }\n        };\n        _this.snapTime = snapTime(generateSnappers(_this.props.steps, _this.props.min || TimePart.defaultProps.min));\n        _this.state = {\n            activeListIndex: -1\n        };\n        _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n        return _this;\n    }\n    Object.defineProperty(TimePart.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"value\", {\n        get: function () {\n            return timeInRange(this.snapTime(cloneDate(this.props.value || MIDNIGHT_DATE)), this.min, this.max);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"intl\", {\n        get: function () {\n            return provideIntlService(this);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"min\", {\n        get: function () {\n            return this.snapTime(this.props.min || TimePart.defaultProps.min);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"max\", {\n        get: function () {\n            return this.snapTime(this.props.max || TimePart.defaultProps.max);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"steps\", {\n        get: function () {\n            return this.props.steps || TimePart.defaultProps.steps;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePart.prototype, \"boundRange\", {\n        get: function () {\n            return this.props.boundRange !== undefined\n                ? this.props.boundRange\n                : TimePart.defaultProps.boundRange;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    TimePart.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    TimePart.prototype.componentDidMount = function () {\n        var onMount = this.props.onMount;\n        if (onMount) {\n            onMount.call(undefined, this.value);\n        }\n    };\n    /**\n     * @hidden\n     */\n    TimePart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, format = _a.format, smoothScroll = _a.smoothScroll, onNowClick = _a.onNowClick, className = _a.className, disabled = _a.disabled;\n        this.snapTime = snapTime(generateSnappers(this.steps, this.min));\n        this.dateFormatParts = this.intl\n            .splitDateFormat(format || TimePart.defaultProps.format)\n            .filter(this.timeFormatFilter);\n        var rootClassName = classNames({\n            'k-state-disabled': disabled\n        }, className, 'k-time-part');\n        this.timeLists = [];\n        var localizationService = provideLocalizationService(this);\n        var selectNowMessage = localizationService.toLanguageString(selectNow, messages[selectNow]);\n        return (React.createElement(\"div\", { className: rootClassName },\n            React.createElement(\"div\", { className: \"k-time-header\" },\n                React.createElement(\"span\", { className: \"k-title\" }, this.intl.formatDate(this.value, this.dateFormatParts.reduce(this.timeFormatReducer, ''))),\n                this.showNowButton() &&\n                    React.createElement(\"button\", __assign({ ref: function (btn) { _this._nowButton = btn; }, className: \"k-button k-bare k-time-now\", title: selectNowMessage }, { 'aria-label': selectNowMessage }, { onClick: onNowClick, tabIndex: disabled ? -1 : 0 }), localizationService.toLanguageString(now, messages[now]))),\n            React.createElement(\"div\", { className: \"k-time-list-container\", onKeyDown: this.handleKeyDown },\n                React.createElement(\"span\", { className: \"k-time-highlight\" }),\n                this.dateFormatParts.map(function (part, idx) {\n                    return (part.type !== 'literal'\n                        ? React.createElement(\"div\", { key: idx, className: classNames('k-time-list-wrapper', {\n                                'k-state-focused': idx === _this.state.activeListIndex\n                            }), role: \"presentation\", tabIndex: -1 },\n                            React.createElement(\"span\", { className: \"k-title\", onMouseDown: function (e) { e.preventDefault(); } }, _this.intl.dateFieldName(part)),\n                            React.createElement(TimeList, { min: _this.min, max: _this.max, boundRange: _this.boundRange, part: part, step: part.type ? _this.steps[part.type] : 1, smoothScroll: smoothScroll, ref: function (el) { if (!el) {\n                                    return;\n                                } _this.timeLists.push(el); }, id: idx, onFocus: function () { _this.handleListFocus(idx); }, onBlur: _this.handleListBlur, onChange: _this.handleChange, value: _this.value, disabled: disabled }))\n                        : React.createElement(\"div\", { key: idx, className: \"k-time-separator\" }, part.pattern));\n                }))));\n    };\n    TimePart.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    TimePart.prototype.hasActiveButton = function () {\n        return document.activeElement === this._nowButton;\n    };\n    TimePart.prototype.hasSteps = function () {\n        var _this = this;\n        var keys = Object.keys(this.steps);\n        return keys.length !== keys.reduce(function (acc, k) { return acc + _this.steps[k]; }, 0);\n    };\n    TimePart.propTypes = {\n        cancelButton: PropTypes.bool,\n        disabled: PropTypes.bool,\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        nowButton: PropTypes.bool,\n        steps: PropTypes.shape({\n            hour: PropTypes.number,\n            minute: PropTypes.number,\n            second: PropTypes.number\n        }),\n        smoothScroll: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        value: PropTypes.instanceOf(Date)\n    };\n    TimePart.defaultProps = {\n        value: null,\n        disabled: false,\n        nowButton: true,\n        cancelButton: true,\n        format: 'hh:mm a',\n        min: MIN_TIME,\n        max: MAX_TIME,\n        steps: {},\n        boundRange: false\n    };\n    return TimePart;\n}(React.Component));\nexport { TimePart };\nregisterForIntl(TimePart);\nregisterForLocalization(TimePart);\n//# sourceMappingURL=TimePart.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, timePickerCancel, timePickerSet } from '../messages';\nimport { MIN_TIME, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nimport { generateGetters, getNow, valueMerger } from './utils';\nimport { TimePart } from './TimePart';\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n    Direction[Direction[\"Left\"] = 0] = \"Left\";\n    Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimeSelector = /** @class */ (function (_super) {\n    __extends(TimeSelector, _super);\n    function TimeSelector(props) {\n        var _this = _super.call(this, props) || this;\n        _this.focusActiveList = function () {\n            if (!_this.timePart) {\n                return;\n            }\n            _this.timePart.focus({ preventScroll: true });\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            switch (keyCode) {\n                case Keys.enter:\n                    if (!_this.hasActiveButton()) {\n                        _this.handleAccept(event);\n                    }\n                    return;\n                default:\n                    return;\n            }\n        };\n        _this.handleAccept = function (event) {\n            var value = _this.mergeValue(cloneDate(_this.value || getNow()), _this.timePart ? _this.timePart.value : _this.current);\n            _this.setState({ value: value });\n            _this.valueDuringOnChange = value;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        _this.handleReject = function (event) {\n            _this.setState({ current: _this.value });\n            var onReject = _this.props.onReject;\n            if (onReject) {\n                onReject.call(undefined, event);\n            }\n        };\n        _this.handleNowClick = function (event) {\n            var now = _this.mergeValue(cloneDate(_this.value || getNow()), getNow());\n            _this.setState({\n                current: now,\n                value: now\n            });\n            _this.valueDuringOnChange = now;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        _this.handleChange = function (candidate) {\n            _this.setState({ current: candidate });\n        };\n        _this.dateFormatParts = _this.intl.splitDateFormat(_this.props.format || TimeSelector.defaultProps.format);\n        _this.mergeValue = valueMerger(generateGetters(_this.dateFormatParts));\n        _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n        _this.state = {\n            current: _this.props.value || MIDNIGHT_DATE,\n            value: _this.props.value || TimeSelector.defaultProps.value\n        };\n        return _this;\n    }\n    Object.defineProperty(TimeSelector.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSelector.prototype, \"value\", {\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return (value !== null)\n                ? cloneDate(value)\n                : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSelector.prototype, \"intl\", {\n        get: function () {\n            return provideIntlService(this);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimeSelector.prototype, \"current\", {\n        get: function () {\n            return this.state.current !== null\n                ? cloneDate(this.state.current)\n                : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    TimeSelector.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    TimeSelector.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, format = _a.format, cancelButton = _a.cancelButton, disabled = _a.disabled, tabIndex = _a.tabIndex, className = _a.className, smoothScroll = _a.smoothScroll, min = _a.min, max = _a.max, boundRange = _a.boundRange, nowButton = _a.nowButton, steps = _a.steps;\n        var localizationService = provideLocalizationService(this);\n        var cancelMessage = localizationService.toLanguageString(timePickerCancel, messages[timePickerCancel]);\n        var setMessage = localizationService.toLanguageString(timePickerSet, messages[timePickerSet]);\n        return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, tabIndex: !disabled ? tabIndex || 0 : undefined, className: classNames('k-timeselector k-reset', className, {\n                'k-state-disabled': disabled\n            }), onKeyDown: this.handleKeyDown },\n            React.createElement(TimePart, { ref: function (el) { _this.timePart = el; }, value: this.current, onChange: this.handleChange, onNowClick: this.handleNowClick, format: format, smoothScroll: smoothScroll, min: min, max: max, boundRange: boundRange, disabled: disabled, nowButton: nowButton, steps: steps }),\n            React.createElement(\"div\", { className: \"k-time-footer k-action-buttons\" },\n                cancelButton &&\n                    React.createElement(\"button\", __assign({ ref: function (btn) { _this._cancelButton = btn; }, className: \"k-button k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n                React.createElement(\"button\", __assign({ ref: function (btn) { _this._acceptButton = btn; }, className: \"k-time-accept k-button k-primary\", onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n    };\n    TimeSelector.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    TimeSelector.prototype.hasActiveButton = function () {\n        if (!this._acceptButton) {\n            return false;\n        }\n        return document.activeElement === this._acceptButton\n            || document.activeElement === this._cancelButton;\n    };\n    TimeSelector.propTypes = {\n        cancelButton: PropTypes.bool,\n        className: PropTypes.string,\n        disabled: PropTypes.bool,\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        nowButton: PropTypes.bool,\n        steps: PropTypes.shape({\n            hour: PropTypes.number,\n            minute: PropTypes.number,\n            second: PropTypes.number\n        }),\n        smoothScroll: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        value: PropTypes.instanceOf(Date)\n    };\n    TimeSelector.defaultProps = {\n        value: null,\n        disabled: false,\n        cancelButton: true,\n        format: 't',\n        min: MIN_TIME,\n        max: MAX_TIME,\n        boundRange: false\n    };\n    return TimeSelector;\n}(React.Component));\nexport { TimeSelector };\nregisterForIntl(TimeSelector);\nregisterForLocalization(TimeSelector);\n//# sourceMappingURL=TimeSelector.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, toggleTimeSelector, toggleClock } from '../messages';\nimport { DateInput } from '../dateinput/DateInput';\nimport { TimeSelector } from './TimeSelector';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME, setTime } from '../utils';\nimport { isInRange, isSmallerThanMin, isBiggerThanMax } from './utils';\nvar TimePicker = /** @class */ (function (_super) {\n    __extends(TimePicker, _super);\n    function TimePicker(props) {\n        var _this = _super.call(this, props) || this;\n        _this._popupId = guid();\n        _this._element = null;\n        _this._wrapper = null;\n        _this._dateInput = null;\n        _this._timeSelector = null;\n        _this.shouldFocusDateInput = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._dateInput) {\n                _this._dateInput.focus();\n            }\n        };\n        // Using `this` to avoid bumping the React version\n        // to 16.3 and use `createRef()`.\n        // Inline arrow functions is a performance hit\n        // so... we use `this`.\n        _this.setDateInputRef = function (dateInput) {\n            _this._dateInput = dateInput;\n        };\n        _this.setTimeSelectorRef = function (timeSelector) {\n            _this._timeSelector = timeSelector;\n        };\n        _this.nextValue = function (nextProps, nextState) {\n            return nextProps.value !== undefined\n                ? nextProps.value\n                : nextState.value;\n        };\n        _this.nextShow = function (nextProps, nextState) {\n            return nextProps.show !== undefined\n                ? nextProps.show\n                : nextState.show;\n        };\n        _this.handleInputValueChange = function (event) {\n            var value = _this.mergeTime(event.value);\n            _this.handleValueChange(__assign({}, event, { value: value }));\n        };\n        _this.handleValueChange = function (event) {\n            _this.setState({\n                value: cloneDate(event.value),\n                show: false\n            });\n            _this.valueDuringOnChange = event.value;\n            _this.showDuringOnChange = false;\n            _this.shouldFocusDateInput = true;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    show: _this.show,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n            _this.showDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            clearTimeout(_this.nextTickId);\n            if (_this._wrapper) {\n                _this._wrapper.classList.add('k-state-focused');\n            }\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.nextTick(function () {\n                if (_this._wrapper) {\n                    _this._wrapper.classList.remove('k-state-focused');\n                }\n                _this.setShow(false);\n            });\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleValueReject = function (_) {\n            _this.setShow(false);\n        };\n        _this.handleIconClick = function (_) {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.shouldFocusDateInput = true;\n            _this.setShow(!_this.show);\n        };\n        _this.handleIconMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleKeyDown = function (event) {\n            var altKey = event.altKey, keyCode = event.keyCode;\n            if (keyCode === Keys.esc) {\n                _this.setShow(false);\n                return;\n            }\n            if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n                event.preventDefault();\n                event.stopPropagation();\n                _this.shouldFocusDateInput = keyCode === Keys.up;\n                _this.setShow(keyCode === Keys.down);\n            }\n        };\n        _this.state = {\n            value: _this.props.defaultValue || TimePicker.defaultProps.defaultValue,\n            show: _this.props.defaultShow || TimePicker.defaultProps.defaultShow\n        };\n        _this.normalizeTime = _this.normalizeTime.bind(_this);\n        _this.setShow = _this.setShow.bind(_this);\n        _this.nextTick = _this.nextTick.bind(_this);\n        _this.mergeTime = _this.mergeTime.bind(_this);\n        return _this;\n    }\n    Object.defineProperty(TimePicker.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the TimePicker.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"dateInput\", {\n        /**\n         * Gets the DateInput component inside the TimePicker component.\n         */\n        get: function () {\n            return this._dateInput;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"timeSelector\", {\n        /**\n         * Gets the TimeSelector component inside the TimePicker component.\n         */\n        get: function () {\n            return this._timeSelector;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"value\", {\n        /**\n         * Gets the value of the TimePicker.\n         */\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return (value !== null) ? cloneDate(value) : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"show\", {\n        /**\n         * Gets the popup state of the TimeSelector.\n         */\n        get: function () {\n            return this.showDuringOnChange !== undefined\n                ? this.showDuringOnChange\n                : this.props.show !== undefined\n                    ? this.props.show\n                    : this.state.show;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the TimePicker.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the TimePicker is set.\n         */\n        get: function () {\n            var value = this.value && this.normalizeTime(this.value);\n            var min = this.normalizeTime(this.min);\n            var max = this.normalizeTime(this.max);\n            var inRange = isInRange(value, min, max);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: isBiggerThanMax(value, max),\n                rangeUnderflow: isSmallerThanMin(value, min),\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : TimePicker.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : TimePicker.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"popupSettings\", {\n        get: function () {\n            return this.props.popupSettings || TimePicker.defaultProps.popupSettings;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined ? this.props.min : TimePicker.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(TimePicker.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined ? this.props.max : TimePicker.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    TimePicker.prototype.componentDidMount = function () {\n        if (this.show) {\n            // If defaultShow is true during the initial render, the popup is not aligned.\n            this.forceUpdate();\n        }\n        if (this._dateInput && this._dateInput.element) {\n            this._dateInput.element.setAttribute('aria-haspopup', 'true');\n            this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n    };\n    /**\n     * @hidden\n     */\n    TimePicker.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    TimePicker.prototype.componentDidUpdate = function (prevProps) {\n        if (this._dateInput && this._dateInput.element) {\n            this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n        if (this._timeSelector\n            && this.show\n            && !prevProps.show) {\n            this._timeSelector.focusActiveList();\n        }\n        else if (this._dateInput\n            && this._dateInput.element\n            && !this.show\n            && this.shouldFocusDateInput) {\n            this._dateInput.element.focus({ preventScroll: true });\n        }\n        this.shouldFocusDateInput = false;\n    };\n    /**\n     * @hidden\n     */\n    TimePicker.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, className = _a.className, format = _a.format, formatPlaceholder = _a.formatPlaceholder, smoothScroll = _a.smoothScroll, width = _a.width, name = _a.name, steps = _a.steps, cancelButton = _a.cancelButton, nowButton = _a.nowButton, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n        var _b = this.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n        var isValid = !this.validityStyles || this.validity.valid;\n        var rootClassName = classNames('k-widget k-timepicker', className);\n        var wrapperClassNames = classNames('k-picker-wrap', {\n            'k-state-default': !disabled && isValid,\n            'k-state-invalid': !isValid,\n            'k-state-disabled': disabled\n        });\n        var popupClassNames = classNames('k-group k-reset', popupClass);\n        var dateInputProps = {\n            disabled: disabled,\n            format: format,\n            formatPlaceholder: formatPlaceholder,\n            id: id,\n            ariaLabelledBy: ariaLabelledBy,\n            ariaDescribedBy: ariaDescribedBy,\n            max: this.normalizeTime(this.max),\n            min: this.normalizeTime(this.min),\n            name: name,\n            onChange: this.handleInputValueChange,\n            required: required,\n            steps: steps,\n            tabIndex: !this.show ? tabIndex : -1,\n            title: title,\n            valid: this.validity.valid,\n            validationMessage: validationMessage,\n            validityStyles: validityStyles,\n            value: this.value && this.normalizeTime(this.value)\n        };\n        var popupProps = __assign({ show: this.show, animate: this._wrapper !== null, anchor: this._wrapper || undefined, className: popupClassNames, id: this._popupId, anchorAlign: {\n                horizontal: 'left',\n                vertical: 'bottom'\n            }, popupAlign: {\n                horizontal: 'left',\n                vertical: 'top'\n            } }, otherPopupSettings);\n        var timeSelector = (React.createElement(TimeSelector, { ref: this.setTimeSelectorRef, cancelButton: cancelButton, disabled: disabled, nowButton: nowButton, format: format, min: this.min, max: this.max, steps: steps, smoothScroll: smoothScroll, value: this.value, onChange: this.handleValueChange, onReject: this.handleValueReject }));\n        var localizationService = provideLocalizationService(this);\n        var toggleClockMessage = localizationService.toLanguageString(toggleClock, messages[toggleClock]);\n        var toggleTimeMessage = localizationService\n            .toLanguageString(toggleTimeSelector, messages[toggleTimeSelector]);\n        return (React.createElement(\"div\", { ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n                this.props.dateInput\n                    ? React.createElement(this.props.dateInput, __assign({}, dateInputProps))\n                    : React.createElement(DateInput, __assign({ ref: this.setDateInputRef }, dateInputProps)),\n                React.createElement(\"span\", __assign({ role: \"button\", onMouseDown: this.handleIconMouseDown, onClick: this.handleIconClick, title: toggleTimeMessage, className: \"k-select\" }, {\n                    'aria-controls': this._popupId,\n                    'aria-label': toggleClockMessage\n                }),\n                    React.createElement(\"span\", { className: \"k-icon k-i-clock\" }))),\n            this.props.popup\n                ? React.createElement(this.props.popup, __assign({}, popupProps), timeSelector)\n                : React.createElement(Popup, __assign({}, popupProps), timeSelector)));\n    };\n    TimePicker.prototype.normalizeTime = function (date) {\n        return setTime(MIDNIGHT_DATE, date);\n    };\n    TimePicker.prototype.setShow = function (show) {\n        if (this.show === show) {\n            return;\n        }\n        this.setState({ show: show });\n    };\n    TimePicker.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    TimePicker.prototype.mergeTime = function (value) {\n        return this.value && value ? setTime(this.value, value) : value;\n    };\n    /**\n     * @hidden\n     */\n    TimePicker.propTypes = {\n        className: PropTypes.string,\n        cancelButton: PropTypes.bool,\n        nowButton: PropTypes.bool,\n        defaultShow: PropTypes.bool,\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        name: PropTypes.string,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.bool,\n            appendTo: PropTypes.any,\n            popupClass: PropTypes.string\n        }),\n        show: PropTypes.bool,\n        steps: PropTypes.shape({\n            hour: PropTypes.number,\n            minute: PropTypes.number,\n            second: PropTypes.number\n        }),\n        smoothScroll: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        value: PropTypes.instanceOf(Date),\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    TimePicker.defaultProps = {\n        defaultShow: false,\n        defaultValue: null,\n        disabled: false,\n        format: 't',\n        max: MAX_TIME,\n        min: MIN_TIME,\n        popupSettings: {},\n        title: '',\n        tabIndex: 0,\n        steps: {},\n        required: false,\n        validityStyles: true\n    };\n    return TimePicker;\n}(React.Component));\nexport { TimePicker };\nregisterForLocalization(TimePicker);\n//# sourceMappingURL=TimePicker.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Header } from './Header';\nimport { View } from './View';\nimport { CalendarViewEnum } from '../models';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { MAX_DATE, MIN_DATE } from '../../defaults';\nvar DEFAULT_FETCH_MONTHS_COUNT = 2;\n/**\n * @hidden\n */\nvar HorizontalViewList = /** @class */ (function (_super) {\n    __extends(HorizontalViewList, _super);\n    function HorizontalViewList(props) {\n        var _this = _super.call(this, props) || this;\n        _this.isActive = false;\n        _this.focusActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n            var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n            if (focusedCell && focusedCell[0]) {\n                focusedCell[0].classList.remove('k-state-focused');\n            }\n            if (nextActiveCell) {\n                nextActiveCell.classList.add('k-state-focused');\n            }\n            _this.isActive = true;\n        };\n        _this.blurActiveDate = function () {\n            if (!_this._element) {\n                return;\n            }\n            var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n            if (focusedCell) {\n                focusedCell.classList.remove('k-state-focused');\n            }\n            _this.isActive = false;\n        };\n        _this.rotateSelectionRange = function (selectionRange) {\n            if (selectionRange.start === null || selectionRange.end === null) {\n                return selectionRange;\n            }\n            var needRotate = selectionRange.end < selectionRange.start;\n            return {\n                start: needRotate ? selectionRange.end : selectionRange.start,\n                end: needRotate ? selectionRange.start : selectionRange.end\n            };\n        };\n        _this.handleTodayClick = function (event) {\n            _this.handleDateChange.call(undefined, event, true);\n        };\n        _this.handleDateChange = function (event, isTodayClick) {\n            if (isTodayClick === void 0) { isTodayClick = false; }\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: cloneDate(event.value),\n                    target: _this,\n                    isTodayClick: isTodayClick\n                };\n                onChange.call(undefined, args);\n            }\n        };\n        _this.lastView = props.activeView;\n        return _this;\n    }\n    Object.defineProperty(HorizontalViewList.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(HorizontalViewList.prototype, \"weekNumber\", {\n        get: function () {\n            return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(HorizontalViewList.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : HorizontalViewList.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(HorizontalViewList.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : HorizontalViewList.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    HorizontalViewList.prototype.componentDidUpdate = function () {\n        if (this.isActive) {\n            this.focusActiveDate();\n        }\n        this.lastView = this.props.activeView;\n        this.lastViewsCount = this.props.views || HorizontalViewList.defaultProps.views;\n    };\n    HorizontalViewList.prototype.render = function () {\n        var _this = this;\n        var didViewChange = this.lastView !== this.props.activeView;\n        var isDateInList = this.dates && this.props.service.isInArray(this.props.focusedDate, this.dates);\n        var didViewsCountChange = this.lastViewsCount !== this.props.views;\n        if (!isDateInList || didViewChange || didViewsCountChange) {\n            this.dates = this.props.service.datesList(this.props.focusedDate, this.props.views || HorizontalViewList.defaultProps.views);\n        }\n        var activeDate = cloneDate(this.dates && this.dates[0] ? this.dates[0] : undefined);\n        var selectionRange = this.props.allowReverse\n            ? this.rotateSelectionRange(this.props.selectionRange)\n            : this.props.selectionRange;\n        var rootClassNames = classNames('k-calendar-view', {\n            'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n            'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n            'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n            'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n        });\n        return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames },\n            React.createElement(Header, { key: \".kendo.calendar.header.\" + activeDate.getTime(), activeView: this.props.activeView, currentDate: activeDate, min: this.min, max: this.max, rangeLength: this.props.views, onTodayClick: this.handleTodayClick, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle }),\n            React.createElement(\"table\", { className: \"k-content\", key: activeDate.getTime() }, this.dates.map(function (date) { return (React.createElement(View, { bus: _this.props.bus, service: _this.props.service, key: date.getTime(), direction: \"horizontal\", activeView: _this.props.activeView, cellUID: _this.props.cellUID, viewDate: date, min: _this.min, max: _this.max, focusedDate: _this.props.focusedDate, selectionRange: selectionRange, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, onCellEnter: _this.props.onCellEnter, cell: _this.props.cell, weekCell: _this.props.weekCell })); }))));\n    };\n    HorizontalViewList.defaultProps = {\n        showWeekNumbers: false,\n        views: DEFAULT_FETCH_MONTHS_COUNT,\n        take: DEFAULT_FETCH_MONTHS_COUNT,\n        allowReverse: true,\n        min: MIN_DATE,\n        max: MAX_DATE\n    };\n    return HorizontalViewList;\n}(React.Component));\nexport { HorizontalViewList };\n//# sourceMappingURL=HorizontalViewList.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate, getDate } from '@progress/kendo-date-math';\nimport { Action, CalendarViewEnum, EMPTY_SELECTIONRANGE } from '../models';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { messages, prevView, nextView } from '../../messages';\nimport { BusViewService, NavigationService } from '../services';\nimport { dateInRange, isInRange, viewInRange, getToday } from '../../utils';\nimport { HorizontalViewList } from './HorizontalViewList';\nvar extractDateFromValue = function (min, max, value) {\n    if (min === void 0) { min = MultiViewCalendar.defaultProps.min; }\n    if (max === void 0) { max = MultiViewCalendar.defaultProps.max; }\n    return value instanceof Date && !Array.isArray(value) && isInRange(getDate(value), min, max)\n        ? getDate(value)\n        : null;\n};\nvar extractMultipleFromValue = function (min, max, value) {\n    if (min === void 0) { min = MultiViewCalendar.defaultProps.min; }\n    if (max === void 0) { max = MultiViewCalendar.defaultProps.max; }\n    return Array.isArray(value)\n        ? value.filter(function (date) { return isInRange(date, min, max); }).map(function (date) { return getDate(date); })\n        : null;\n};\nvar extractRangeFromValue = function (value) {\n    return typeof value === 'object' && !(value instanceof Date) && value !== null && !Array.isArray(value)\n        ? value\n        : EMPTY_SELECTIONRANGE;\n};\nvar extractFocusedDate = function (single, multiple, range) {\n    return single || (multiple && multiple[0]) || (range && range.start);\n};\nvar extractActiveRange = function (range, single) {\n    return range.start === null && single === null\n        ? 'start'\n        : range.end === null\n            ? 'end'\n            : 'start';\n};\nvar MultiViewCalendar = /** @class */ (function (_super) {\n    __extends(MultiViewCalendar, _super);\n    function MultiViewCalendar(props) {\n        var _this = _super.call(this, props) || this;\n        _this.selectedDate = null;\n        _this.selectedMultiple = null;\n        _this.selectedRange = EMPTY_SELECTIONRANGE;\n        _this.cellUID = guid();\n        _this.activeRangeEnd = 'start';\n        _this.wrapperID = guid();\n        _this.isActive = false;\n        _this.calculateFocusFromValue = true;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        _this.clampRange = function (value) { return ({ start: value, end: null }); };\n        _this.rangeWithFocused = function (range, focusedDate) {\n            return {\n                start: range.start,\n                end: range.end === null && range.start !== null && _this.isActive ? focusedDate : range.end\n            };\n        };\n        _this.generateRange = function (candidate, value) {\n            var end = value.end, start = value.start;\n            var shouldSwap = value.start !== null && candidate.getTime() <= value.start.getTime();\n            if (!_this.props.allowReverse && shouldSwap) {\n                return { start: candidate, end: _this.selectedRange.start };\n            }\n            return _this.activeRange !== 'end'\n                ? ({ start: candidate, end: end })\n                : ({ start: start || _this.selectedDate, end: candidate });\n        };\n        _this.canNavigate = function (action) {\n            if (!_this.service) {\n                return false;\n            }\n            var candidate = _this.service.move(_this.focusedDate, action);\n            return (_this.min <= candidate && candidate <= _this.max)\n                || _this.service.isInSameView(candidate, _this.min)\n                || _this.service.isInSameView(candidate, _this.max);\n        };\n        _this.isListInRange = function (list) {\n            return _this.min < list[0]\n                && _this.max > list[Math.max(0, (_this.props.views || MultiViewCalendar.defaultProps.views) - 1)];\n        };\n        _this.navigate = function (action) {\n            _this.calculateFocusFromValue = false;\n            var candidate = _this.move(action);\n            _this.setState({ focusedDate: candidate });\n        };\n        _this.move = function (action) {\n            return _this.clampDate(_this.service.move(_this.focusedDate, action));\n        };\n        _this.clampDate = function (value) {\n            return dateInRange(value, _this.min, _this.max);\n        };\n        _this.shouldAutoCorrect = function (candidate, value) {\n            var end = value.end, start = value.start;\n            if (_this.activeRange !== 'end') {\n                return end !== null && candidate > end;\n            }\n            else {\n                return start !== null && candidate < start;\n            }\n        };\n        _this.handleCellEnter = function (value) {\n            if (_this.props.mode === 'range') {\n                _this.calculateFocusFromValue = false;\n                _this.setState({\n                    focusedDate: value\n                });\n            }\n        };\n        _this.handleMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleClick = function (_) {\n            if (!_this._element) {\n                return;\n            }\n            _this._element.focus({ preventScroll: true });\n        };\n        _this.handleFocus = function (event) {\n            _this.isActive = true;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.focusActiveDate();\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.isActive = false;\n            if (!_this.calendarViewList) {\n                return;\n            }\n            _this.calendarViewList.blurActiveDate();\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handlePrevButtonClick = function () {\n            _this.navigate(Action.PrevView);\n        };\n        _this.handleNextButtonClick = function () {\n            _this.navigate(Action.NextView);\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode;\n            if (keyCode === Keys.enter) {\n                var args = {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.focusedDate,\n                    target: _this\n                };\n                _this.handleDateChange.call(undefined, args);\n            }\n            else {\n                var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n                if (isEqualDate(_this.focusedDate, candidate)) {\n                    return;\n                }\n                _this.calculateFocusFromValue = false;\n                _this.setState({ focusedDate: candidate });\n            }\n            event.preventDefault();\n        };\n        _this.handleViewChange = function (_a) {\n            var view = _a.view;\n            _this.setState({ activeView: view });\n        };\n        _this.handleDateChange = function (event) {\n            var focusedDate = cloneDate(event.value);\n            var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n            if (_this.props.disabled) {\n                return;\n            }\n            if (canNavigateDown) {\n                if (event.isTodayClick) {\n                    _this.bus.moveToBottom(_this.state.activeView);\n                }\n                else {\n                    _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n                    _this.setState({ focusedDate: focusedDate });\n                    return;\n                }\n            }\n            _this.calculateFocusFromValue = true;\n            var value;\n            switch (_this.props.mode) {\n                case 'single':\n                    value = cloneDate(event.value);\n                    break;\n                case 'multiple':\n                    if (Array.isArray(_this.selectedMultiple)) {\n                        var result = _this.selectedMultiple.slice();\n                        var index_1 = -1;\n                        result.forEach(function (date, idx) {\n                            if (isEqualDate(date, event.value)) {\n                                index_1 = idx;\n                            }\n                        });\n                        index_1 !== -1\n                            ? result.splice(index_1, 1)\n                            : result.push(cloneDate(event.value));\n                        value = result.slice();\n                    }\n                    else {\n                        if (_this.selectedDate) {\n                            value = [cloneDate(_this.selectedDate), cloneDate(event.value)];\n                        }\n                        else {\n                            value = [cloneDate(event.value)];\n                        }\n                    }\n                    break;\n                case 'range':\n                    var hasSelection = _this.selectedRange.start !== null\n                        && _this.selectedRange.end !== null\n                        && _this.activeRange === 'start';\n                    value = hasSelection\n                        ? _this.clampRange(event.value)\n                        : _this.generateRange(event.value, _this.selectedRange);\n                    _this.activeRangeEnd = _this.activeRange !== 'end' ? 'end' : 'start';\n                    break;\n                default:\n                    value = cloneDate(event.value);\n                    break;\n            }\n            _this.valueDuringOnChange = value;\n            _this.setState({ value: value, focusedDate: focusedDate });\n            _this.valueDuringOnChange = value;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: value,\n                    target: _this\n                };\n                onChange.call(undefined, args);\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        var value = props.value !== undefined\n            ? props.value\n            : props.defaultValue || MultiViewCalendar.defaultProps.defaultValue;\n        var selectedDate = extractDateFromValue(_this.min, _this.max, value);\n        var selectedMultiple = extractMultipleFromValue(_this.min, _this.max, value);\n        var selectedRange = extractRangeFromValue(value);\n        var calculatedFocus = extractFocusedDate(selectedDate, selectedMultiple, selectedRange);\n        var activeView = viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView);\n        var focusedDate = dateInRange(props.focusedDate || calculatedFocus || getToday(), _this.min, _this.max);\n        _this.state = {\n            value: value,\n            activeView: activeView,\n            focusedDate: focusedDate\n        };\n        _this.activeRangeEnd = extractActiveRange(selectedRange, selectedDate);\n        _this.bus = new BusViewService(_this.handleViewChange);\n        _this.navigation = new NavigationService(_this.bus);\n        _this.calculateFocusFromValue = false;\n        return _this;\n    }\n    Object.defineProperty(MultiViewCalendar.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the MultiViewCalendar component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"value\", {\n        /**\n         * Gets the value of the MultiViewCalendar.\n         */\n        get: function () {\n            return this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"focusedDate\", {\n        /**\n         * Gets the current focused date of the MultiViewCalendar.\n         */\n        get: function () {\n            return cloneDate(this._focusedDate);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"min\", {\n        get: function () {\n            return getDate(this.props.min !== undefined\n                ? this.props.min\n                : MultiViewCalendar.defaultProps.min);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"max\", {\n        get: function () {\n            return getDate(this.props.max !== undefined\n                ? this.props.max\n                : MultiViewCalendar.defaultProps.max);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"bottomView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.bottomView !== undefined\n                ? this.props.bottomView\n                : MultiViewCalendar.defaultProps.bottomView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"topView\", {\n        get: function () {\n            return CalendarViewEnum[this.props.topView !== undefined\n                ? this.props.topView\n                : MultiViewCalendar.defaultProps.topView];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MultiViewCalendar.prototype, \"activeRange\", {\n        get: function () {\n            return this.props.activeRangeEnd !== undefined\n                ? this.props.activeRangeEnd\n                : this.activeRangeEnd;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    MultiViewCalendar.prototype.componentDidMount = function () {\n        this.calculateFocusFromValue = true;\n    };\n    /**\n     * @hidden\n     */\n    MultiViewCalendar.prototype.componentDidUpdate = function () {\n        if (this.calendarViewList) {\n            this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n        }\n        var stateValue = extractDateFromValue(this.min, this.max, this.value);\n        this.calculateFocusFromValue = Boolean(this.selectedDate\n            && stateValue\n            && (this.selectedDate.getTime() && stateValue.getTime()));\n    };\n    /**\n     * @hidden\n     */\n    MultiViewCalendar.prototype.render = function () {\n        var _this = this;\n        if (this.props._ref) {\n            this.props._ref(this);\n        }\n        this.intl = provideIntlService(this);\n        this.localization = provideLocalizationService(this);\n        this.bus.configure(this.bottomView, this.topView);\n        var activeView = viewInRange(this.state.activeView, this.bottomView, this.topView);\n        this.service = this.bus.service(activeView, this.intl);\n        this.selectedDate = extractDateFromValue(this.min, this.max, this.value);\n        this.selectedMultiple = extractMultipleFromValue(this.min, this.max, this.value);\n        this.selectedRange = extractRangeFromValue(this.value);\n        var calculatedFocus = extractFocusedDate(this.selectedDate, this.selectedMultiple, this.selectedRange);\n        this._focusedDate = dateInRange(this.calculateFocusFromValue && calculatedFocus !== null\n            ? calculatedFocus\n            : this.state.focusedDate, this.min, this.max);\n        var wrapperClassName = classNames('k-widget k-calendar k-calendar-infinite k-calendar-range', {\n            'k-state-disabled': this.props.disabled\n        }, this.props.className);\n        var visualizedRange = this.rangeWithFocused(this.selectedRange, this.focusedDate);\n        var wrapperAria = {\n            'aria-disabled': this.props.disabled,\n            'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n        };\n        var prevViewTitle = this.localization.toLanguageString(prevView, messages[prevView]);\n        var nextViewTittle = this.localization.toLanguageString(nextView, messages[nextView]);\n        var isPrevDisabled = !this.canNavigate(Action.PrevView);\n        var isNextDisabled = !this.canNavigate(Action.NextView);\n        var prevBtnAria = { 'aria-disabled': isPrevDisabled };\n        var nextBtnAria = { 'aria-disabled': isNextDisabled };\n        return (React.createElement(\"div\", __assign({ ref: function (el) { _this._element = el; }, className: wrapperClassName, id: this.props.id || this.wrapperID, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, role: 'grid', tabIndex: !this.props.disabled ? this.props.tabIndex : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseDown: this.handleMouseDown, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, wrapperAria),\n            React.createElement(\"button\", __assign({ className: \"k-button k-prev-view\", title: prevViewTitle, disabled: isPrevDisabled, onClick: this.handlePrevButtonClick }, prevBtnAria),\n                React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-left\" })),\n            React.createElement(HorizontalViewList, { ref: function (el) { _this.calendarViewList = el; }, activeView: activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, service: this.service, selectionRange: visualizedRange, value: this.selectedMultiple || this.selectedDate, cellUID: this.cellUID, views: this.props.views, onChange: this.handleDateChange, showWeekNumbers: this.props.weekNumber, onCellEnter: this.handleCellEnter, cell: this.props.cell, weekCell: this.props.weekCell, headerTitle: this.props.headerTitle }),\n            React.createElement(\"button\", __assign({ className: \"k-button k-next-view\", title: nextViewTittle, disabled: isNextDisabled, onClick: this.handleNextButtonClick }, nextBtnAria),\n                React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-right\" }))));\n    };\n    /**\n     * @hidden\n     */\n    MultiViewCalendar.propTypes = {\n        activeRangeEnd: PropTypes.oneOf(['start', 'end']),\n        allowReverse: PropTypes.bool,\n        bottomView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n        className: PropTypes.string,\n        defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n        defaultValue: PropTypes.oneOfType([\n            PropTypes.instanceOf(Date),\n            PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n            PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n        ]),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        mode: PropTypes.oneOf(['single', 'multiple', 'range']),\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        onFocus: PropTypes.func,\n        tabIndex: PropTypes.number,\n        topView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n        value: PropTypes.oneOfType([\n            PropTypes.instanceOf(Date),\n            PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n            PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n        ]),\n        views: function (props, propName, componentName) {\n            var views = props[propName];\n            if (views !== undefined && views < 1) {\n                return new Error(\"Invalid prop '\" + propName + \"' supplied to\" +\n                    (\"'\" + componentName + \"'. The '\" + propName + \"' property cannot be less than 1'\"));\n            }\n        },\n        weekNumber: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    MultiViewCalendar.defaultProps = {\n        disabled: false,\n        min: MIN_DATE,\n        max: MAX_DATE,\n        navigation: true,\n        defaultActiveView: 'month',\n        defaultValue: null,\n        topView: 'century',\n        tabIndex: 0,\n        bottomView: 'month',\n        views: 2,\n        allowReverse: false\n    };\n    return MultiViewCalendar;\n}(React.Component));\nexport { MultiViewCalendar };\nregisterForIntl(MultiViewCalendar);\nregisterForLocalization(MultiViewCalendar);\n//# sourceMappingURL=MultiViewCalendar.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { guid, classNames, Keys } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MultiViewCalendar } from '../calendar/components/MultiViewCalendar';\nimport { EMPTY_SELECTIONRANGE } from '../calendar/models';\nimport { MIN_DATE, MAX_DATE } from '../defaults';\nimport { swapStartEnd, start, end, separator, messages } from '../messages';\nvar WRAPPER_STYLES = { display: 'inline-block' };\nvar DateRangePicker = /** @class */ (function (_super) {\n    __extends(DateRangePicker, _super);\n    function DateRangePicker(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        _this._wrapper = null;\n        _this._calendar = null;\n        _this._popupId = guid();\n        _this._startInputId = guid();\n        _this._endInputId = guid();\n        _this.shouldFocusDateInput = false;\n        _this.shouldFocusCalendar = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._startDateInput) {\n                _this._startDateInput.focus();\n            }\n        };\n        _this.setStartDateInputRef = function (dateInput) {\n            _this._startDateInput = dateInput;\n        };\n        _this.setEndDateInputRef = function (dateInput) {\n            _this._endDateInput = dateInput;\n        };\n        _this.setCalendarRef = function (calendar) {\n            _this._calendar = calendar;\n        };\n        _this.focusCalendarElement = function () {\n            if (_this._calendar && _this._calendar.element) {\n                _this._calendar.element.focus({ preventScroll: true });\n            }\n        };\n        _this.calculateValue = function (props, state) {\n            var value = props.value !== undefined\n                ? props.value\n                : state.value;\n            return value || EMPTY_SELECTIONRANGE;\n        };\n        _this.calculateShow = function (nextProps, nextState) {\n            return nextProps.show !== undefined\n                ? nextProps.show\n                : nextState.show;\n        };\n        _this.handleReverseClick = function (event) {\n            var value = {\n                start: _this.value.end,\n                end: _this.value.start\n            };\n            var args = {\n                syntheticEvent: event,\n                nativeEvent: event.nativeEvent\n            };\n            _this.handleChange(value, args);\n        };\n        _this.handleReverseMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleFocus = function (event) {\n            clearTimeout(_this.nextTickId);\n            if (!_this.shouldFocusDateInput) {\n                _this.setShow(true);\n            }\n            if (_this._startDateInput && _this._startDateInput.element) {\n                _this._startDateInput.element.classList.add('k-state-focused');\n            }\n            if (_this._endDateInput && _this._endDateInput.element) {\n                _this._endDateInput.element.classList.add('k-state-focused');\n            }\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.nextTick(function () {\n                if (_this._startDateInput && _this._startDateInput.element) {\n                    _this._startDateInput.element.classList.remove('k-state-focused');\n                }\n                if (_this._endDateInput && _this._endDateInput.element) {\n                    _this._endDateInput.element.classList.remove('k-state-focused');\n                }\n                _this.setShow(false);\n            });\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleEndChange = function (event) {\n            var value = {\n                start: _this.value.start,\n                end: cloneDate(event.value || undefined)\n            };\n            _this.handleChange(value, event);\n        };\n        _this.handleStartChange = function (event) {\n            var value = {\n                start: cloneDate(event.value || undefined),\n                end: _this.value.end\n            };\n            _this.handleChange(value, event);\n        };\n        _this.extractRangeFromValue = function (event) {\n            if (!Array.isArray(event.value) && !(event.value instanceof Date)) {\n                return event.value || EMPTY_SELECTIONRANGE;\n            }\n            var candidate = Array.isArray(event.value) ? event.value[0] : event.value;\n            return {\n                start: _this.value.end !== null ? candidate : _this.value.start,\n                end: _this.value.start !== null ? candidate : _this.value.end\n            };\n        };\n        _this.handleCalendarChange = function (event) {\n            var value = _this.extractRangeFromValue(event);\n            _this.handleChange(value, event);\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode, altKey = event.altKey;\n            if (keyCode === Keys.esc) {\n                event.preventDefault();\n                _this.shouldFocusDateInput = true;\n                _this.setShow(false);\n            }\n            else if (altKey && keyCode === Keys.down) {\n                event.preventDefault();\n                _this.shouldFocusCalendar = true;\n                _this.setShow(true);\n            }\n            else if (keyCode === Keys.tab\n                && _this.show\n                && _this._calendar\n                && _this._calendar.element\n                && _this._endDateInput\n                && _this._endDateInput.element\n                && document\n                && document.activeElement === _this._endDateInput.element) {\n                event.preventDefault();\n                _this.focusCalendarElement();\n            }\n        };\n        _this.handleChange = function (value, event) {\n            _this.setState({ value: value });\n            _this.valueDuringOnChange = value;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                var args = {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    show: _this.show,\n                    target: _this\n                };\n                onChange.call(undefined, args);\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        _this.state = {\n            show: _this.props.show || _this.props.defaultShow || DateRangePicker.defaultProps.defaultShow,\n            value: _this.props.value || _this.props.defaultValue || DateRangePicker.defaultProps.defaultValue\n        };\n        _this.nextTick = _this.nextTick.bind(_this);\n        _this.setShow = _this.setShow.bind(_this);\n        _this.focusCalendarElement = _this.focusCalendarElement.bind(_this);\n        _this.focusDateInputElement = _this.focusDateInputElement.bind(_this);\n        return _this;\n    }\n    Object.defineProperty(DateRangePicker.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the DateRangePicker.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateRangePicker.prototype, \"calendar\", {\n        /**\n         * Gets the MultiVieCalendar inside the DateRangePicker.\n         */\n        get: function () {\n            return this._calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateRangePicker.prototype, \"value\", {\n        /**\n         * Gets the value of the DateRangePicker.\n         */\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return value || EMPTY_SELECTIONRANGE;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateRangePicker.prototype, \"show\", {\n        /**\n         * Gets the popup state of the DateRangePicker.\n         */\n        get: function () {\n            return this.showDuringOnChange !== undefined\n                ? this.showDuringOnChange\n                : this.props.show !== undefined\n                    ? this.props.show\n                    : this.state.show;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateRangePicker.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DateRangePicker.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateRangePicker.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DateRangePicker.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DateRangePicker.prototype.componentDidMount = function () {\n        if (this.show) {\n            // If defaultShow is true during the initial render, the popup is not aligned.\n            this.forceUpdate();\n        }\n        if (this._startDateInput && this._startDateInput.element\n            && this._endDateInput && this._endDateInput.element) {\n            this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n            this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n    };\n    /**\n     * @hidden\n     */\n    DateRangePicker.prototype.componentDidUpdate = function () {\n        if (this._startDateInput && this._startDateInput.element\n            && this._endDateInput && this._endDateInput.element) {\n            this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n            this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n        if (this.shouldFocusCalendar) {\n            this.focusCalendarElement();\n        }\n        if (this.shouldFocusDateInput) {\n            this.focusDateInputElement();\n        }\n        this.shouldFocusCalendar = false;\n        this.shouldFocusDateInput = false;\n    };\n    /**\n     * @hidden\n     */\n    DateRangePicker.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    DateRangePicker.prototype.render = function () {\n        var _this = this;\n        var value = this.value || EMPTY_SELECTIONRANGE;\n        var startDateInputId = (this.props.startDateInputSettings || {}).id || this._startInputId;\n        var endDateInputId = (this.props.endDateInputSettings || {}).id || this._endInputId;\n        var rootClassName = classNames('k-daterangepicker', {\n            'k-state-disabled': this.props.disabled\n        }, this.props.className);\n        var localizationService = provideLocalizationService(this);\n        var startMessage = localizationService.toLanguageString(start, messages[start]);\n        var endMessage = localizationService.toLanguageString(end, messages[end]);\n        var separatorMessage = localizationService.toLanguageString(separator, messages[separator]);\n        var startDateInputProps = __assign({ label: startMessage, format: this.props.format, min: this.min, max: this.max, id: this._startInputId, disabled: this.props.disabled, valid: this.props.valid }, this.props.startDateInputSettings, { value: value.start, onChange: this.handleStartChange });\n        var endDateInputProps = __assign({ label: endMessage, format: this.props.format, min: this.min, max: this.max, id: this._endInputId, disabled: this.props.disabled, valid: this.props.valid }, this.props.endDateInputSettings, { value: value.end, onChange: this.handleEndChange });\n        var popupProps = __assign({ animate: this._wrapper !== null, anchor: this._wrapper || undefined, id: this._popupId, anchorAlign: {\n                horizontal: 'left',\n                vertical: 'bottom'\n            }, popupAlign: {\n                horizontal: 'left',\n                vertical: 'top'\n            } }, this.props.popupSettings, { show: this.show });\n        var calendarProps = __assign({ min: this.min, max: this.max, allowReverse: this.props.allowReverse, mode: 'range', focusedDate: this.props.focusedDate, disabled: this.props.disabled }, this.props.calendarSettings, { value: value, onChange: this.handleCalendarChange });\n        var calendar = this.props.calendar\n            ? React.createElement(this.props.calendar, __assign({}, calendarProps))\n            : React.createElement(MultiViewCalendar, __assign({}, calendarProps, { ref: this.setCalendarRef }));\n        var reverseButton = (React.createElement(\"span\", __assign({ role: \"button\", className: \"k-select k-button k-flat\", title: provideLocalizationService(this)\n                .toLanguageString(swapStartEnd, messages[swapStartEnd]), onMouseDown: this.handleReverseMouseDown, onClick: this.handleReverseClick }, {\n            'aria-controls': startDateInputId + ' ' + endDateInputId,\n            'aria-label': provideLocalizationService(this)\n                .toLanguageString(swapStartEnd, messages[swapStartEnd])\n        }),\n            React.createElement(\"span\", { style: { transform: 'rotate(90deg)' }, className: \"k-icon k-i-arrows-swap\" })));\n        return (React.createElement(\"span\", { ref: function (span) { _this._element = span; }, className: rootClassName, style: this.props.style, id: this.props.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: this.props.tabIndex, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown },\n            React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: \"k-daterangepicker-wrap\", style: WRAPPER_STYLES },\n                this.props.startDateInput\n                    ? React.createElement(this.props.startDateInput, __assign({}, startDateInputProps))\n                    : React.createElement(DateInput, __assign({}, startDateInputProps, { ref: this.setStartDateInputRef })),\n                (this.props.allowReverse\n                    || (this.props.calendarSettings && this.props.calendarSettings.allowReverse))\n                    && this.props.swapButton\n                    ? (reverseButton)\n                    : (separatorMessage),\n                this.props.endDateInput\n                    ? React.createElement(this.props.endDateInput, __assign({}, endDateInputProps))\n                    : React.createElement(DateInput, __assign({}, endDateInputProps, { ref: this.setEndDateInputRef }))),\n            this.props.popup\n                ? React.createElement(this.props.popup, __assign({}, popupProps), calendar)\n                : React.createElement(Popup, __assign({}, popupProps), calendar)));\n    };\n    DateRangePicker.prototype.focusDateInputElement = function () {\n        if (!document || !this._startDateInput || !this._startDateInput.element\n            || !this._endDateInput || !this._endDateInput.element) {\n            return;\n        }\n        if ((this.value.start === null || this.value.end !== null)\n            && document.activeElement !== this._endDateInput.element) {\n            this._startDateInput.element.focus({ preventScroll: true });\n        }\n        else if (document.activeElement !== this._startDateInput.element) {\n            this._endDateInput.element.focus({ preventScroll: true });\n        }\n    };\n    DateRangePicker.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        // Handles multiple focus events happening at the same time.\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    DateRangePicker.prototype.setShow = function (show) {\n        if (this.show === show) {\n            return;\n        }\n        this.setState({ show: show });\n    };\n    /**\n     * @hidden\n     */\n    DateRangePicker.propTypes = {\n        allowReverse: PropTypes.bool,\n        calendarSettings: PropTypes.any,\n        className: PropTypes.string,\n        defaultShow: PropTypes.bool,\n        defaultValue: PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) }),\n        disabled: PropTypes.bool,\n        endDateInputSettings: PropTypes.shape(DateInput.propTypes),\n        focusedDate: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        max: PropTypes.instanceOf(Date),\n        min: PropTypes.instanceOf(Date),\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        onFocus: PropTypes.func,\n        popupSettings: PropTypes.any,\n        show: PropTypes.bool,\n        startDateInputSettings: PropTypes.any,\n        style: PropTypes.any,\n        swapButton: PropTypes.any,\n        tabIndex: PropTypes.number,\n        value: PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n    };\n    /**\n     * @hidden\n     */\n    DateRangePicker.defaultProps = {\n        allowReverse: false,\n        defaultShow: false,\n        defaultValue: EMPTY_SELECTIONRANGE,\n        disabled: false,\n        format: 'd',\n        max: MAX_DATE,\n        min: MIN_DATE,\n        swapButton: false\n    };\n    return DateRangePicker;\n}(React.Component));\nexport { DateRangePicker };\nregisterForLocalization(DateRangePicker);\n//# sourceMappingURL=DateRangePicker.js.map","/**\n * @hidden\n */\nvar styles = {\n    button: 'k-button',\n    'bare': 'k-bare',\n    'flat': 'k-flat',\n    'outline': 'k-outline',\n    'primary': 'k-primary',\n    'state-active': 'k-state-active',\n    'button-icon': 'k-button-icon',\n    'button-icontext': 'k-button-icontext',\n    'state-disabled': 'k-state-disabled',\n    'group-start': 'k-group-start',\n    'group-end': 'k-group-end',\n    'button-group': 'k-button-group',\n    'button-group-stretched': 'k-button-group-stretched',\n    'ltr': 'k-ltr',\n    'rtl': 'k-rtl'\n};\n/**\n * @hidden\n */\nexport default {\n    styles: styles\n};\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n    var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass, imageAlt = _a.imageAlt;\n    if (imageUrl) {\n        return (React.createElement(\"img\", { role: \"presentation\", className: 'k-image', alt: imageAlt, src: imageUrl }));\n    }\n    else if (icon) {\n        var iconClasses = classNames('k-icon', 'k-i-' + icon);\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n    }\n    else if (iconClass) {\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClass }));\n    }\n    return null;\n}\nvar Button = /** @class */ (function (_super) {\n    __extends(Button, _super);\n    function Button(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        _this.handleClick = function (event) {\n            _this.toggleIfApplicable();\n            if (_this.props.onClick) {\n                _this.props.onClick.call(undefined, event);\n            }\n        };\n        _this.state = { active: _this.props.togglable === true && _this.props.selected === true };\n        return _this;\n    }\n    Object.defineProperty(Button.prototype, \"element\", {\n        /**\n         * Gets the DOM element of the Button component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Button.prototype, \"selected\", {\n        /**\n         * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n         * Otherwise, returns `false`.\n         */\n        get: function () {\n            return this._activeTemp !== undefined ? this._activeTemp : this.state.active;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Button.getDerivedStateFromProps = function (props, state) {\n        if (props.togglable && props.selected !== undefined && props.selected !== state.active) {\n            return { active: props.selected };\n        }\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    Button.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var _b = this.props, children = _b.children, look = _b.look, primary = _b.primary, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, htmlAttributes = __rest(_b, [\"children\", \"look\", \"primary\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\"]);\n        var hasIcon = (icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n        var hasChildren = children !== undefined;\n        var buttonClasses = classNames([styles.button], (_a = {},\n            _a[styles[\"\" + look]] = look !== 'default',\n            _a[styles.primary] = primary,\n            _a[styles['state-disabled']] = this.props.disabled,\n            _a[styles['state-active']] = this.state.active,\n            _a[styles['button-icon']] = !hasChildren && hasIcon,\n            _a[styles['button-icontext']] = hasChildren && hasIcon,\n            _a), [styles[\"\" + this.props.dir]], className);\n        var buttonProps = {\n            className: buttonClasses,\n            onClick: this.handleClick,\n            // Accessibility properties\n            role: togglable ? 'checkbox' : undefined,\n            'aria-disabled': this.props.disabled || undefined,\n            'aria-checked': togglable ? this.state.active : undefined\n        };\n        var iconEl = iconElement({\n            icon: icon,\n            iconClass: iconClass,\n            imageUrl: imageUrl,\n            imageAlt: imageAlt\n        });\n        return (React.createElement(\"button\", __assign({}, buttonProps, htmlAttributes, { ref: function (button) { return _this._element = button; } }),\n            iconEl,\n            children));\n    };\n    Button.prototype.toggleIfApplicable = function () {\n        var _this = this;\n        if (this.props.togglable && this.props.selected === undefined) {\n            var active = !this.state.active;\n            this._activeTemp = active;\n            this.setState({ active: active }, function () { return _this._activeTemp = undefined; });\n        }\n    };\n    /**\n     * @hidden\n     */\n    Button.propTypes = {\n        children: PropTypes.node,\n        look: PropTypes.oneOf(['default', 'bare', 'flat', 'outline']),\n        primary: PropTypes.bool,\n        selected: PropTypes.bool,\n        togglable: PropTypes.bool,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        imageAlt: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    Button.defaultProps = {\n        look: 'default',\n        primary: false,\n        togglable: false\n    };\n    return Button;\n}(React.Component));\nexport default Button;\n//# sourceMappingURL=Button.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\nvar ButtonGroup = /** @class */ (function (_super) {\n    __extends(ButtonGroup, _super);\n    function ButtonGroup() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    ButtonGroup.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var buttons = this.mapButtons(this.props.children);\n        var groupClasses = classNames([styles['button-group']], (_a = {},\n            _a[styles['state-disabled']] = this.props.disabled,\n            _a[styles['button-group-stretched']] = !!this.props.width,\n            _a), this.props.className);\n        var groupProps = {\n            className: groupClasses,\n            style: { 'width': \"\" + this.props.width },\n            dir: this.props.dir,\n            // Accessibility properties\n            role: 'group',\n            'aria-disabled': this.props.disabled,\n            'aria-multiselectable': true\n        };\n        return (React.createElement(\"div\", __assign({ ref: function (div) { _this._element = div; } }, groupProps, { className: groupClasses }), buttons));\n    };\n    ButtonGroup.prototype.mapButtons = function (children) {\n        var _this = this;\n        var count = React.Children.count(children);\n        var rtl = this.props.dir !== undefined\n            ? this.props.dir === 'rtl'\n            : (this._element && (getComputedStyle(this._element).direction === 'rtl') || false);\n        return React.Children.map(children, function (child, index) {\n            if (React.isValidElement(child)) {\n                return _this.renderButton(child, index, (index === count - 1), rtl);\n            }\n            return child;\n        });\n    };\n    ButtonGroup.prototype.renderButton = function (child, index, isLast, isRtl) {\n        var _a;\n        var className = classNames(child.props.className, (_a = {},\n            _a[styles['group-start']] = isRtl ? isLast : index === 0,\n            _a[styles['group-end']] = isRtl ? index === 0 : isLast,\n            _a));\n        var style = __assign({}, (this.props.width ? { width: this.props.width } : {}), (child.props.style || {}));\n        var disabled = this.props.disabled || child.props.disabled;\n        var buttonProps = __assign({}, child.props, (className ? { className: className } : {}), (Object.keys(style).length ? { style: style } : {}), (disabled !== undefined ? { disabled: disabled } : {}));\n        return React.Children.count(child.props.children) > 0 ?\n            React.cloneElement(child, buttonProps, child.props.children) :\n            React.cloneElement(child, buttonProps);\n    };\n    /**\n     * @hidden\n     */\n    ButtonGroup.propTypes = {\n        children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n        className: PropTypes.string,\n        disabled: PropTypes.bool,\n        width: PropTypes.string,\n        dir: PropTypes.string\n    };\n    return ButtonGroup;\n}(React.Component));\nexport default ButtonGroup;\n//# sourceMappingURL=ButtonGroup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ButtonItem = /** @class */ (function (_super) {\n    __extends(ButtonItem, _super);\n    function ButtonItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onClick = function (event) { return _this.props.onClick(event, _this.props.index); };\n        return _this;\n    }\n    ButtonItem.prototype.render = function () {\n        var _a = this.props, dataItem = _a.dataItem, focused = _a.focused, id = _a.id, onDown = _a.onDown;\n        return (React.createElement(\"li\", { id: id, className: classNames('k-item', {\n                'k-state-focused': focused,\n                'k-state-selected': dataItem.selected,\n                'k-state-disabled': dataItem.disabled\n            }), onClick: this.onClick, onMouseDown: onDown, onPointerDown: onDown, role: \"menuItem\", \"aria-disabled\": dataItem.disabled || undefined }, this.renderContent()));\n    };\n    ButtonItem.prototype.renderContent = function () {\n        var _a = this.props, dataItem = _a.dataItem, textField = _a.textField, index = _a.index;\n        var Render = this.props.dataItem.render || this.props.itemRender;\n        var text = dataItem.text !== undefined ? dataItem.text :\n            (textField ? dataItem[textField] : dataItem);\n        var iconClass = dataItem.icon ? \"k-icon k-i-\" + dataItem.icon : dataItem.iconClass;\n        return (Render && React.createElement(Render, { item: dataItem, itemIndex: index })) || ([\n            (iconClass && (React.createElement(\"span\", { className: iconClass, role: \"presentation\", key: \"icon\" }))),\n            (dataItem.imageUrl && (React.createElement(\"img\", { className: \"k-image\", alt: \"\", src: dataItem.imageUrl, role: \"presentation\", key: \"image\" }))),\n            text\n        ]);\n    };\n    return ButtonItem;\n}(React.Component));\nexport default ButtonItem;\n//# sourceMappingURL=ButtonItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar SplitButtonItem = /** @class */ (function (_super) {\n    __extends(SplitButtonItem, _super);\n    function SplitButtonItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    SplitButtonItem.prototype.render = function () {\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    SplitButtonItem.propTypes = {\n        text: PropTypes.string,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        disabled: PropTypes.bool,\n        render: PropTypes.any\n    };\n    return SplitButtonItem;\n}(React.Component));\nexport default SplitButtonItem;\n//# sourceMappingURL=SplitButtonItem.js.map","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar navigate = function (focusedIndex, keyCode, altKey, total) {\n    if (altKey) {\n        return focusedIndex;\n    }\n    switch (keyCode) {\n        case Keys.enter:\n        case Keys.space:\n        case Keys.esc:\n            return -1;\n        case Keys.up:\n        case Keys.left:\n            return Math.max(0, focusedIndex - 1);\n        case Keys.down:\n        case Keys.right:\n            return Math.min(total - 1, focusedIndex + 1);\n        default:\n            return focusedIndex;\n    }\n};\nexport default navigate;\n//# sourceMappingURL=navigation.js.map","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n    var align = { horizontal: 'left', vertical: 'bottom' };\n    if (isDirectionRightToLeft) {\n        align.horizontal = 'right';\n    }\n    return align;\n}\n/**\n * @hidden\n */\nexport function getPopupAlign(isDirectionRightToLeft) {\n    var align = { horizontal: 'left', vertical: 'top' };\n    if (isDirectionRightToLeft) {\n        align.horizontal = 'right';\n    }\n    return align;\n}\n//# sourceMappingURL=popup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport ButtonItem from './ButtonItem';\nimport SplitButtonItem from './SplitButtonItem';\nimport navigation from './utils/navigation';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact SplitButton component]({% slug overview_splitbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    render() {\n *        return (\n *            <SplitButton text=\"Act\">\n *                <SplitButtonItem text=\"Item1\" />\n *                <SplitButtonItem text=\"Item2\" />\n *                <SplitButtonItem text=\"Item3\" />\n *            </SplitButton>\n *        );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n    __extends(SplitButton, _super);\n    function SplitButton() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            focused: false,\n            focusedIndex: -1,\n            opened: false\n        };\n        _this.wrapper = null;\n        _this.mainButton = null;\n        _this.guid = guid();\n        _this.buttonsData = [];\n        _this.onKeyDown = function (event) {\n            var _a = _this.state, opened = _a.opened, focusedIndex = _a.focusedIndex;\n            if (event.altKey) {\n                if (!opened && event.keyCode === Keys.down) {\n                    _this.dispatchPopupEvent(event, true);\n                    _this.setState({ focusedIndex: 0, opened: true });\n                }\n                else if (opened && event.keyCode === Keys.up) {\n                    _this.dispatchPopupEvent(event, false);\n                    _this.setState({ focusedIndex: -1, opened: false });\n                }\n                return;\n            }\n            var newState = undefined;\n            if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n                // Prevent default because otherwise when an item is selected\n                // click on the default button gets emitted which opens the popup again.\n                event.preventDefault();\n                _this.dispatchClickEvent(event, focusedIndex);\n                if (focusedIndex >= 0) {\n                    newState = {\n                        focusedIndex: opened ? -1 : 0,\n                        opened: !opened\n                    };\n                    _this.dispatchPopupEvent(event, newState.opened);\n                }\n            }\n            else if (opened && event.keyCode === Keys.esc) {\n                newState = {\n                    focusedIndex: -1,\n                    opened: false\n                };\n                _this.dispatchPopupEvent(event, newState.opened);\n            }\n            if (opened) {\n                var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n                if (newFocused !== focusedIndex) {\n                    newState = newState || {};\n                    newState.focusedIndex = newFocused;\n                }\n                var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n                    event.keyCode === Keys.left || event.keyCode === Keys.right;\n                if (!event.altKey && arrowKey) {\n                    // Needed to notify the parent listeners that event is handled.\n                    event.preventDefault();\n                }\n            }\n            if (newState) {\n                _this.setState(newState);\n            }\n        };\n        _this.onFocus = function (event) {\n            dispatchEvent(_this.props.onFocus, event, _this, undefined);\n            _this.setState({ focused: true, focusedIndex: -1 });\n        };\n        _this.onItemClick = function (event, clickedItemIndex) {\n            var opened = _this.state.opened;\n            if (opened) {\n                _this.setState({ focusedIndex: 0, opened: false });\n            }\n            _this.dispatchClickEvent(event, clickedItemIndex);\n            if (opened) {\n                _this.dispatchPopupEvent(event, false);\n            }\n        };\n        _this.onBlur = function (event) {\n            _this.setState({\n                focused: false,\n                focusedIndex: -1,\n                opened: false\n            });\n            dispatchEvent(_this.props.onBlur, event, _this, undefined);\n            if (_this.state.opened) {\n                _this.dispatchPopupEvent(event, false);\n            }\n        };\n        _this.onSplitPartClick = function (event) {\n            if (_this.buttonsData.length) {\n                var opened = _this.state.opened;\n                var toOpen = !opened;\n                _this.dispatchPopupEvent(event, toOpen);\n                _this.setState({\n                    focusedIndex: toOpen ? 0 : -1,\n                    opened: toOpen,\n                    focused: true\n                });\n            }\n        };\n        _this.onDownSplitPart = function (event) {\n            event.preventDefault();\n            if (_this.element && document.activeElement !== _this.element) {\n                _this.element.focus();\n            }\n        };\n        _this.onItemDown = function (event) {\n            if (document.activeElement === _this.element) {\n                event.preventDefault();\n            }\n        };\n        _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n            dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    SplitButton.prototype.render = function () {\n        var _this = this;\n        this.buttonsData = this.props.items ||\n            React.Children.toArray(this.props.children)\n                .filter(function (child) { return child && child.type === SplitButtonItem; })\n                .map(function (child) { return child.props; });\n        var rtl = this.isRtl();\n        var dir = rtl ? 'rtl' : undefined;\n        var _a = this.props, tabIndex = _a.tabIndex, disabled = _a.disabled;\n        var focusedIndex = this.state.focusedIndex;\n        return (React.createElement(\"div\", { className: classNames('k-widget', 'k-split-button', 'k-button-group', this.props.className, {\n                'k-state-focused': this.state.focused\n            }), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n            React.createElement(Button, { onClick: function (event) { return _this.onItemClick(event, -1); }, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, className: this.props.buttonClass, icon: this.props.icon, iconClass: this.props.iconClass, imageUrl: this.props.imageUrl, look: this.props.look, dir: dir, ref: function (el) { return _this.mainButton = el && el.element; }, type: \"button\", \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.state.opened, \"aria-label\": this.props.text + \" splitbutton\", \"aria-owns\": this.guid, \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined }, this.props.text),\n            React.createElement(Button, { icon: \"arrow-s\", disabled: disabled || undefined, tabIndex: -1, look: this.props.look, onClick: this.onSplitPartClick, onMouseDown: this.onDownSplitPart, onPointerDown: this.onDownSplitPart, dir: dir, \"aria-label\": \"menu toggling button\" }),\n            this.renderPopup(rtl)));\n    };\n    /**\n     * @hidden\n     */\n    SplitButton.prototype.componentDidMount = function () {\n        if (this.props.dir === undefined && this.isRtl()) {\n            this.forceUpdate();\n        }\n    };\n    Object.defineProperty(SplitButton.prototype, \"element\", {\n        /**\n         * The DOM element of main button.\n         */\n        get: function () {\n            return this.mainButton;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SplitButton.prototype.dispatchClickEvent = function (dispatchedEvent, clickedItemIndex) {\n        if (!this.isItemDisabled(clickedItemIndex)) {\n            if (clickedItemIndex === -1) {\n                dispatchEvent(this.props.onButtonClick, dispatchedEvent, this, undefined);\n            }\n            else {\n                dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n                    item: this.buttonsData[clickedItemIndex],\n                    itemIndex: clickedItemIndex\n                });\n            }\n        }\n    };\n    SplitButton.prototype.renderPopup = function (rtl) {\n        var _a = this.props.popupSettings, popupSettings = _a === void 0 ? {} : _a;\n        return (React.createElement(Popup, { anchor: this.wrapper || undefined, show: this.state.opened, animate: popupSettings.animate, popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined },\n            React.createElement(\"ul\", { className: \"k-list k-reset\", role: \"menu\", id: this.guid }, this.renderChildItems())));\n    };\n    SplitButton.prototype.renderChildItems = function () {\n        var _this = this;\n        var _a = this.props, itemRender = _a.itemRender, textField = _a.textField;\n        return this.buttonsData.length > 0 ? (this.buttonsData.map(function (item, index) {\n            return (React.createElement(ButtonItem, { dataItem: item, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, itemRender: itemRender, key: index, index: index, id: _this.guid + \"-\" + index }));\n        })) : null;\n    };\n    SplitButton.prototype.isItemDisabled = function (index) {\n        return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n    };\n    SplitButton.prototype.isRtl = function () {\n        return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n            !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n    };\n    /**\n     * @hidden\n     */\n    SplitButton.propTypes = {\n        accessKey: PropTypes.string,\n        onButtonClick: PropTypes.func,\n        onFocus: PropTypes.func,\n        onBlur: PropTypes.func,\n        onItemClick: PropTypes.func,\n        onOpen: PropTypes.func,\n        onClose: PropTypes.func,\n        text: PropTypes.string,\n        items: PropTypes.arrayOf(PropTypes.any),\n        textField: PropTypes.string,\n        tabIndex: PropTypes.number,\n        disabled: PropTypes.bool,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        popupSettings: PropTypes.object,\n        itemRender: PropTypes.any,\n        look: PropTypes.string,\n        className: PropTypes.string,\n        buttonClass: PropTypes.string,\n        dir: PropTypes.string\n    };\n    return SplitButton;\n}(React.Component));\nexport default SplitButton;\n//# sourceMappingURL=SplitButton.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar DropDownButtonItem = /** @class */ (function (_super) {\n    __extends(DropDownButtonItem, _super);\n    function DropDownButtonItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    DropDownButtonItem.prototype.render = function () {\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    DropDownButtonItem.propTypes = {\n        text: PropTypes.string,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        selected: PropTypes.bool,\n        disabled: PropTypes.bool,\n        render: PropTypes.any\n    };\n    return DropDownButtonItem;\n}(React.Component));\nexport default DropDownButtonItem;\n//# sourceMappingURL=DropDownButtonItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport navigation from './utils/navigation';\nimport DropDownButtonItem from './DropDownButtonItem';\nimport ButtonItem from './ButtonItem';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact DropDownButton component]({% slug overview_dropdownbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    render() {\n *        return (\n *            <DropDownButton text=\"Act\">\n *                <DropDownButtonItem text=\"Item1\" />\n *                <DropDownButtonItem text=\"Item2\" />\n *                <DropDownButtonItem text=\"Item3\" />\n *            </DropDownButton>\n *        );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n    __extends(DropDownButton, _super);\n    function DropDownButton() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            opened: false,\n            focused: false,\n            focusedIndex: -1\n        };\n        _this.wrapper = null;\n        _this.mainButton = null;\n        _this.guid = guid();\n        _this.buttonsData = [];\n        _this.onKeyDown = function (event) {\n            var _a = _this.state, opened = _a.opened, focusedIndex = _a.focusedIndex;\n            if (event.altKey) {\n                if (!opened && event.keyCode === Keys.down) {\n                    _this.dispatchPopupEvent(event, true);\n                    _this.setState({ focusedIndex: 0, opened: true });\n                }\n                else if (opened && event.keyCode === Keys.up) {\n                    _this.dispatchPopupEvent(event, false);\n                    _this.setState({ focusedIndex: -1, opened: false });\n                }\n                return;\n            }\n            var newState = undefined;\n            if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n                if (focusedIndex >= 0) {\n                    _this.dispatchClickEvent(event, focusedIndex);\n                }\n                // Prevent default because otherwise when an item is selected\n                // click on the default button gets emitted which opens the popup again.\n                event.preventDefault();\n                newState = {\n                    focusedIndex: opened ? -1 : 0,\n                    opened: !opened\n                };\n                _this.dispatchPopupEvent(event, newState.opened);\n            }\n            else if (opened && event.keyCode === Keys.esc) {\n                newState = {\n                    focusedIndex: -1,\n                    opened: false\n                };\n                _this.dispatchPopupEvent(event, newState.opened);\n            }\n            if (opened) {\n                var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n                if (newFocused !== focusedIndex) {\n                    newState = newState || {};\n                    newState.focusedIndex = newFocused;\n                }\n                var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n                    event.keyCode === Keys.left || event.keyCode === Keys.right;\n                if (!event.altKey && arrowKey) {\n                    // Needed to notify the parent listeners that event is handled.\n                    event.preventDefault();\n                }\n            }\n            if (newState) {\n                _this.setState(newState);\n            }\n        };\n        _this.onFocus = function (event) {\n            _this.setState({ focused: true, focusedIndex: _this.state.opened ? 0 : -1 });\n            dispatchEvent(_this.props.onFocus, event, _this, undefined);\n        };\n        _this.onBlur = function (event) {\n            _this.setState({ focused: false, opened: false, focusedIndex: -1 });\n            dispatchEvent(_this.props.onBlur, event, _this, undefined);\n            var fireCloseEvent = _this.state.opened;\n            if (fireCloseEvent) {\n                _this.dispatchPopupEvent(event, false);\n            }\n        };\n        _this.onItemClick = function (event, clickedItemIndex) {\n            _this.setState({ focusedIndex: -1, opened: false });\n            _this.dispatchClickEvent(event, clickedItemIndex);\n            _this.dispatchPopupEvent(event, false);\n        };\n        _this.onItemDown = function (event) {\n            if (document.activeElement === _this.element) {\n                event.preventDefault();\n            }\n        };\n        _this.mouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.onClickMainButton = function (event) {\n            if (!_this.buttonsData.length) {\n                return;\n            }\n            var opened = _this.state.opened;\n            var toOpen = !opened;\n            _this.setState({\n                opened: toOpen,\n                focused: true,\n                focusedIndex: toOpen ? 0 : -1\n            });\n            _this.dispatchPopupEvent(event, toOpen);\n        };\n        _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n            dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    DropDownButton.prototype.render = function () {\n        var _this = this;\n        var rtl = this.isRtl();\n        var dir = rtl ? 'rtl' : undefined;\n        var _a = this.props, tabIndex = _a.tabIndex, disabled = _a.disabled;\n        var focusedIndex = this.state.focusedIndex;\n        this.buttonsData = this.props.items ||\n            React.Children.toArray(this.props.children)\n                .filter(function (child) { return child && child.type === DropDownButtonItem; })\n                .map(function (child) { return child.props; });\n        return (React.createElement(\"div\", { className: classNames('k-widget', 'k-dropdown-button', this.props.className, {\n                'k-state-focused': this.state.focused\n            }), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n            React.createElement(Button, { onClick: this.onClickMainButton, onMouseDown: this.mouseDown, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, icon: this.props.icon, iconClass: this.props.iconClass, className: this.props.buttonClass, imageUrl: this.props.imageUrl, look: this.props.look, primary: this.props.primary, dir: dir, ref: function (btn) { return _this.mainButton = btn && btn.element; }, type: \"button\", \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.state.opened, \"aria-label\": this.props.text + \" dropdownbutton\", \"aria-owns\": this.guid, \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined }, this.props.text),\n            this.renderPopup(rtl)));\n    };\n    /**\n     * @hidden\n     */\n    DropDownButton.prototype.componentDidMount = function () {\n        if (this.props.dir === undefined && this.isRtl()) {\n            this.forceUpdate();\n        }\n    };\n    /**\n     * @hidden\n     */\n    DropDownButton.prototype.componentDidUpdate = function () {\n        if (this.state.focused && this.element) {\n            // firefox in mac does not focus on mouse-down, next line fixes this\n            this.element.focus();\n        }\n    };\n    Object.defineProperty(DropDownButton.prototype, \"element\", {\n        /**\n         * The DOM element of main button.\n         */\n        get: function () {\n            return this.mainButton;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DropDownButton.prototype.dispatchClickEvent = function (dispatchedEvent, index) {\n        if (!this.isItemDisabled(index)) {\n            dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n                item: this.buttonsData[index],\n                itemIndex: index\n            });\n        }\n    };\n    DropDownButton.prototype.renderPopup = function (rtl) {\n        var _a = this.props.popupSettings, popupSettings = _a === void 0 ? {} : _a;\n        return (React.createElement(Popup, { anchor: this.wrapper || undefined, show: this.state.opened, animate: popupSettings.animate, popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined },\n            React.createElement(\"ul\", { className: \"k-list k-reset\", role: \"menu\", id: this.guid }, this.renderChildItems())));\n    };\n    DropDownButton.prototype.renderChildItems = function () {\n        var _this = this;\n        var _a = this.props, itemRender = _a.itemRender, textField = _a.textField;\n        return this.buttonsData.length > 0 ? (this.buttonsData.map(function (item, index) {\n            return (React.createElement(ButtonItem, { dataItem: item, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, itemRender: itemRender, index: index, key: index, id: _this.guid + \"-\" + index }));\n        })) : null;\n    };\n    DropDownButton.prototype.isItemDisabled = function (index) {\n        return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n    };\n    DropDownButton.prototype.isRtl = function () {\n        return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n            !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n    };\n    /**\n     * @hidden\n     */\n    DropDownButton.propTypes = {\n        accessKey: PropTypes.string,\n        primary: PropTypes.bool,\n        onFocus: PropTypes.func,\n        onBlur: PropTypes.func,\n        onItemClick: PropTypes.func,\n        onOpen: PropTypes.func,\n        onClose: PropTypes.func,\n        items: PropTypes.arrayOf(PropTypes.any),\n        textField: PropTypes.string,\n        tabIndex: PropTypes.number,\n        disabled: PropTypes.bool,\n        icon: PropTypes.string,\n        iconClass: PropTypes.string,\n        imageUrl: PropTypes.string,\n        popupSettings: PropTypes.object,\n        itemRender: PropTypes.any,\n        look: PropTypes.string,\n        className: PropTypes.string,\n        buttonClass: PropTypes.string,\n        dir: PropTypes.string\n    };\n    return DropDownButton;\n}(React.Component));\nexport default DropDownButton;\n//# sourceMappingURL=DropDownButton.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the KendoReact ToolbarItem component.\n * To add a tool to the Toolbar, wrap it inside a ToolbarItem component\n * ([see example]({% slug content_toolbar %})).\n */\nvar ToolbarItem = /** @class */ (function (_super) {\n    __extends(ToolbarItem, _super);\n    function ToolbarItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        return _this;\n    }\n    Object.defineProperty(ToolbarItem.prototype, \"element\", {\n        /**\n         * Returns the HTML element of the ToolbarItem component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    ToolbarItem.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(\"span\", { className: this.props.className, style: this.props.style, ref: function (e) { return _this._element = e; } }, this.props.children));\n    };\n    /**\n     * @hidden\n     */\n    ToolbarItem.propTypes = {\n        className: PropTypes.string\n    };\n    return ToolbarItem;\n}(React.PureComponent));\nexport default ToolbarItem;\n//# sourceMappingURL=ToolbarItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n/**\n * @hidden\n */\nvar ToolbarButton = /** @class */ (function (_super) {\n    __extends(ToolbarButton, _super);\n    function ToolbarButton(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        _this.focus = function () {\n            var button = _this.element;\n            if (button) {\n                button.focus();\n            }\n        };\n        _this.state = {\n            tabIndex: props.tabIndex\n        };\n        return _this;\n    }\n    Object.defineProperty(ToolbarButton.prototype, \"button\", {\n        get: function () {\n            var element = findDOMNode(this);\n            if (element && element.nodeName !== 'BUTTON') {\n                return element.querySelector('button');\n            }\n            return element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ToolbarButton.prototype, \"tabIndex\", {\n        get: function () {\n            return this.state.tabIndex;\n        },\n        set: function (value) {\n            if (this.state.tabIndex !== value) {\n                this.setState({\n                    tabIndex: value\n                });\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ToolbarButton.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ToolbarButton.prototype.componentDidMount = function () {\n        this._element = this.button;\n        this.adjustTabIndex();\n    };\n    ToolbarButton.prototype.componentWillUnmount = function () {\n        this._element = null;\n    };\n    ToolbarButton.prototype.componentDidUpdate = function () {\n        this._element = this.button;\n        this.adjustTabIndex();\n    };\n    ToolbarButton.prototype.render = function () {\n        var button = this.props.button;\n        return React.cloneElement(button, __assign({}, button.props, { tabIndex: this.state.tabIndex }), button.props.children);\n    };\n    ToolbarButton.prototype.adjustTabIndex = function () {\n        var button = this.element;\n        var tabIndex = this.state.tabIndex;\n        if (button && button.tabIndex !== tabIndex) {\n            button.tabIndex = tabIndex;\n        }\n    };\n    return ToolbarButton;\n}(React.Component));\nexport default ToolbarButton;\n//# sourceMappingURL=ToolbarButton.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ToolbarItem from './tools/ToolbarItem';\nimport ToolbarButton from './tools/ToolbarButton';\nimport ButtonGroup from '../ButtonGroup';\nimport { classNames, Keys } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Toolbar component]({% slug overview_toolbar %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    render() {\n *       return (\n *          <Toolbar>\n *              <ToolbarItem>\n *                  <ButtonGroup>\n *                      <Button togglable={true} icon=\"bold\" />\n *                      <Button togglable={true} icon=\"italic\" />\n *                      <Button togglable={true} icon=\"underline\" />\n *                  </ButtonGroup>\n *              </ToolbarItem>\n *              <ToolbarItem>\n *                  <ButtonGroup>\n *                      <Button icon=\"hyperlink\">Insert Link</Button>\n *                      <Button icon=\"image\">Insert Image</Button>\n *                      <Button icon=\"table\">Insert Table</Button>\n *                  </ButtonGroup>\n *              </ToolbarItem>\n *          </Toolbar>\n *       );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n    __extends(Toolbar, _super);\n    function Toolbar() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        _this.buttons = [];\n        _this.focusedIndex = 0;\n        _this.counter = 0;\n        _this.offsetHeight = 0;\n        _this.offsetWidth = 0;\n        _this.mapToolbarChild = function (toolbarItem) {\n            if (toolbarItem && toolbarItem.type === ToolbarItem) {\n                return React.cloneElement(toolbarItem, toolbarItem.props, React.Children.map(toolbarItem.props.children, _this.mapItemChildren));\n            }\n            return toolbarItem;\n        };\n        _this.mapItemChildren = function (tool) {\n            if (tool.type === ButtonGroup) {\n                return React.cloneElement(tool, tool.props, React.Children.map(tool.props.children, _this.mapButton));\n            }\n            return _this.mapButton(tool);\n        };\n        _this.mapButton = function (button) {\n            var index = _this.counter;\n            _this.counter++;\n            return (React.createElement(ToolbarButton, { ref: function (b) { return _this.buttonRef(b, index); }, tabIndex: _this.focusedIndex === index ?\n                    (_this.props.tabIndex || Toolbar.defaultProps.tabIndex) : -1, button: button }));\n        };\n        _this.buttonRef = function (button, index) {\n            _this.buttons[index] = button;\n            if (!button && !_this.buttons.find(function (b) { return b !== null; })) {\n                _this.buttons.length = 0;\n            }\n        };\n        _this.onKeyDown = function (event) {\n            var target = event.target;\n            var _a = _this, focusedIndex = _a.focusedIndex, buttons = _a.buttons;\n            var arrowKey = event.keyCode === Keys.left || event.keyCode === Keys.right;\n            if (!arrowKey || event.defaultPrevented || buttons.findIndex(function (b) { return b !== null && b.element === target; }) === -1) {\n                return;\n            }\n            if (event.keyCode === Keys.left) {\n                _this.focusButton(focusedIndex, focusedIndex - 1);\n            }\n            else {\n                _this.focusButton(focusedIndex, focusedIndex + 1);\n            }\n        };\n        _this.onWindowResize = function (event) {\n            var element = _this.element;\n            if (!element) {\n                return;\n            }\n            var offsetWidth = element.offsetWidth;\n            var offsetHeight = element.offsetHeight;\n            if (_this.offsetWidth !== offsetWidth || _this.offsetHeight !== offsetHeight) {\n                _this.offsetWidth = offsetWidth;\n                _this.offsetHeight = offsetHeight;\n                var newSizes = { offsetWidth: _this.offsetWidth, offsetHeight: _this.offsetHeight };\n                if (_this.props.onResize) {\n                    _this.props.onResize.call(undefined, __assign({ target: _this }, newSizes, { nativeEvent: event }));\n                }\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(Toolbar.prototype, \"element\", {\n        /**\n         * Returns the HTML element of the Toolbar component.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Toolbar.prototype.componentDidMount = function () {\n        window.addEventListener('resize', this.onWindowResize);\n        var element = this.element;\n        if (element) {\n            this.offsetWidth = element.offsetWidth;\n            this.offsetHeight = element.offsetHeight;\n        }\n    };\n    /**\n     * @hidden\n     */\n    Toolbar.prototype.componentDidUpdate = function () {\n        var _this = this;\n        var element = this.element;\n        if (!element || this.props.keyboardNavigation === false) {\n            return;\n        }\n        var focused = element.querySelector('button:focus');\n        var prevFocusedIndex = this.focusedIndex;\n        if (!focused) {\n            this.focusedIndex = 0;\n        }\n        else {\n            var focusedIndex = this.buttons.findIndex(function (b) { return b !== null && b.element === focused; });\n            if (focusedIndex !== -1 && focusedIndex !== this.focusedIndex) {\n                this.focusedIndex = focusedIndex;\n            }\n        }\n        if (prevFocusedIndex !== this.focusedIndex) {\n            var _a = this.props.tabIndex, tabIndex_1 = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n            this.buttons.forEach(function (button, index) {\n                if (button) {\n                    button.tabIndex = (index === _this.focusedIndex && button.tabIndex === -1) ?\n                        tabIndex_1 : -1;\n                }\n            });\n        }\n    };\n    /**\n     * @hidden\n     */\n    Toolbar.prototype.componentWillUnmount = function () {\n        window.removeEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    Toolbar.prototype.render = function () {\n        var _this = this;\n        var keyboardNavigation = this.props.keyboardNavigation !== false;\n        this.counter = 0;\n        return (React.createElement(\"div\", { className: classNames('k-widget k-toolbar', this.props.className), style: this.props.style, role: \"toolbar\", dir: this.props.dir, ref: function (element) { return _this._element = element; }, onKeyDown: keyboardNavigation ? this.onKeyDown : undefined }, keyboardNavigation ?\n            React.Children.map(this.props.children, this.mapToolbarChild) :\n            this.props.children));\n    };\n    Toolbar.prototype.focusButton = function (prevIndex, index) {\n        var toolbarButton = this.buttons[index];\n        if (toolbarButton) {\n            var newFocused = toolbarButton.element;\n            var currentFocused = this.element &&\n                this.element.querySelector('button:focus');\n            var _a = this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n            this.focusedIndex = index;\n            if (currentFocused !== newFocused) {\n                toolbarButton.tabIndex = tabIndex;\n                toolbarButton.focus();\n                var prevButton = this.buttons[prevIndex];\n                if (prevButton) {\n                    prevButton.tabIndex = -1;\n                }\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    Toolbar.propTypes = {\n        tabIndex: PropTypes.number,\n        dir: PropTypes.string,\n        keyboardNavigation: PropTypes.bool,\n        style: PropTypes.object,\n        className: PropTypes.string,\n        onResize: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    Toolbar.defaultProps = {\n        tabIndex: 0\n    };\n    return Toolbar;\n}(React.Component));\nexport default Toolbar;\n//# sourceMappingURL=Toolbar.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport ToolbarItem from './ToolbarItem';\n/**\n * Represents the KendoReact Toolbar Separator component.\n */\nvar ToolbarSeparator = /** @class */ (function (_super) {\n    __extends(ToolbarSeparator, _super);\n    function ToolbarSeparator() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    ToolbarSeparator.prototype.render = function () {\n        return (React.createElement(ToolbarItem, { className: \"k-separator\" }));\n    };\n    return ToolbarSeparator;\n}(React.PureComponent));\nexport default ToolbarSeparator;\n//# sourceMappingURL=ToolbarSeparator.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact ToolbarSpacer component.\n * To specify an empty space, provide a ToolbarSpacer component\n * ([see example]({% slug content_toolbar %})).\n */\nexport var ToolbarSpacer = React.forwardRef(function (props, ref) {\n    var element = React.useRef(null);\n    var spacer = React.useRef(null);\n    React.useImperativeHandle(spacer, function () { return ({ element: element.current }); });\n    React.useImperativeHandle(ref, function () { return ({ element: element.current }); });\n    var className = React.useMemo(function () { return classNames('k-spacer', props.className); }, [props.className]);\n    return (React.createElement(\"span\", { ref: element, className: className }));\n});\nToolbarSpacer.propTypes = {\n    className: PropTypes.string\n};\n//# sourceMappingURL=ToolbarSpacer.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, date, time, dateTimePickerCancel as cancel, dateTimePickerSet as set } from '../messages';\nimport { Button, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { TimePart } from '../timepicker/TimePart';\nimport { setTime, getToday, MIN_TIME, MAX_TIME } from '../utils';\nimport { isEqualDate } from '@progress/kendo-date-math';\nimport { Keys, classNames } from '@progress/kendo-react-common';\nimport { MIDNIGHT_DATE } from '../defaults';\nimport { getNow } from '../timepicker/utils';\n/**\n * @hidden\n */\nvar DateTimeSelector = /** @class */ (function (_super) {\n    __extends(DateTimeSelector, _super);\n    function DateTimeSelector(props) {\n        var _this = _super.call(this, props) || this;\n        _this.focus = function (args) {\n            // Async to avoid stealing the focus from the DateInput on close\n            Promise.resolve().then(function () {\n                if (_this.state.tab === 'time' && _this._timePart) {\n                    _this._timePart.focus(args);\n                }\n                if (_this.state.tab === 'date' && _this._calendar && _this._calendar.element) {\n                    _this._calendar.element.focus(args);\n                }\n            });\n        };\n        _this.move = function (direction) {\n            if (direction === 'right' && _this.state.tab === 'time') {\n                return;\n            }\n            if (direction === 'left' && _this.state.tab === 'date') {\n                return;\n            }\n            var nextPart = direction === 'left' ? 'date' : 'time';\n            _this.shouldFocusPart = true;\n            _this.setState({ tab: nextPart });\n        };\n        _this.handleReject = function (event) {\n            _this.setState({ dateValue: _this.props.value, timeValue: _this.props.value || MIDNIGHT_DATE });\n            var value = _this.mergeDate(_this.props.value, _this.props.value || MIDNIGHT_DATE);\n            if (_this.props.onReject) {\n                var args = {\n                    nativeEvent: event.nativeEvent,\n                    syntheticEvent: event,\n                    target: _this,\n                    value: value\n                };\n                _this.props.onReject.call(undefined, args);\n            }\n        };\n        _this.handleAccept = function (event, timeOverride) {\n            if (!_this.state.dateValue || !_this.state.timeValue || !_this.hasDateValue) {\n                return;\n            }\n            var value = _this.mergeDate(_this.state.dateValue, timeOverride || _this.state.timeValue);\n            _this.props.onChange.call(undefined, {\n                syntheticEvent: event,\n                nativeEvent: event.nativeEvent,\n                value: value,\n                target: _this\n            });\n        };\n        _this.handleNowClick = function (event) {\n            _this.setState({ timeValue: getNow() });\n            _this.handleAccept(event, getNow());\n        };\n        _this.handleCalendarValueChange = function (event) {\n            event.syntheticEvent.stopPropagation();\n            _this.setState({ dateValue: event.value, tab: 'time' });\n            _this.shouldFocusPart = true;\n        };\n        _this.handleTimeListContainerChange = function (candidate) {\n            _this.setState({ timeValue: candidate });\n        };\n        _this.handleDateClick = function (event) {\n            event.stopPropagation();\n            _this.move('left');\n        };\n        _this.handleTimeClick = function (event) {\n            event.stopPropagation();\n            _this.move('right');\n        };\n        _this.handleKeyDown = function (event) {\n            var keyCode = event.keyCode, altKey = event.altKey;\n            switch (keyCode) {\n                case Keys.enter:\n                    if (!_this.hasActiveButton() && _this.hasDateValue) {\n                        _this.handleAccept(event);\n                    }\n                    return;\n                case Keys.left:\n                    if (!altKey) {\n                        return;\n                    }\n                    _this.move('left');\n                    return;\n                case Keys.right:\n                    if (!altKey) {\n                        return;\n                    }\n                    _this.move('right');\n                    return;\n                default:\n                    return;\n            }\n        };\n        _this.handleTimePartMount = function (value) {\n            _this.setState({ timeValue: value });\n        };\n        _this.state = {\n            tab: 'date',\n            dateValue: _this.props.value,\n            timeValue: _this.props.value || MIDNIGHT_DATE\n        };\n        return _this;\n    }\n    Object.defineProperty(DateTimeSelector.prototype, \"calendar\", {\n        get: function () {\n            return this._calendar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimeSelector.prototype, \"timePart\", {\n        get: function () {\n            return this._timePart;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimeSelector.prototype, \"hasDateValue\", {\n        get: function () {\n            return this.state.dateValue !== null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DateTimeSelector.prototype.componentDidUpdate = function () {\n        if (this.shouldFocusPart) {\n            this.focus({ preventScroll: true });\n        }\n        this.shouldFocusPart = false;\n    };\n    DateTimeSelector.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disabled = _a.disabled, cancelButton = _a.cancelButton, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, format = _a.format;\n        var rootClassName = classNames({\n            'k-date-tab': this.state.tab === 'date',\n            'k-time-tab': this.state.tab === 'time',\n            'k-state-disabled': disabled\n        }, 'k-datetime-wrap');\n        var setButtonClassName = classNames({ 'k-state-disabled': !this.hasDateValue }, 'k-time-accept k-button k-primary');\n        var localizationService = provideLocalizationService(this);\n        var dateMessage = localizationService.toLanguageString(date, messages[date]);\n        var timeMessage = localizationService.toLanguageString(time, messages[time]);\n        var cancelMessage = localizationService.toLanguageString(cancel, messages[cancel]);\n        var setMessage = localizationService.toLanguageString(set, messages[set]);\n        return (React.createElement(\"div\", { onKeyDown: this.handleKeyDown, className: rootClassName, tabIndex: -1 },\n            React.createElement(\"div\", { className: \"k-datetime-buttongroup\" },\n                React.createElement(ButtonGroup, { width: \"100%\" },\n                    React.createElement(Button, { selected: this.state.tab === 'date', togglable: true, onClick: this.handleDateClick }, dateMessage),\n                    React.createElement(Button, { selected: this.state.tab === 'time', togglable: true, onClick: this.handleTimeClick }, timeMessage))),\n            React.createElement(\"div\", { className: \"k-datetime-selector\" },\n                React.createElement(\"div\", { className: \"k-datetime-calendar-wrap\" }, React.createElement(Calendar, { key: 0, disabled: disabled || this.state.tab !== 'date', ref: function (calendar) { _this._calendar = calendar; }, value: this.state.dateValue, min: min, max: max, weekNumber: weekNumber, focusedDate: focusedDate, onChange: this.handleCalendarValueChange, navigation: false })),\n                React.createElement(\"div\", { className: \"k-datetime-time-wrap\" }, React.createElement(TimePart, { key: 1, onNowClick: this.handleNowClick, disabled: disabled || this.state.tab !== 'time', ref: function (timePart) { _this._timePart = timePart; }, min: this.minTime || MIN_TIME, max: this.maxTime || MAX_TIME, value: this.state.timeValue, format: format, onChange: this.handleTimeListContainerChange, onMount: this.handleTimePartMount }))),\n            React.createElement(\"div\", { className: \"k-datetime-footer k-action-buttons\" },\n                cancelButton && React.createElement(\"button\", __assign({ ref: function (btn) { _this._cancelButton = btn; }, className: \"k-button k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n                React.createElement(\"button\", __assign({ ref: function (btn) { _this._acceptButton = btn; }, className: setButtonClassName, onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n    };\n    Object.defineProperty(DateTimeSelector.prototype, \"minTime\", {\n        get: function () {\n            return this.props.minTime !== undefined\n                ? this.props.minTime\n                : this.normalizeRange(this.props.min, this.state.dateValue);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimeSelector.prototype, \"maxTime\", {\n        get: function () {\n            return this.props.maxTime !== undefined\n                ? this.props.maxTime\n                : this.normalizeRange(this.props.max, this.state.dateValue);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DateTimeSelector.prototype.normalizeRange = function (candidate, value) {\n        return isEqualDate(candidate, value || getToday())\n            ? candidate\n            : null;\n    };\n    DateTimeSelector.prototype.hasActiveButton = function () {\n        if (!this._acceptButton) {\n            return false;\n        }\n        return document.activeElement === this._acceptButton\n            || document.activeElement === this._cancelButton;\n    };\n    DateTimeSelector.prototype.mergeTime = function (current, candidate) {\n        return current && candidate ? setTime(candidate, current) : candidate;\n    };\n    DateTimeSelector.prototype.mergeDate = function (candidate, value) {\n        return candidate ? setTime(candidate || getToday(), value) : value;\n    };\n    return DateTimeSelector;\n}(React.Component));\nexport { DateTimeSelector };\nregisterForLocalization(DateTimeSelector);\n//# sourceMappingURL=DateTimeSelector.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MIN_DATE, MAX_DATE, isInDateRange, MAX_TIME } from '../utils';\nimport { messages, toggleDateTimeSelector } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { DateTimeSelector } from './DateTimeSelector';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME } from '../defaults';\nvar DateTimePicker = /** @class */ (function (_super) {\n    __extends(DateTimePicker, _super);\n    function DateTimePicker(props) {\n        var _this = _super.call(this, props) || this;\n        _this._popupId = guid();\n        _this._element = null;\n        _this._wrapper = null;\n        _this._dateInput = null;\n        _this._dateTimeSelector = null;\n        _this.shouldFocusDateInput = false;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._dateInput) {\n                _this._dateInput.focus();\n            }\n        };\n        _this.handleReject = function () {\n            _this.setShow(false);\n        };\n        _this.handleValueChange = function (event) {\n            _this.setState({\n                value: cloneDate(event.value || undefined),\n                show: false\n            });\n            _this.valueDuringOnChange = event.value;\n            _this.showDuringOnChange = false;\n            _this.shouldFocusDateInput = true;\n            var onChange = _this.props.onChange;\n            if (onChange) {\n                onChange.call(undefined, {\n                    syntheticEvent: event.syntheticEvent,\n                    nativeEvent: event.nativeEvent,\n                    value: _this.value,\n                    show: _this.show,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n            _this.showDuringOnChange = undefined;\n        };\n        _this.handleFocus = function (event) {\n            clearTimeout(_this.nextTickId);\n            if (_this._wrapper) {\n                _this._wrapper.classList.add('k-state-focused');\n            }\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleBlur = function (event) {\n            _this.nextTick(function () {\n                if (_this._wrapper) {\n                    _this._wrapper.classList.remove('k-state-focused');\n                }\n                _this.setShow(false);\n            });\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.handleDateIconClick = function () {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.shouldFocusDateInput = true;\n            _this.setShow(!_this.show);\n        };\n        _this.handleIconMouseDown = function (event) {\n            event.preventDefault();\n        };\n        _this.handleKeyDown = function (event) {\n            var altKey = event.altKey, keyCode = event.keyCode;\n            if (keyCode === Keys.esc) {\n                _this.setShow(false);\n                return;\n            }\n            if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n                event.preventDefault();\n                event.stopPropagation();\n                _this.shouldFocusDateInput = keyCode === Keys.up;\n                _this.setShow(keyCode === Keys.down);\n            }\n        };\n        _this.state = {\n            value: _this.props.defaultValue || DateTimePicker.defaultProps.defaultValue,\n            show: _this.props.defaultShow || DateTimePicker.defaultProps.defaultShow\n        };\n        return _this;\n    }\n    Object.defineProperty(DateTimePicker.prototype, \"element\", {\n        /**\n         * Gets the wrapping element of the DateTimePicker.\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"dateInput\", {\n        /**\n         * Gets the DateInput component inside the DateTimePicker component.\n         */\n        get: function () {\n            return this._dateInput;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"value\", {\n        /**\n         * Gets the value of the DateTimePicker.\n         */\n        get: function () {\n            var value = this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n            return (value !== null) ? cloneDate(value) : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"show\", {\n        /**\n         * Gets the popup state of the DateTimePicker.\n         */\n        get: function () {\n            return this.showDuringOnChange !== undefined\n                ? this.showDuringOnChange\n                : this.props.show !== undefined\n                    ? this.props.show\n                    : this.state.show;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the DateTimePicker.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"min\", {\n        get: function () {\n            return this.props.min !== undefined\n                ? this.props.min\n                : DateTimePicker.defaultProps.min;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"max\", {\n        get: function () {\n            return this.props.max !== undefined\n                ? this.props.max\n                : DateTimePicker.defaultProps.max;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the DateTimePicker is set.\n         */\n        get: function () {\n            var inRange = isInDateRange(this.value, this.min, this.max)\n                && isInTimeRange(this.value, this.props.minTime || MIN_TIME, this.props.maxTime || MAX_TIME);\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = (!this.required || this.value !== null) && inRange;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n                rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : DateTimePicker.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(DateTimePicker.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : DateTimePicker.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    DateTimePicker.prototype.componentDidMount = function () {\n        if (this.show) {\n            // If defaultShow is true during the initial render, the popup is not aligned.\n            this.forceUpdate();\n        }\n        if (this._dateInput && this._dateInput.element) {\n            this._dateInput.element.setAttribute('aria-haspopup', 'true');\n            this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n    };\n    /**\n     * @hidden\n     */\n    DateTimePicker.prototype.componentDidUpdate = function (prevProps) {\n        if (this._dateInput && this._dateInput.element) {\n            this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n        }\n        if (this._dateTimeSelector && this.show && !prevProps.show) {\n            this._dateTimeSelector.focus({ preventScroll: true });\n        }\n        if (this._dateInput\n            && this._dateInput.element\n            && !this.show\n            && this.shouldFocusDateInput) {\n            this._dateInput.element.focus({ preventScroll: true });\n        }\n        this.shouldFocusDateInput = false;\n    };\n    /**\n     * @hidden\n     */\n    DateTimePicker.prototype.componentWillUnmount = function () {\n        clearTimeout(this.nextTickId);\n    };\n    /**\n     * @hidden\n     */\n    DateTimePicker.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, cancelButton = _a.cancelButton, minTime = _a.minTime, maxTime = _a.maxTime, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var rootClassName = classNames('k-widget k-datetimepicker', {\n            'k-state-invalid': !isValid\n        }, className);\n        var wrapperClassNames = classNames('k-picker-wrap', {\n            'k-state-default': !disabled,\n            'k-state-disabled': disabled\n        });\n        return (React.createElement(\"div\", { ref: function (div) { _this._element = div; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n            React.createElement(\"div\", { ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n                React.createElement(DateInput, { ref: function (dateInput) { _this._dateInput = dateInput; }, id: id, ariaLabelledBy: ariaLabelledBy, ariaDescribedBy: ariaDescribedBy, format: format, formatPlaceholder: formatPlaceholder, disabled: disabled, tabIndex: !this.show ? tabIndex : -1, title: title, valid: this.validity.valid, validityStyles: validityStyles, validationMessage: validationMessage, required: required, min: min, max: max, minTime: minTime, maxTime: maxTime, value: this.value, onChange: this.handleValueChange, name: name }),\n                React.createElement(\"span\", __assign({ role: \"button\", onMouseDown: this.handleIconMouseDown, onClick: this.handleDateIconClick, title: provideLocalizationService(this)\n                        .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector]), className: \"k-select\" }, {\n                    'aria-controls': this._popupId,\n                    'aria-label': provideLocalizationService(this)\n                        .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector])\n                }),\n                    React.createElement(\"span\", { className: \"k-link k-link-date\" },\n                        React.createElement(\"span\", { className: \"k-icon k-i-calendar\" })))),\n            React.createElement(Popup, { show: this.show, animate: this._wrapper !== null, anchor: this._wrapper || undefined, className: \"k-datetime-container k-group k-reset\", id: this._popupId, anchorAlign: {\n                    horizontal: 'left',\n                    vertical: 'bottom'\n                }, popupAlign: {\n                    horizontal: 'left',\n                    vertical: 'top'\n                } },\n                React.createElement(DateTimeSelector, { ref: function (dateTimeSelector) { _this._dateTimeSelector = dateTimeSelector; }, cancelButton: cancelButton, value: this.value, onChange: this.handleValueChange, onReject: this.handleReject, disabled: disabled, weekNumber: weekNumber, min: this.min, max: this.max, minTime: minTime, maxTime: maxTime, focusedDate: focusedDate, format: format }))));\n    };\n    DateTimePicker.prototype.setShow = function (show) {\n        if (this.show === show) {\n            return;\n        }\n        this.setState({ show: show });\n    };\n    DateTimePicker.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        // Handles multiple focus events happening at the same time.\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    /**\n     * @hidden\n     */\n    DateTimePicker.propTypes = {\n        className: PropTypes.string,\n        defaultShow: PropTypes.bool,\n        defaultValue: PropTypes.instanceOf(Date),\n        disabled: PropTypes.bool,\n        focusedDate: PropTypes.instanceOf(Date),\n        format: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.shape({\n                skeleton: PropTypes.string,\n                pattern: PropTypes.string,\n                date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n                era: PropTypes.oneOf(['narrow', 'short', 'long']),\n                year: PropTypes.oneOf(['numeric', '2-digit']),\n                month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n                day: PropTypes.oneOf(['numeric', '2-digit']),\n                weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n                hour: PropTypes.oneOf(['numeric', '2-digit']),\n                hour12: PropTypes.bool,\n                minute: PropTypes.oneOf(['numeric', '2-digit']),\n                second: PropTypes.oneOf(['numeric', '2-digit']),\n                timeZoneName: PropTypes.oneOf(['short', 'long'])\n            })\n        ]),\n        formatPlaceholder: PropTypes.oneOfType([\n            PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n            PropTypes.shape({\n                year: PropTypes.string,\n                month: PropTypes.string,\n                day: PropTypes.string,\n                hour: PropTypes.string,\n                minute: PropTypes.string,\n                second: PropTypes.string\n            })\n        ]),\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        min: PropTypes.instanceOf(Date),\n        max: PropTypes.instanceOf(Date),\n        name: PropTypes.string,\n        popupSettings: PropTypes.shape({\n            animate: PropTypes.bool,\n            appendTo: PropTypes.any,\n            popupClass: PropTypes.string\n        }),\n        show: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        title: PropTypes.string,\n        value: PropTypes.instanceOf(Date),\n        weekNumber: PropTypes.bool,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        valid: PropTypes.bool,\n        cancelButton: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    DateTimePicker.defaultProps = {\n        defaultShow: false,\n        defaultValue: null,\n        disabled: false,\n        format: 'g',\n        max: MAX_DATE,\n        min: MIN_DATE,\n        popupSettings: {},\n        tabIndex: 0,\n        title: '',\n        weekNumber: false,\n        required: false,\n        validityStyles: true,\n        cancelButton: true\n    };\n    return DateTimePicker;\n}(React.Component));\nexport { DateTimePicker };\nregisterForLocalization(DateTimePicker);\n//# sourceMappingURL=DateTimePicker.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nvar settings = {\n    inputComponent: function (props) { return React.createElement(DatePicker, __assign({}, props)); },\n    operatorComponent: function (props) { return React.createElement(DropDownList, __assign({}, props)); },\n    emptyFilter: { operator: 'eq', value: null }\n};\n/**\n * @hidden\n */\nvar DateFilterCell = /** @class */ (function (_super) {\n    __extends(DateFilterCell, _super);\n    function DateFilterCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return DateFilterCell;\n}(createFilterCell(settings)));\nexport { DateFilterCell };\n//# sourceMappingURL=DateFilter.js.map","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds.\n * If the number is NaN or null, the minimum is returned.\n *\n * @param contender Represents the number you want to fit into the specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nexport var fitIntoBounds = function (contender, min, max) {\n    if (!isPresent(contender) || isNaN(contender)) {\n        return min;\n    }\n    return contender <= min ? min : contender >= max ? max : contender;\n};\n//# sourceMappingURL=misc.js.map","\nvar ObserversMixin = {\n    extend: function(proto) {\n        var this$1 = this;\n\n        for (var method in this$1) {\n            if (method !== \"extend\") {\n                proto[method] = this$1[method];\n            }\n        }\n    },\n\n    observers: function() {\n        this._observers = this._observers || [];\n        return this._observers;\n    },\n\n    addObserver: function(element) {\n        if (!this._observers) {\n            this._observers = [ element ];\n        } else {\n            this._observers.push(element);\n        }\n        return this;\n    },\n\n    removeObserver: function(element) {\n        var observers = this.observers();\n        var index = observers.indexOf(element);\n        if (index !== -1) {\n            observers.splice(index, 1);\n        }\n        return this;\n    },\n\n    trigger: function(methodName, event) {\n        var observers = this._observers;\n\n        if (observers && !this._suspended) {\n            for (var idx = 0; idx < observers.length; idx++) {\n                var observer = observers[idx];\n                if (observer[methodName]) {\n                    observer[methodName](event);\n                }\n            }\n        }\n        return this;\n    },\n\n    optionsChange: function(e) {\n        if ( e === void 0 ) e = {};\n\n        e.element = this;\n        this.trigger(\"optionsChange\", e);\n    },\n\n    geometryChange: function() {\n        this.trigger(\"geometryChange\", {\n            element: this\n        });\n    },\n\n    suspend: function() {\n        this._suspended = (this._suspended || 0) + 1;\n        return this;\n    },\n\n    resume: function() {\n        this._suspended = Math.max((this._suspended || 0) - 1, 0);\n        return this;\n    },\n\n    _observerField: function(field, value) {\n        if (this[field]) {\n            this[field].removeObserver(this);\n        }\n        this[field] = value;\n        value.addObserver(this);\n    }\n};\n\nexport default ObserversMixin;","var wnd = typeof window !== \"undefined\" ? window : {};\n\nvar animationFrame = wnd.requestAnimationFrame ||\n                    wnd.webkitRequestAnimationFrame ||\n                    wnd.mozRequestAnimationFrame ||\n                    wnd.oRequestAnimationFrame ||\n                    wnd.msRequestAnimationFrame ||\n                    function(callback) { setTimeout(callback, 1000 / 60); };\n\nexport default function animationFrameProxy(callback) {\n    animationFrame.call(wnd, callback);\n}\n","var Class = function Class () {};\n\nexport default Class;","var ampRegExp = /&/g;\nvar ltRegExp = /</g;\nvar quoteRegExp = /\"/g;\nvar aposRegExp = /'/g;\nvar gtRegExp = />/g;\n\nexport default function htmlEncode(value) {\n    return String(value).replace(ampRegExp, \"&amp;\").replace(ltRegExp, \"&lt;\").replace(gtRegExp, \"&gt;\").replace(quoteRegExp, \"&quot;\").replace(aposRegExp, \"&#39;\");\n}","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n    var console = window.console;\n\n    if (typeof(console) != \"undefined\" && console.log) {\n        console.log(message);\n    }\n}","import Class from './class';\n\nvar Observable = (function (Class) {\n    function Observable() {\n        Class.call(this);\n\n        this._events = {};\n    }\n\n    if ( Class ) Observable.__proto__ = Class;\n    Observable.prototype = Object.create( Class && Class.prototype );\n    Observable.prototype.constructor = Observable;\n\n    Observable.prototype.bind = function bind (eventName, handlers, one) {\n        var arguments$1 = arguments;\n        var this$1 = this;\n\n        var eventNames = getArray(eventName);\n        var handlersIsFunction = isFunction(handlers);\n        var length = eventNames.length;\n\n        if (handlers === undefined) {\n            for (var field in eventName) {\n                this$1.bind(field, eventName[field]);\n            }\n            return this;\n        }\n\n        var loop = function ( idx ) {\n            var eventName$1 = eventNames[idx];\n\n            var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n            if (handler) {\n                if (one) {\n                    var original = handler;\n                    handler = function () { // eslint-disable-line no-loop-func\n                        this$1.unbind(eventName$1, handler);\n                        original.apply(this$1, arguments$1);\n                    };\n                    handler.original = original;\n                }\n                var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n                events.push(handler);\n            }\n        };\n\n        for (var idx = 0; idx < length; idx++) loop( idx );\n\n        return this;\n    };\n\n    Observable.prototype.one = function one (eventNames, handlers) {\n        return this.bind(eventNames, handlers, true);\n    };\n\n    Observable.prototype.first = function first (eventName, handlers) {\n        var this$1 = this;\n\n        var eventNames = getArray(eventName);\n        var handlersIsFunction = isFunction(handlers);\n\n        for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n            var eventName$1 = eventNames[idx];\n\n            var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n            if (handler) {\n                var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n                events.unshift(handler);\n            }\n        }\n\n        return this;\n    };\n\n    Observable.prototype.trigger = function trigger (eventName, e) {\n        var this$1 = this;\n        if ( e === void 0 ) e = {};\n\n        var events = this._events[eventName];\n\n        if (events) {\n            var length = events.length;\n\n            e.sender = this;\n            e._defaultPrevented = false;\n            e.preventDefault = preventDefault;\n            e.isDefaultPrevented = isDefaultPrevented;\n\n            events = events.slice();\n\n            for (var idx = 0; idx < length; idx++) {\n                events[idx].call(this$1, e);\n            }\n\n            return e._defaultPrevented === true;\n        }\n\n        return false;\n    };\n\n    Observable.prototype.unbind = function unbind (eventName, handler) {\n        var events = this._events[eventName];\n\n        if (eventName === undefined) {\n            this._events = {};\n        } else if (events) {\n            if (handler) {\n                for (var idx = events.length - 1; idx >= 0; idx--) {\n                    if (events[idx] === handler || events[idx].original === handler) {\n                        events.splice(idx, 1);\n                    }\n                }\n            } else {\n                this._events[eventName] = [];\n            }\n        }\n\n        return this;\n    };\n\n    return Observable;\n}(Class));\n\nfunction isFunction(value) {\n    return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n    return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n    this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n    return this._defaultPrevented === true;\n}\n\nexport default Observable;","var support = {};\n\nif (typeof window !== 'undefined') {\n    support.browser = (function(userAgent) {\n        var browserRxs = {\n            edge: /(edge)[ \\/]([\\w.]+)/i,\n            webkit: /(chrome)[ \\/]([\\w.]+)/i,\n            safari: /(webkit)[ \\/]([\\w.]+)/i,\n            opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n            msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n            mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n        };\n\n        var browser;\n\n        for (var agent in browserRxs) {\n            if (browserRxs.hasOwnProperty(agent)) {\n                var match = userAgent.match(browserRxs[agent]);\n                if (match) {\n                    browser = {};\n                    browser[agent] = true;\n                    browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n                    browser.version = parseInt(document.documentMode || match[2], 10);\n\n                    break;\n                }\n            }\n        }\n\n        return browser;\n\n    })(window.navigator.userAgent);\n}\n\nexport default support;\n\n","function now() {\n    return new Date().getTime();\n}\n\nexport default function throttle(fn, delay) {\n    var lastExecTime = 0;\n    var timeout;\n\n    if (!delay || delay <= 0) {\n        return fn;\n    }\n\n    var throttled = function() {\n        var elapsed = now() - lastExecTime;\n        var args = arguments;\n\n        var exec = function() {\n            fn.apply(null, args);\n            lastExecTime = now();\n        };\n\n        // first execution\n        if (!lastExecTime) {\n            return exec();\n        }\n\n        if (timeout) {\n            clearTimeout(timeout);\n        }\n\n        if (elapsed > delay) {\n            exec();\n        } else {\n            timeout = setTimeout(exec, delay - elapsed);\n        }\n    };\n\n    throttled.cancel = function() {\n        clearTimeout(timeout);\n    };\n\n    return throttled;\n}","var namedColors = {\n    aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n    aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n    bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n    blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n    burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n    chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n    darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n    darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n    darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n    dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n    fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n    grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n    honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n    indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n    lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n    lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n    lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n    linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n    midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n    oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n    orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n    palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n    peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n    powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n    rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n    salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n    seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n    skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n    slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n    steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n    thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n    violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n    whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n    var colorNames = Object.keys(namedColors);\n    colorNames.push(\"transparent\");\n\n    var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n    matchNamedColor = function (color) { return regexp.exec(color); };\n\n    return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n    function BaseColor() { Class.call(this); }\n\n    if ( Class ) BaseColor.__proto__ = Class;\n    BaseColor.prototype = Object.create( Class && Class.prototype );\n    BaseColor.prototype.constructor = BaseColor;\n    BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n    BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n    BaseColor.prototype.toHex = function toHex () { return this.toBytes().toHex(); };\n\n    BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n    BaseColor.prototype.toCss = function toCss () { return \"#\" + this.toHex(); };\n\n    BaseColor.prototype.toCssRgba = function toCssRgba () {\n        var rgb = this.toBytes();\n        return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n    };\n\n    BaseColor.prototype.toDisplay = function toDisplay () {\n        if (browser.msie && browser.version < 9) {\n            return this.toCss(); // no RGBA support; does it support any opacity in colors?\n        }\n        return this.toCssRgba();\n    };\n\n    BaseColor.prototype.equals = function equals (c) {\n        return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n    };\n\n    BaseColor.prototype.diff = function diff (other) {\n        if (other === null) {\n            return NaN;\n        }\n\n        var c1 = this.toBytes();\n        var c2 = other.toBytes();\n\n        return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n                         Math.pow((c1.g - c2.g) * 0.59, 2) +\n                         Math.pow((c1.b - c2.b) * 0.11, 2));\n    };\n\n    BaseColor.prototype.clone = function clone () {\n        var c = this.toBytes();\n        if (c === this) {\n            c = new Bytes(c.r, c.g, c.b, c.a);\n        }\n\n        return c;\n    };\n\n    return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n    function RGB(r, g, b, a) {\n        BaseColor.call(this);\n\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n    }\n\n    if ( BaseColor ) RGB.__proto__ = BaseColor;\n    RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n    RGB.prototype.constructor = RGB;\n\n    RGB.prototype.toHSV = function toHSV () {\n        var ref = this;\n        var r = ref.r;\n        var g = ref.g;\n        var b = ref.b;\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n        var delta = max - min;\n        var v = max;\n        var h, s;\n\n        if (delta === 0) {\n            return new HSV(0, 0, v, this.a);\n        }\n\n        if (max !== 0) {\n            s = delta / max;\n            if (r === max) {\n                h = (g - b) / delta;\n            } else if (g === max) {\n                h = 2 + (b - r) / delta;\n            } else {\n                h = 4 + (r - g) / delta;\n            }\n\n            h *= 60;\n            if (h < 0) {\n                h += 360;\n            }\n        } else {\n            s = 0;\n            h = -1;\n        }\n\n        return new HSV(h, s, v, this.a);\n    };\n\n    RGB.prototype.toHSL = function toHSL () {\n        var ref = this;\n        var r = ref.r;\n        var g = ref.g;\n        var b = ref.b;\n        var max = Math.max(r, g, b);\n        var min = Math.min(r, g, b);\n        var h, s, l = (max + min) / 2;\n\n        if (max === min) {\n            h = s = 0;\n        } else {\n            var d = max - min;\n            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n            switch (max) {\n                case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n                case g: h = (b - r) / d + 2; break;\n                case b: h = (r - g) / d + 4; break;\n                default: break;\n            }\n        }\n\n        return new HSL(h * 60, s * 100, l * 100, this.a);\n    };\n\n    RGB.prototype.toBytes = function toBytes () {\n        return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n    };\n\n    return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n    function Bytes(r, g, b, a) {\n        RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n    }\n\n    if ( RGB ) Bytes.__proto__ = RGB;\n    Bytes.prototype = Object.create( RGB && RGB.prototype );\n    Bytes.prototype.constructor = Bytes;\n\n    Bytes.prototype.toRGB = function toRGB () {\n        return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n    };\n\n    Bytes.prototype.toHSV = function toHSV () {\n        return this.toRGB().toHSV();\n    };\n\n    Bytes.prototype.toHSL = function toHSL () {\n        return this.toRGB().toHSL();\n    };\n\n    Bytes.prototype.toHex = function toHex () {\n        return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n    };\n\n    Bytes.prototype.toBytes = function toBytes () {\n        return this;\n    };\n\n    return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n    if ( pad === void 0 ) pad = \"0\";\n\n    var result = n.toString(16);\n    while (width > result.length) {\n        result = pad + result;\n    }\n\n    return result;\n}\n\nvar HSV = (function (BaseColor) {\n    function HSV(h, s, v, a) {\n        BaseColor.call(this);\n\n        this.h = h;\n        this.s = s;\n        this.v = v;\n        this.a = a;\n    }\n\n    if ( BaseColor ) HSV.__proto__ = BaseColor;\n    HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n    HSV.prototype.constructor = HSV;\n\n    HSV.prototype.toRGB = function toRGB () {\n        var ref = this;\n        var h = ref.h;\n        var s = ref.s;\n        var v = ref.v;\n        var r, g, b;\n\n        if (s === 0) {\n            r = g = b = v;\n        } else {\n            h /= 60;\n\n            var i = Math.floor(h);\n            var f = h - i;\n            var p = v * (1 - s);\n            var q = v * (1 - s * f);\n            var t = v * (1 - s * (1 - f));\n\n            switch (i) {\n                case 0: r = v; g = t; b = p; break;\n                case 1: r = q; g = v; b = p; break;\n                case 2: r = p; g = v; b = t; break;\n                case 3: r = p; g = q; b = v; break;\n                case 4: r = t; g = p; b = v; break;\n                default: r = v; g = p; b = q; break;\n            }\n        }\n\n        return new RGB(r, g, b, this.a);\n    };\n\n    HSV.prototype.toHSL = function toHSL () {\n        return this.toRGB().toHSL();\n    };\n\n    HSV.prototype.toBytes = function toBytes () {\n        return this.toRGB().toBytes();\n    };\n\n    return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n    function HSL(h, s, l, a) {\n        BaseColor.call(this);\n\n        this.h = h;\n        this.s = s;\n        this.l = l;\n        this.a = a;\n    }\n\n    if ( BaseColor ) HSL.__proto__ = BaseColor;\n    HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n    HSL.prototype.constructor = HSL;\n\n    HSL.prototype.toRGB = function toRGB () {\n        var h = this.h / 360;\n        var s = this.s / 100;\n        var l = this.l / 100;\n        var r, g, b;\n\n        if (s === 0) {\n            r = g = b = l; // achromatic\n        } else {\n            var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n            var p = 2 * l - q;\n            r = hue2rgb(p, q, h + 1 / 3);\n            g = hue2rgb(p, q, h);\n            b = hue2rgb(p, q, h - 1 / 3);\n        }\n\n        return new RGB(r, g, b, this.a);\n    };\n\n    HSL.prototype.toHSV = function toHSV () {\n        return this.toRGB().toHSV();\n    };\n\n    HSL.prototype.toBytes = function toBytes () {\n        return this.toRGB().toBytes();\n    };\n\n    return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n    var t = s;\n\n    if (t < 0) {\n        t += 1;\n    }\n\n    if (t > 1) {\n        t -= 1;\n    }\n\n    if (t < 1 / 6) {\n        return p + (q - p) * 6 * t;\n    }\n\n    if (t < 1 / 2) {\n        return q;\n    }\n\n    if (t < 2 / 3) {\n        return p + (q - p) * (2 / 3 - t) * 6;\n    }\n\n    return p;\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n    var m, ret;\n\n    if (value == null || value === \"none\") {\n        return null;\n    }\n\n    if (value instanceof BaseColor) {\n        return value;\n    }\n\n    var color = value.toLowerCase();\n    if ((m = matchNamedColor(color))) {\n        if (m[1] === \"transparent\") {\n            color = new RGB(1, 1, 1, 0);\n        } else {\n            color = parseColor(namedColors[m[1]], safe);\n        }\n        color.match = [ m[1] ];\n        return color;\n    }\n    if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 16),\n                        parseInt(m[2], 16),\n                        parseInt(m[3], 16), 1);\n    } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n        ret = new Bytes(parseInt(m[1] + m[1], 16),\n                        parseInt(m[2] + m[2], 16),\n                        parseInt(m[3] + m[3], 16), 1);\n    } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 10),\n                        parseInt(m[2], 10),\n                        parseInt(m[3], 10), 1);\n    } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n        ret = new Bytes(parseInt(m[1], 10),\n                        parseInt(m[2], 10),\n                        parseInt(m[3], 10), parseFloat(m[4]));\n    } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n        ret = new RGB(parseFloat(m[1]) / 100,\n                      parseFloat(m[2]) / 100,\n                      parseFloat(m[3]) / 100, 1);\n    } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n        ret = new RGB(parseFloat(m[1]) / 100,\n                      parseFloat(m[2]) / 100,\n                      parseFloat(m[3]) / 100, parseFloat(m[4]));\n    }\n\n    if (ret) {\n        ret.match = m;\n    } else if (!safe) {\n        throw new Error(\"Cannot parse color: \" + color);\n    }\n\n    return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n    function Color(value) {\n        var this$1 = this;\n\n        Class.call(this);\n\n        if (arguments.length === 1) {\n            var formats = Color.formats;\n            var resolvedColor = this.resolveColor(value);\n\n            for (var idx = 0; idx < formats.length; idx++) {\n                var formatRegex = formats[idx].re;\n                var processor = formats[idx].process;\n                var parts = formatRegex.exec(resolvedColor);\n\n                if (parts) {\n                    var channels = processor(parts);\n                    this$1.r = channels[0];\n                    this$1.g = channels[1];\n                    this$1.b = channels[2];\n                }\n            }\n        } else {\n            this.r = arguments[0];\n            this.g = arguments[1];\n            this.b = arguments[2];\n        }\n\n        this.r = this.normalizeByte(this.r);\n        this.g = this.normalizeByte(this.g);\n        this.b = this.normalizeByte(this.b);\n    }\n\n    if ( Class ) Color.__proto__ = Class;\n    Color.prototype = Object.create( Class && Class.prototype );\n    Color.prototype.constructor = Color;\n\n    Color.prototype.toHex = function toHex () {\n        var pad = this.padDigit;\n        var r = this.r.toString(16);\n        var g = this.g.toString(16);\n        var b = this.b.toString(16);\n\n        return \"#\" + pad(r) + pad(g) + pad(b);\n    };\n\n    Color.prototype.resolveColor = function resolveColor (value) {\n        var color = value || \"black\";\n\n        if (color.charAt(0) === \"#\") {\n            color = color.substr(1, 6);\n        }\n\n        color = color.replace(/ /g, \"\");\n        color = color.toLowerCase();\n        color = Color.namedColors[color] || color;\n\n        return color;\n    };\n\n    Color.prototype.normalizeByte = function normalizeByte (value) {\n        if (value < 0 || isNaN(value)) {\n            return 0;\n        }\n\n        return value > 255 ? 255 : value;\n    };\n\n    Color.prototype.padDigit = function padDigit (value) {\n        return (value.length === 1) ? \"0\" + value : value;\n    };\n\n    Color.prototype.brightness = function brightness (value) {\n        var round = Math.round;\n\n        this.r = round(this.normalizeByte(this.r * value));\n        this.g = round(this.normalizeByte(this.g * value));\n        this.b = round(this.normalizeByte(this.b * value));\n\n        return this;\n    };\n\n    Color.prototype.percBrightness = function percBrightness () {\n        return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n    };\n\n    Color.prototype.isDark = function isDark () {\n        return this.percBrightness() < DARK_TRESHOLD;\n    };\n\n    Color.fromBytes = function fromBytes (r, g, b, a) {\n        return new Bytes(r, g, b, a != null ? a : 1);\n    };\n\n    Color.fromRGB = function fromRGB (r, g, b, a) {\n        return new RGB(r, g, b, a != null ? a : 1);\n    };\n\n    Color.fromHSV = function fromHSV (h, s, v, a) {\n        return new HSV(h, s, v, a != null ? a : 1);\n    };\n\n    Color.fromHSL = function fromHSL (h, s, l, a) {\n        return new HSL(h, s, l, a != null ? a : 1);\n    };\n\n    return Color;\n}(Class));\n\nColor.formats = [ {\n    re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n        ];\n    }\n}, {\n    re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n        ];\n    }\n}, {\n    re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n    process: function(parts) {\n        return [\n            parseInt(parts[1] + parts[1], 16),\n            parseInt(parts[2] + parts[2], 16),\n            parseInt(parts[3] + parts[3], 16)\n        ];\n    }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","export default function append(first, second) {\n    first.push.apply(first, second);\n    return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n    1    : \"i\",       10   : \"x\",       100  : \"c\",\n    2    : \"ii\",      20   : \"xx\",      200  : \"cc\",\n    3    : \"iii\",     30   : \"xxx\",     300  : \"ccc\",\n    4    : \"iv\",      40   : \"xl\",      400  : \"cd\",\n    5    : \"v\",       50   : \"l\",       500  : \"d\",\n    6    : \"vi\",      60   : \"lx\",      600  : \"dc\",\n    7    : \"vii\",     70   : \"lxx\",     700  : \"dcc\",\n    8    : \"viii\",    80   : \"lxxx\",    800  : \"dccc\",\n    9    : \"ix\",      90   : \"xc\",      900  : \"cm\",\n    1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n    var values = [ 1000,\n                   900 , 800, 700, 600, 500, 400, 300, 200, 100,\n                   90  , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n                   9   , 8  , 7  , 6  , 5  , 4  , 3  , 2  , 1 ];\n\n    var roman = \"\";\n    while (n > 0) {\n        if (n < values[0]) {\n            values.shift();\n        } else {\n            roman += literals[values[0]];\n            n -= values[0];\n        }\n    }\n    return roman;\n}","export default function createPromise() {\n    var resolveFn, rejectFn;\n    var promise = new Promise(function (resolve, reject) {\n        resolveFn = function (data) {\n            promise._state = \"resolved\";\n            resolve(data);\n            return promise;\n        };\n        rejectFn = function (data) {\n            promise._state = \"rejected\";\n            reject(data);\n\n            return promise;\n        };\n    });\n    promise._state = \"pending\";\n    promise.resolve = resolveFn;\n    promise.reject = rejectFn;\n    promise.state = function () { return promise._state; };\n\n    return promise;\n}\n","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n    return typeof value !== UNDEFINED;\n}","var defId = 1;\n\nexport default function definitionId() {\n    return \"kdef\" + defId++;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n    return radians / DEG_TO_RAD;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n    var output = \"\";\n\n    for (var i = 0; i < input.length; i++) {\n        var c = input.charCodeAt(i);\n\n        if (c < 0x80) {\n            // One byte\n            output += fromCharCode(c);\n        } else if (c < 0x800) {\n            // Two bytes\n            output += fromCharCode(0xC0 | (c >>> 6));\n            output += fromCharCode(0x80 | (c & 0x3f));\n        } else if (c < 0x10000) {\n            // Three bytes\n            output += fromCharCode(0xE0 | (c >>> 12));\n            output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n            output += fromCharCode(0x80 | (c & 0x3f));\n        }\n    }\n\n    return output;\n}\n\nfunction encodeUnit(codeUnit) {\n    return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n    var output = '';\n\n    for (var i = 0; i < input.length; i++) {\n        var c = input.charCodeAt(i);\n\n        if (c < 0xFFFF) {\n            output += encodeUnit(c);\n        } else {\n            var lead = ((c - 0x10000) >> 10) + 0xD800;\n            var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n            output += encodeUnit(lead);\n            output += encodeUnit(trail);\n        }\n    }\n\n    return output;\n}\n","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n    var output = \"\";\n    var i = 0;\n\n    var utfInput = encodeUTF8(input);\n\n    while (i < utfInput.length) {\n        var chr1 = utfInput.charCodeAt(i++);\n        var chr2 = utfInput.charCodeAt(i++);\n        var chr3 = utfInput.charCodeAt(i++);\n\n        var enc1 = chr1 >> 2;\n        var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n        var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n        var enc4 = chr3 & 63;\n\n        if (isNaN(chr2)) {\n            enc3 = enc4 = 64;\n        } else if (isNaN(chr3)) {\n            enc4 = 64;\n        }\n\n        output = output +\n            KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n            KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n    }\n\n    return output;\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n    if (defined((e.x || {}).location)) {\n        return {\n            x: e.x.location,\n            y: e.y.location\n        };\n    }\n\n    return {\n        x: e.pageX || e.clientX || 0,\n        y: e.pageY || e.clientY || 0\n    };\n}","export default function eventElement(e) {\n    if ( e === void 0 ) e = {};\n\n    return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n    return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n    if (array) {\n        return array[array.length - 1];\n    }\n}","export default function limitValue(value, min, max) {\n    return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n    if (a.length < 2) {\n        return a.slice();\n    }\n    function merge(a, b) {\n        var r = [], ai = 0, bi = 0, i = 0;\n        while (ai < a.length && bi < b.length) {\n            if (cmp(a[ai], b[bi]) <= 0) {\n                r[i++] = a[ai++];\n            } else {\n                r[i++] = b[bi++];\n            }\n        }\n        if (ai < a.length) {\n            r.push.apply(r, a.slice(ai));\n        }\n        if (bi < b.length) {\n            r.push.apply(r, b.slice(bi));\n        }\n        return r;\n    }\n    return (function sort(a) {\n        if (a.length <= 1) {\n            return a;\n        }\n        var m = Math.floor(a.length / 2);\n        var left = a.slice(0, m);\n        var right = a.slice(m);\n        left = sort(left);\n        right = sort(right);\n        return merge(left, right);\n    })(a);\n}","export default function promiseAll(promises) {\n    return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n    return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n    if (p) {\n        return Math.pow(10, p);\n    }\n\n    return 1;\n}\n\nexport default function round(value, precision) {\n    var power = pow(precision);\n    return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n    return defined(value) ? value : defaultValue;\n}","export default function bindEvents(element, events) {\n    for (var eventName in events) {\n        var eventNames = eventName.trim().split(\" \");\n        for (var idx = 0; idx < eventNames.length; idx++) {\n            element.addEventListener(eventNames[idx], events[eventName], false);\n        }\n    }\n}","export default function elementOffset(element) {\n    var box = element.getBoundingClientRect();\n\n    var documentElement = document.documentElement;\n\n    return {\n        top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n        left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n    };\n}","export default function elementStyles(element, styles) {\n    var result = {};\n    var style = window.getComputedStyle(element) || {};\n    var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n    for (var idx = 0; idx < stylesArray.length; idx++) {\n        var field = stylesArray[idx];\n        result[field] = style[field];\n    }\n\n    return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n    if (isNaN(value)) {\n        return value;\n    }\n    return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n    if (size) {\n        var width = size.width;\n        var height = size.height;\n\n        if (defined(width)) {\n            element.style.width = getPixels(width);\n        }\n\n        if (defined(height)) {\n            element.style.height = getPixels(height);\n        }\n\n    } else {\n        var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n        return {\n            width: parseInt(size$1.width, 10),\n            height: parseInt(size$1.height, 10)\n        };\n    }\n}","export default function unbindEvents(element, events) {\n    if ( events === void 0 ) events = {};\n\n    for (var name in events) {\n        var eventNames = name.trim().split(\" \");\n        for (var idx = 0; idx < eventNames.length; idx++) {\n            element.removeEventListener(eventNames[idx], events[name], false);\n        }\n    }\n}","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n    function LRUCache(size) {\n        Class.call(this);\n\n        this._size = size;\n        this._length = 0;\n        this._map = {};\n    }\n\n    if ( Class ) LRUCache.__proto__ = Class;\n    LRUCache.prototype = Object.create( Class && Class.prototype );\n    LRUCache.prototype.constructor = LRUCache;\n\n    LRUCache.prototype.put = function put (key, value) {\n        var map = this._map;\n        var entry = { key: key, value: value };\n\n        map[key] = entry;\n\n        if (!this._head) {\n            this._head = this._tail = entry;\n        } else {\n            this._tail.newer = entry;\n            entry.older = this._tail;\n            this._tail = entry;\n        }\n\n        if (this._length >= this._size) {\n            map[this._head.key] = null;\n            this._head = this._head.newer;\n            this._head.older = null;\n        } else {\n            this._length++;\n        }\n    };\n\n    LRUCache.prototype.get = function get (key) {\n        var entry = this._map[key];\n\n        if (entry) {\n            if (entry === this._head && entry !== this._tail) {\n                this._head = entry.newer;\n                this._head.older = null;\n            }\n\n            if (entry !== this._tail) {\n                if (entry.older) {\n                    entry.older.newer = entry.newer;\n                    entry.newer.older = entry.older;\n                }\n\n                entry.older = this._tail;\n                entry.newer = null;\n\n                this._tail.newer = entry;\n                this._tail = entry;\n            }\n\n            return entry.value;\n        }\n    };\n\n    return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n    return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n    var parts = [];\n    for (var key in object) {\n        parts.push(key + object[key]);\n    }\n\n    return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n    // 32-bit FNV-1 offset basis\n    // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n    var hash = 0x811C9DC5;\n\n    for (var i = 0; i < str.length; ++i) {\n        hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n        hash ^= str.charCodeAt(i);\n    }\n\n    return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n    return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n    baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n    defaultMeasureBox = document.createElement(\"div\");\n    defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n              \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n              \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = (function (Class) {\n    function TextMetrics(options) {\n        Class.call(this);\n\n        this._cache = new LRUCache(1000);\n        this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n    }\n\n    if ( Class ) TextMetrics.__proto__ = Class;\n    TextMetrics.prototype = Object.create( Class && Class.prototype );\n    TextMetrics.prototype.constructor = TextMetrics;\n\n    TextMetrics.prototype.measure = function measure (text, style, options) {\n        if ( options === void 0 ) options = {};\n\n        if (!text) {\n            return zeroSize();\n        }\n\n        var styleKey = objectKey(style);\n        var cacheKey = hashKey(text + styleKey);\n        var cachedResult = this._cache.get(cacheKey);\n\n        if (cachedResult) {\n            return cachedResult;\n        }\n\n        var size = zeroSize();\n        var measureBox = options.box || defaultMeasureBox;\n        var baselineMarker = this._baselineMarker().cloneNode(false);\n\n        for (var key in style) {\n            var value = style[key];\n            if (typeof value !== \"undefined\") {\n                measureBox.style[key] = value;\n            }\n        }\n\n        var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n        measureBox.textContent = textStr;\n        measureBox.appendChild(baselineMarker);\n        document.body.appendChild(measureBox);\n\n        if (textStr.length) {\n            size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n            size.height = measureBox.offsetHeight;\n            size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n        }\n\n        if (size.width > 0 && size.height > 0) {\n            this._cache.put(cacheKey, size);\n        }\n\n        measureBox.parentNode.removeChild(measureBox);\n\n        return size;\n    };\n\n    TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n        var marker = document.createElement(\"div\");\n        marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n            this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n        return marker;\n    };\n\n    return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n    return TextMetrics.current.measure(text, style, measureBox);\n}\n","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (Class) {\n    function OptionsStore(options, prefix) {\n        var this$1 = this;\n        if ( prefix === void 0 ) prefix = \"\";\n\n        Class.call(this);\n\n        this.prefix = prefix;\n\n        for (var field in options) {\n            var member = options[field];\n            member = this$1._wrap(member, field);\n            this$1[field] = member;\n        }\n    }\n\n    if ( Class ) OptionsStore.__proto__ = Class;\n    OptionsStore.prototype = Object.create( Class && Class.prototype );\n    OptionsStore.prototype.constructor = OptionsStore;\n\n    OptionsStore.prototype.get = function get (field) {\n        var parts = field.split(\".\");\n        var result = this;\n\n        while (parts.length && result) {\n            var part = parts.shift();\n            result = result[part];\n        }\n\n        return result;\n    };\n\n    OptionsStore.prototype.set = function set (field, value) {\n        var current = this.get(field);\n\n        if (current !== value) {\n            this._set(field, this._wrap(value, field));\n            this.optionsChange({\n                field: this.prefix + field,\n                value: value\n            });\n        }\n    };\n\n    OptionsStore.prototype._set = function _set (field, value) {\n        var this$1 = this;\n\n        var composite = field.indexOf(\".\") >= 0;\n        var parentObj = this;\n        var fieldName = field;\n\n        if (composite) {\n            var parts = fieldName.split(\".\");\n            var prefix = this.prefix;\n\n            while (parts.length > 1) {\n                fieldName = parts.shift();\n                prefix += fieldName + \".\";\n\n                var obj = parentObj[fieldName];\n\n                if (!obj) {\n                    obj = new OptionsStore({}, prefix);\n                    obj.addObserver(this$1);\n                    parentObj[fieldName] = obj;\n                }\n                parentObj = obj;\n            }\n            fieldName = parts[0];\n        }\n\n        parentObj._clear(fieldName);\n        parentObj[fieldName] = value;\n    };\n\n    OptionsStore.prototype._clear = function _clear (field) {\n        var current = this[field];\n        if (current && current.removeObserver) {\n            current.removeObserver(this);\n        }\n    };\n\n    OptionsStore.prototype._wrap = function _wrap (object, field) {\n        var type = toString.call(object);\n        var wrapped = object;\n\n        if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n            if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n                wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n            }\n\n            wrapped.addObserver(this);\n        }\n\n        return wrapped;\n    };\n\n    return OptionsStore;\n}(Class));\n\nObserversMixin.extend(OptionsStore.prototype);\n\nexport default OptionsStore;","function setAccessor(field) {\n    return function(value) {\n        if (this[field] !== value) {\n            this[field] = value;\n            this.geometryChange();\n        }\n\n        return this;\n    };\n}\n\nfunction getAccessor(field) {\n    return function() {\n        return this[field];\n    };\n}\n\nexport default function defineAccessors(fn, fields) {\n    for (var i = 0; i < fields.length; i++) {\n        var name = fields[i];\n        var capitalized = name.charAt(0).toUpperCase() +\n                          name.substring(1, name.length);\n\n        fn[\"set\" + capitalized] = setAccessor(name);\n        fn[\"get\" + capitalized] = getAccessor(name);\n    }\n}","import { Class } from '../common';\nimport { defined, rad, round } from '../util';\n\nvar Matrix = (function (Class) {\n    function Matrix(a, b, c, d, e, f) {\n        if ( a === void 0 ) a = 0;\n        if ( b === void 0 ) b = 0;\n        if ( c === void 0 ) c = 0;\n        if ( d === void 0 ) d = 0;\n        if ( e === void 0 ) e = 0;\n        if ( f === void 0 ) f = 0;\n\n        Class.call(this);\n\n        this.a = a;\n        this.b = b;\n        this.c = c;\n        this.d = d;\n        this.e = e;\n        this.f = f;\n    }\n\n    if ( Class ) Matrix.__proto__ = Class;\n    Matrix.prototype = Object.create( Class && Class.prototype );\n    Matrix.prototype.constructor = Matrix;\n\n    Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n        return new Matrix(\n            this.a * matrix.a + this.c * matrix.b,\n            this.b * matrix.a + this.d * matrix.b,\n            this.a * matrix.c + this.c * matrix.d,\n            this.b * matrix.c + this.d * matrix.d,\n            this.a * matrix.e + this.c * matrix.f + this.e,\n            this.b * matrix.e + this.d * matrix.f + this.f\n        );\n    };\n\n    Matrix.prototype.invert = function invert () {\n        var ref = this;\n        var a = ref.a;\n        var b = ref.b;\n        var d = ref.c;\n        var e = ref.d;\n        var g = ref.e;\n        var h = ref.f;\n        var det = a * e - b * d;\n\n        if (det === 0) {\n            return null;\n        }\n\n        return new Matrix(e / det, -b / det, -d / det, a / det,\n                          (d * h - e * g) / det, (b * g - a * h) / det);\n    };\n\n    Matrix.prototype.clone = function clone () {\n        return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n    };\n\n    Matrix.prototype.equals = function equals (other) {\n        if (!other) {\n            return false;\n        }\n\n        return this.a === other.a && this.b === other.b &&\n               this.c === other.c && this.d === other.d &&\n               this.e === other.e && this.f === other.f;\n    };\n\n    Matrix.prototype.round = function round$1 (precision) {\n        this.a = round(this.a, precision);\n        this.b = round(this.b, precision);\n        this.c = round(this.c, precision);\n        this.d = round(this.d, precision);\n        this.e = round(this.e, precision);\n        this.f = round(this.f, precision);\n\n        return this;\n    };\n\n    Matrix.prototype.toArray = function toArray (precision) {\n        var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n        if (defined(precision)) {\n            for (var i = 0; i < result.length; i++) {\n                result[i] = round(result[i], precision);\n            }\n        }\n\n        return result;\n    };\n\n    Matrix.prototype.toString = function toString (precision, separator) {\n        if ( separator === void 0 ) separator = \",\";\n\n        return this.toArray(precision).join(separator);\n    };\n\n    Matrix.translate = function translate (x, y) {\n        return new Matrix(1, 0, 0, 1, x, y);\n    };\n\n    Matrix.unit = function unit () {\n        return new Matrix(1, 0, 0, 1, 0, 0);\n    };\n\n    Matrix.rotate = function rotate (angle, x, y) {\n        var matrix = new Matrix();\n        matrix.a = Math.cos(rad(angle));\n        matrix.b = Math.sin(rad(angle));\n        matrix.c = -matrix.b;\n        matrix.d = matrix.a;\n        matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n        matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n        return matrix;\n    };\n\n    Matrix.scale = function scale (scaleX, scaleY) {\n        return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n    };\n\n    return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;","export default function toMatrix(transformation) {\n    if (transformation && typeof transformation.matrix === \"function\") {\n        return transformation.matrix();\n    }\n\n    return transformation;\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\nvar Point = (function (Class) {\n    function Point(x, y) {\n        Class.call(this);\n\n        this.x = x || 0;\n        this.y = y || 0;\n    }\n\n    if ( Class ) Point.__proto__ = Class;\n    Point.prototype = Object.create( Class && Class.prototype );\n    Point.prototype.constructor = Point;\n\n    var staticAccessors = { ZERO: { configurable: true } };\n\n    Point.prototype.equals = function equals (other) {\n        return other && other.x === this.x && other.y === this.y;\n    };\n\n    Point.prototype.clone = function clone () {\n        return new Point(this.x, this.y);\n    };\n\n    Point.prototype.rotate = function rotate (angle, origin) {\n        var originPoint = Point.create(origin) || Point.ZERO;\n\n        return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n    };\n\n    Point.prototype.translate = function translate (x, y) {\n        this.x += x;\n        this.y += y;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.translateWith = function translateWith (point) {\n        return this.translate(point.x, point.y);\n    };\n\n    Point.prototype.move = function move (x, y) {\n        this.x = this.y = 0;\n        return this.translate(x, y);\n    };\n\n    Point.prototype.scale = function scale (scaleX, scaleY) {\n        if ( scaleY === void 0 ) scaleY = scaleX;\n\n        this.x *= scaleX;\n        this.y *= scaleY;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n        return this.clone().scale(scaleX, scaleY);\n    };\n\n    Point.prototype.transform = function transform (transformation) {\n        var matrix = toMatrix(transformation);\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        this.x = matrix.a * x + matrix.c * y + matrix.e;\n        this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.transformCopy = function transformCopy (transformation) {\n        var point = this.clone();\n\n        if (transformation) {\n            point.transform(transformation);\n        }\n\n        return point;\n    };\n\n    Point.prototype.distanceTo = function distanceTo (point) {\n        var dx = this.x - point.x;\n        var dy = this.y - point.y;\n\n        return Math.sqrt(dx * dx + dy * dy);\n    };\n\n    Point.prototype.round = function round$1 (digits) {\n        this.x = round(this.x, digits);\n        this.y = round(this.y, digits);\n\n        this.geometryChange();\n\n        return this;\n    };\n\n    Point.prototype.toArray = function toArray (digits) {\n        var doRound = defined(digits);\n        var x = doRound ? round(this.x, digits) : this.x;\n        var y = doRound ? round(this.y, digits) : this.y;\n\n        return [ x, y ];\n    };\n\n    Point.prototype.toString = function toString (digits, separator) {\n        if ( separator === void 0 ) separator = \" \";\n\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        if (defined(digits)) {\n            x = round(x, digits);\n            y = round(y, digits);\n        }\n\n        return x + separator + y;\n    };\n\n    Point.create = function create (arg0, arg1) {\n        if (defined(arg0)) {\n            if (arg0 instanceof Point) {\n                return arg0;\n            } else if (arguments.length === 1 && arg0.length === 2) {\n                return new Point(arg0[0], arg0[1]);\n            }\n\n            return new Point(arg0, arg1);\n        }\n    };\n\n    Point.min = function min () {\n        var arguments$1 = arguments;\n\n        var minX = MAX_NUM;\n        var minY = MAX_NUM;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var point = arguments$1[i];\n            minX = Math.min(point.x, minX);\n            minY = Math.min(point.y, minY);\n        }\n\n        return new Point(minX, minY);\n    };\n\n    Point.max = function max () {\n        var arguments$1 = arguments;\n\n        var maxX = MIN_NUM;\n        var maxY = MIN_NUM;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var point = arguments$1[i];\n            maxX = Math.max(point.x, maxX);\n            maxY = Math.max(point.y, maxY);\n        }\n\n        return new Point(maxX, maxY);\n    };\n\n    Point.minPoint = function minPoint () {\n        return new Point(MIN_NUM, MIN_NUM);\n    };\n\n    Point.maxPoint = function maxPoint () {\n        return new Point(MAX_NUM, MAX_NUM);\n    };\n\n    staticAccessors.ZERO.get = function () {\n        return new Point(0, 0);\n    };\n\n    Object.defineProperties( Point, staticAccessors );\n\n    return Point;\n}(Class));\n\ndefineAccessors(Point.prototype, [ \"x\", \"y\" ]);\nObserversMixin.extend(Point.prototype);\n\nexport default Point;\n","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, round } from '../util';\n\nvar Size = (function (Class) {\n    function Size(width, height) {\n        Class.call(this);\n\n        this.width = width || 0;\n        this.height = height || 0;\n    }\n\n    if ( Class ) Size.__proto__ = Class;\n    Size.prototype = Object.create( Class && Class.prototype );\n    Size.prototype.constructor = Size;\n\n    var staticAccessors = { ZERO: { configurable: true } };\n\n    Size.prototype.equals = function equals (other) {\n        return other && other.width === this.width && other.height === this.height;\n    };\n\n    Size.prototype.clone = function clone () {\n        return new Size(this.width, this.height);\n    };\n\n    Size.prototype.toArray = function toArray (digits) {\n        var doRound = defined(digits);\n        var width = doRound ? round(this.width, digits) : this.width;\n        var height = doRound ? round(this.height, digits) : this.height;\n\n        return [ width, height ];\n    };\n\n    Size.create = function create (arg0, arg1) {\n        if (defined(arg0)) {\n            if (arg0 instanceof Size) {\n                return arg0;\n            } else if (arguments.length === 1 && arg0.length === 2) {\n                return new Size(arg0[0], arg0[1]);\n            }\n\n            return new Size(arg0, arg1);\n        }\n    };\n\n    staticAccessors.ZERO.get = function () {\n        return new Size(0, 0);\n    };\n\n    Object.defineProperties( Size, staticAccessors );\n\n    return Size;\n}(Class));\n\ndefineAccessors(Size.prototype, [ \"width\", \"height\" ]);\nObserversMixin.extend(Size.prototype);\n\nexport default Size;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (Class) {\n    function Rect(origin, size) {\n        if ( origin === void 0 ) origin = new Point();\n        if ( size === void 0 ) size = new Size();\n\n        Class.call(this);\n\n        this.setOrigin(origin);\n        this.setSize(size);\n    }\n\n    if ( Class ) Rect.__proto__ = Class;\n    Rect.prototype = Object.create( Class && Class.prototype );\n    Rect.prototype.constructor = Rect;\n\n    Rect.prototype.clone = function clone () {\n        return new Rect(\n            this.origin.clone(),\n            this.size.clone()\n        );\n    };\n\n    Rect.prototype.equals = function equals (other) {\n        return other &&\n               other.origin.equals(this.origin) &&\n               other.size.equals(this.size);\n    };\n\n    Rect.prototype.setOrigin = function setOrigin (value) {\n        this._observerField(\"origin\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Rect.prototype.getOrigin = function getOrigin () {\n        return this.origin;\n    };\n\n    Rect.prototype.setSize = function setSize (value) {\n        this._observerField(\"size\", Size.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Rect.prototype.getSize = function getSize () {\n        return this.size;\n    };\n\n    Rect.prototype.width = function width () {\n        return this.size.width;\n    };\n\n    Rect.prototype.height = function height () {\n        return this.size.height;\n    };\n\n    Rect.prototype.topLeft = function topLeft () {\n        return this.origin.clone();\n    };\n\n    Rect.prototype.bottomRight = function bottomRight () {\n        return this.origin.clone().translate(this.width(), this.height());\n    };\n\n    Rect.prototype.topRight = function topRight () {\n        return this.origin.clone().translate(this.width(), 0);\n    };\n\n    Rect.prototype.bottomLeft = function bottomLeft () {\n        return this.origin.clone().translate(0, this.height());\n    };\n\n    Rect.prototype.center = function center () {\n        return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n    };\n\n    Rect.prototype.bbox = function bbox (matrix) {\n        var tl = this.topLeft().transformCopy(matrix);\n        var tr = this.topRight().transformCopy(matrix);\n        var br = this.bottomRight().transformCopy(matrix);\n        var bl = this.bottomLeft().transformCopy(matrix);\n\n        return Rect.fromPoints(tl, tr, br, bl);\n    };\n\n    Rect.prototype.transformCopy = function transformCopy (m) {\n        return Rect.fromPoints(\n            this.topLeft().transform(m),\n            this.bottomRight().transform(m)\n        );\n    };\n\n    Rect.prototype.expand = function expand (x, y) {\n        if ( y === void 0 ) y = x;\n\n\n        this.size.width += 2 * x;\n        this.size.height += 2 * y;\n\n        this.origin.translate(-x, -y);\n\n        return this;\n    };\n\n    Rect.prototype.expandCopy = function expandCopy (x, y) {\n        return this.clone().expand(x, y);\n    };\n\n    Rect.prototype.containsPoint = function containsPoint (point) {\n        var origin = this.origin;\n        var bottomRight = this.bottomRight();\n        return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n    };\n\n    Rect.prototype._isOnPath = function _isOnPath (point, width) {\n        var rectOuter = this.expandCopy(width, width);\n        var rectInner = this.expandCopy(-width, -width);\n\n        return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n    };\n\n    Rect.fromPoints = function fromPoints () {\n        var topLeft = Point.min.apply(null, arguments);\n        var bottomRight = Point.max.apply(null, arguments);\n        var size = new Size(\n            bottomRight.x - topLeft.x,\n            bottomRight.y - topLeft.y\n        );\n\n        return new Rect(topLeft, size);\n    };\n\n    Rect.union = function union (a, b) {\n        return Rect.fromPoints(\n            Point.min(a.topLeft(), b.topLeft()),\n            Point.max(a.bottomRight(), b.bottomRight())\n        );\n    };\n\n    Rect.intersect = function intersect (a, b) {\n        var rect1 = {\n            left: a.topLeft().x,\n            top: a.topLeft().y,\n            right: a.bottomRight().x,\n            bottom: a.bottomRight().y\n        };\n\n        var rect2 = {\n            left: b.topLeft().x,\n            top: b.topLeft().y,\n            right: b.bottomRight().x,\n            bottom: b.bottomRight().y\n        };\n\n        if (rect1.left <= rect2.right &&\n            rect2.left <= rect1.right &&\n            rect1.top <= rect2.bottom &&\n            rect2.top <= rect1.bottom) {\n            return Rect.fromPoints(\n                new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n                new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n            );\n        }\n    };\n\n    return Rect;\n}(Class));\n\nObserversMixin.extend(Rect.prototype);\n\nexport default Rect;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (Class) {\n    function Transformation(matrix) {\n        if ( matrix === void 0 ) matrix = Matrix.unit();\n\n        Class.call(this);\n\n        this._matrix = matrix;\n    }\n\n    if ( Class ) Transformation.__proto__ = Class;\n    Transformation.prototype = Object.create( Class && Class.prototype );\n    Transformation.prototype.constructor = Transformation;\n\n    Transformation.prototype.clone = function clone () {\n        return new Transformation(\n            this._matrix.clone()\n        );\n    };\n\n    Transformation.prototype.equals = function equals (other) {\n        return other &&\n               other._matrix.equals(this._matrix);\n    };\n\n    Transformation.prototype.translate = function translate (x, y) {\n        this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n        if ( scaleY === void 0 ) scaleY = scaleX;\n        if ( origin === void 0 ) origin = null;\n\n        var originPoint = origin;\n\n        if (originPoint) {\n            originPoint = Point.create(originPoint);\n            this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n        }\n\n        this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n        if (originPoint) {\n            this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n        }\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.rotate = function rotate (angle, origin) {\n        var originPoint = Point.create(origin) || Point.ZERO;\n\n        this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.multiply = function multiply (transformation) {\n        var matrix = toMatrix(transformation);\n\n        this._matrix = this._matrix.multiplyCopy(matrix);\n\n        this._optionsChange();\n        return this;\n    };\n\n    Transformation.prototype.matrix = function matrix (value) {\n        if (value) {\n            this._matrix = value;\n            this._optionsChange();\n            return this;\n        }\n\n        return this._matrix;\n    };\n\n    Transformation.prototype._optionsChange = function _optionsChange () {\n        this.optionsChange({\n            field: \"transform\",\n            value: this\n        });\n    };\n\n    return Transformation;\n}(Class));\n\nObserversMixin.extend(Transformation.prototype);\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n    if (matrix === null) {\n        return null;\n    }\n\n    if (matrix instanceof Transformation) {\n        return matrix;\n    }\n\n    return new Transformation(matrix);\n}","import OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport { Class } from '../common';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = (function (Class) {\n    function Element(options) {\n        Class.call(this);\n\n        this._initOptions(options);\n    }\n\n    if ( Class ) Element.__proto__ = Class;\n    Element.prototype = Object.create( Class && Class.prototype );\n    Element.prototype.constructor = Element;\n\n    Element.prototype._initOptions = function _initOptions (options) {\n        if ( options === void 0 ) options = {};\n\n        var clip = options.clip;\n        var transform = options.transform;\n\n        if (transform) {\n            options.transform = createTransform(transform);\n        }\n\n        if (clip && !clip.id) {\n            clip.id = definitionId();\n        }\n\n        this.options = new OptionsStore(options);\n        this.options.addObserver(this);\n    };\n\n    Element.prototype.transform = function transform (value) {\n        if (defined(value)) {\n            this.options.set(\"transform\", createTransform(value));\n        } else {\n            return this.options.get(\"transform\");\n        }\n    };\n\n    Element.prototype.parentTransform = function parentTransform () {\n        var element = this;\n        var parentMatrix;\n\n        while (element.parent) {\n            element = element.parent;\n            var transformation = element.transform();\n            if (transformation) {\n                parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n            }\n        }\n\n        if (parentMatrix) {\n            return createTransform(parentMatrix);\n        }\n    };\n\n    Element.prototype.currentTransform = function currentTransform (parentTransform) {\n        if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n        var elementTransform = this.transform();\n        var elementMatrix = toMatrix(elementTransform);\n\n        var parentMatrix = toMatrix(parentTransform);\n        var combinedMatrix;\n\n        if (elementMatrix && parentMatrix) {\n            combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n        } else {\n            combinedMatrix = elementMatrix || parentMatrix;\n        }\n\n        if (combinedMatrix) {\n            return createTransform(combinedMatrix);\n        }\n    };\n\n    Element.prototype.visible = function visible (value) {\n        if (defined(value)) {\n            this.options.set(\"visible\", value);\n            return this;\n        }\n\n        return this.options.get(\"visible\") !== false;\n    };\n\n    Element.prototype.clip = function clip (value) {\n        var options = this.options;\n        if (defined(value)) {\n            if (value && !value.id) {\n                value.id = definitionId();\n            }\n            options.set(\"clip\", value);\n            return this;\n        }\n\n        return options.get(\"clip\");\n    };\n\n    Element.prototype.opacity = function opacity (value) {\n        if (defined(value)) {\n            this.options.set(\"opacity\", value);\n            return this;\n        }\n\n        return valueOrDefault(this.options.get(\"opacity\"), 1);\n    };\n\n    Element.prototype.clippedBBox = function clippedBBox (transformation) {\n        var bbox = this._clippedBBox(transformation);\n        if (bbox) {\n            var clip = this.clip();\n            return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n        }\n    };\n\n    Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n        if (this.visible()) {\n            var transform = this.currentTransform(parentTransform);\n            var transformedPoint = point;\n            if (transform) {\n                transformedPoint = point.transformCopy(transform.matrix().invert());\n            }\n            return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n        }\n        return false;\n    };\n\n    Element.prototype._hasFill = function _hasFill () {\n        var fill = this.options.fill;\n        return fill && !isTransparent(fill.color);\n    };\n\n    Element.prototype._hasStroke = function _hasStroke () {\n        var stroke = this.options.stroke;\n        return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n    };\n\n    Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return this.bbox(transformation);\n    };\n\n    return Element;\n}(Class));\n\nElement.prototype.nodeType = \"Element\";\n\nObserversMixin.extend(Element.prototype);\n\nexport default Element;\n","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n    var extremeX = 0;\n    var extremeY = 0;\n\n    if (matrix) {\n        extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n        if (matrix.b !== 0) {\n            extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n        }\n    }\n\n    return {\n        x: extremeX,\n        y: extremeY\n    };\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport { Class } from '../common';\nimport { rad } from '../util';\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (Class) {\n    function Circle(center, radius) {\n        if ( center === void 0 ) center = new Point();\n        if ( radius === void 0 ) radius = 0;\n\n        Class.call(this);\n\n        this.setCenter(center);\n        this.setRadius(radius);\n    }\n\n    if ( Class ) Circle.__proto__ = Class;\n    Circle.prototype = Object.create( Class && Class.prototype );\n    Circle.prototype.constructor = Circle;\n\n    Circle.prototype.setCenter = function setCenter (value) {\n        this._observerField(\"center\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Circle.prototype.getCenter = function getCenter () {\n        return this.center;\n    };\n\n    Circle.prototype.equals = function equals (other) {\n        return other &&\n               other.center.equals(this.center) &&\n               other.radius === this.radius;\n    };\n\n    Circle.prototype.clone = function clone () {\n        return new Circle(this.center.clone(), this.radius);\n    };\n\n    Circle.prototype.pointAt = function pointAt (angle) {\n        return this._pointAt(rad(angle));\n    };\n\n    Circle.prototype.bbox = function bbox (matrix) {\n        var this$1 = this;\n\n        var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n        var minPoint = Point.maxPoint();\n        var maxPoint = Point.minPoint();\n\n        for (var i = 0; i < 4; i++) {\n            var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n            var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n            var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n            minPoint = Point.min(minPoint, currentPoint);\n            maxPoint = Point.max(maxPoint, currentPoint);\n        }\n\n        return Rect.fromPoints(minPoint, maxPoint);\n    };\n\n    Circle.prototype._pointAt = function _pointAt (angle) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n\n        return new Point(\n            center.x + radius * Math.cos(angle),\n            center.y + radius * Math.sin(angle)\n        );\n    };\n\n    Circle.prototype.containsPoint = function containsPoint (point) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n        var inCircle = Math.pow(point.x - center.x, 2) +\n            Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n        return inCircle;\n    };\n\n    Circle.prototype._isOnPath = function _isOnPath (point, width) {\n        var ref = this;\n        var center = ref.center;\n        var radius = ref.radius;\n        var pointDistance = center.distanceTo(point);\n\n        return radius - width <= pointDistance && pointDistance <= radius + width;\n    };\n\n    return Circle;\n}(Class));\n\ndefineAccessors(Circle.prototype, [ \"radius\" ]);\nObserversMixin.extend(Circle.prototype);\n\nexport default Circle;","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar Paintable = {\n    extend: function(proto) {\n        proto.fill = this.fill;\n        proto.stroke = this.stroke;\n    },\n\n    fill: function(color, opacity) {\n        var options = this.options;\n\n        if (defined(color)) {\n            if (color && color.nodeType !== GRADIENT) {\n                var newFill = {\n                    color: color\n                };\n                if (defined(opacity)) {\n                    newFill.opacity = opacity;\n                }\n                options.set(\"fill\", newFill);\n            } else {\n                options.set(\"fill\", color);\n            }\n\n            return this;\n        }\n\n        return options.get(\"fill\");\n    },\n\n    stroke: function(color, width, opacity) {\n        if (defined(color)) {\n            this.options.set(\"stroke.color\", color);\n\n            if (defined(width)) {\n                this.options.set(\"stroke.width\", width);\n            }\n\n            if (defined(opacity)) {\n                this.options.set(\"stroke.opacity\", opacity);\n            }\n\n            return this;\n        }\n\n        return this.options.get(\"stroke\");\n    }\n};\n\nexport default Paintable;","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar Measurable = {\n    extend: function(proto) {\n        proto.bbox = this.bbox;\n        proto.geometryChange = this.geometryChange;\n    },\n\n    bbox: function(transformation) {\n        var combinedMatrix = toMatrix(this.currentTransform(transformation));\n        var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n        var bbox;\n\n        if (this._bboxCache && this._matrixHash === matrixHash) {\n            bbox = this._bboxCache.clone();\n        } else {\n            bbox = this._bbox(combinedMatrix);\n            this._bboxCache = bbox ? bbox.clone() : null;\n            this._matrixHash = matrixHash;\n        }\n\n        var strokeWidth = this.options.get(\"stroke.width\");\n        if (strokeWidth && bbox) {\n            bbox.expand(strokeWidth / 2);\n        }\n\n        return bbox;\n    },\n\n    geometryChange: function() {\n        delete this._bboxCache;\n        this.trigger(\"geometryChange\", {\n            element: this\n        });\n    }\n};\n\nexport default Measurable;","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n    var fieldName = \"_\" + name;\n    return function(value) {\n        if (defined(value)) {\n            this._observerField(fieldName, value);\n            this.geometryChange();\n            return this;\n        }\n\n        return this[fieldName];\n    };\n}\n\nexport default function defineGeometryAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = geometryAccessor(names[i]);\n    }\n}","import GeometryCircle from '../geometry/circle';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (Element) {\n    function Circle(geometry, options) {\n        if ( geometry === void 0 ) geometry = new GeometryCircle();\n        if ( options === void 0 ) options = {};\n\n        Element.call(this, options);\n        this.geometry(geometry);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(DEFAULT_STROKE);\n        }\n    }\n\n    if ( Element ) Circle.__proto__ = Element;\n    Circle.prototype = Object.create( Element && Element.prototype );\n    Circle.prototype.constructor = Circle;\n\n    Circle.prototype.rawBBox = function rawBBox () {\n        return this._geometry.bbox();\n    };\n\n    Circle.prototype._bbox = function _bbox (matrix) {\n        return this._geometry.bbox(matrix);\n    };\n\n    Circle.prototype._containsPoint = function _containsPoint (point) {\n        return this.geometry().containsPoint(point);\n    };\n\n    Circle.prototype._isOnPath = function _isOnPath (point) {\n        return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n    };\n\n    return Circle;\n}(Element));\n\nCircle.prototype.nodeType = \"Circle\";\n\nPaintable.extend(Circle.prototype);\nMeasurable.extend(Circle.prototype);\ndefineGeometryAccessors(Circle.prototype, [ \"geometry\" ]);\n\nexport default Circle;","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n    if ( tolerance === void 0 ) tolerance = PRECISION;\n\n    return round(Math.abs(a - b), tolerance) === 0;\n}","var PRECISION = 10;\n\nexport { PRECISION };","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n    return a < b || close(a, b, tolerance);\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { deg, rad, round } from '../util';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\n\nvar Arc = (function (Class) {\n    function Arc(center, options) {\n        if ( center === void 0 ) center = new Point();\n        if ( options === void 0 ) options = {};\n\n        Class.call(this);\n\n        this.setCenter(center);\n\n        this.radiusX = options.radiusX;\n        this.radiusY = options.radiusY || options.radiusX;\n        this.startAngle = options.startAngle;\n        this.endAngle = options.endAngle;\n        this.anticlockwise = options.anticlockwise || false;\n        this.xRotation = options.xRotation;\n    }\n\n    if ( Class ) Arc.__proto__ = Class;\n    Arc.prototype = Object.create( Class && Class.prototype );\n    Arc.prototype.constructor = Arc;\n\n    Arc.prototype.clone = function clone () {\n        return new Arc(this.center, {\n            radiusX: this.radiusX,\n            radiusY: this.radiusY,\n            startAngle: this.startAngle,\n            endAngle: this.endAngle,\n            anticlockwise: this.anticlockwise\n        });\n    };\n\n    Arc.prototype.setCenter = function setCenter (value) {\n        this._observerField(\"center\", Point.create(value));\n        this.geometryChange();\n        return this;\n    };\n\n    Arc.prototype.getCenter = function getCenter () {\n        return this.center;\n    };\n\n    Arc.prototype.pointAt = function pointAt (angle) {\n        var center = this.center;\n        var radian = rad(angle);\n\n        return new Point(\n            center.x + this.radiusX * Math.cos(radian),\n            center.y + this.radiusY * Math.sin(radian)\n        );\n    };\n\n    Arc.prototype.curvePoints = function curvePoints () {\n        var this$1 = this;\n\n        var startAngle = this.startAngle;\n        var dir = this.anticlockwise ? -1 : 1;\n        var curvePoints = [ this.pointAt(startAngle) ];\n        var interval = this._arcInterval();\n        var intervalAngle = interval.endAngle - interval.startAngle;\n        var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n        var subIntervalAngle = intervalAngle / subIntervalsCount;\n        var currentAngle = startAngle;\n        var transformation;\n        if (this.xRotation) {\n            transformation = transform().rotate(this.xRotation, this.center);\n        }\n\n        for (var i = 1; i <= subIntervalsCount; i++) {\n            var nextAngle = currentAngle + dir * subIntervalAngle;\n            var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n            curvePoints.push(points.cp1, points.cp2, points.p2);\n            currentAngle = nextAngle;\n        }\n\n        return curvePoints;\n    };\n\n    Arc.prototype.bbox = function bbox (matrix) {\n        var this$1 = this;\n\n        var interval = this._arcInterval();\n        var startAngle = interval.startAngle;\n        var endAngle = interval.endAngle;\n        var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n        var extremeX = deg(extremeAngles.x);\n        var extremeY = deg(extremeAngles.y);\n        var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n        var currentAngleX = bboxStartAngle(extremeX, startAngle);\n        var currentAngleY = bboxStartAngle(extremeY, startAngle);\n        var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n        var minPoint = Point.min(currentPoint, endPoint);\n        var maxPoint = Point.max(currentPoint, endPoint);\n\n        while (currentAngleX < endAngle || currentAngleY < endAngle) {\n            var currentPointX = (void 0);\n            if (currentAngleX < endAngle) {\n                currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n                currentAngleX += 90;\n            }\n\n            var currentPointY = (void 0);\n            if (currentAngleY < endAngle) {\n                currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n                currentAngleY += 90;\n            }\n\n            currentPoint = new Point(currentPointX.x, currentPointY.y);\n            minPoint = Point.min(minPoint, currentPoint);\n            maxPoint = Point.max(maxPoint, currentPoint);\n        }\n\n        return Rect.fromPoints(minPoint, maxPoint);\n    };\n\n    Arc.prototype._arcInterval = function _arcInterval () {\n        var ref = this;\n        var startAngle = ref.startAngle;\n        var endAngle = ref.endAngle;\n        var anticlockwise = ref.anticlockwise;\n\n        if (anticlockwise) {\n            var oldStart = startAngle;\n            startAngle = endAngle;\n            endAngle = oldStart;\n        }\n\n        if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n            endAngle += 360;\n        }\n\n        return {\n            startAngle: startAngle,\n            endAngle: endAngle\n        };\n    };\n\n    Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n        var p1 = this.pointAt(startAngle);\n        var p2 = this.pointAt(endAngle);\n        var p1Derivative = this._derivativeAt(startAngle);\n        var p2Derivative = this._derivativeAt(endAngle);\n        var t = (rad(endAngle) - rad(startAngle)) / 3;\n        var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n        var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n        if (transformation) {\n            p1.transform(transformation);\n            p2.transform(transformation);\n            cp1.transform(transformation);\n            cp2.transform(transformation);\n        }\n\n        return {\n            p1: p1,\n            cp1: cp1,\n            cp2: cp2,\n            p2: p2\n        };\n    };\n\n    Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n        var radian = rad(angle);\n\n        return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n    };\n\n    Arc.prototype.containsPoint = function containsPoint (point) {\n        var interval = this._arcInterval();\n        var intervalAngle = interval.endAngle - interval.startAngle;\n        var ref = this;\n        var center = ref.center;\n        var radiusX = ref.radiusX;\n        var radiusY = ref.radiusY;\n        var distance = center.distanceTo(point);\n        var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n        var pointRadius = (radiusX * radiusY) /\n            Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n        var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n        var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n        var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n        var containsPoint;\n\n        if (intervalAngle < 180) {\n            containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n        } else {\n            var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n            if (angle !== 360) {\n                angle = (360 + angle) % 360;\n            }\n\n            var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n            containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n        }\n        return containsPoint;\n    };\n\n    Arc.prototype._isOnPath = function _isOnPath (point, width) {\n        var interval = this._arcInterval();\n        var center = this.center;\n        var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n        if (angle !== 360) {\n            angle = (360 + angle) % 360;\n        }\n\n        var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n        return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n    };\n\n    Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n        var arcParameters = normalizeArcParameters({\n            x1: start.x,\n            y1: start.y,\n            x2: end.x,\n            y2: end.y,\n            rx: rx,\n            ry: ry,\n            largeArc: largeArc,\n            swipe: swipe,\n            rotation: rotation\n        });\n\n        return new Arc(arcParameters.center, {\n            startAngle: arcParameters.startAngle,\n            endAngle: arcParameters.endAngle,\n            radiusX: arcParameters.radiusX,\n            radiusY: arcParameters.radiusY,\n            xRotation: arcParameters.xRotation,\n            anticlockwise: swipe === 0\n        });\n    };\n\n    return Arc;\n}(Class));\n\ndefineAccessors(Arc.prototype, [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ]);\nObserversMixin.extend(Arc.prototype);\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n    var cos = round((x - cx) / rx, 3);\n    var sin = round((y - cy) / ry, 3);\n\n    return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n    var x1 = parameters.x1;\n    var y1 = parameters.y1;\n    var x2 = parameters.x2;\n    var y2 = parameters.y2;\n    var rx = parameters.rx;\n    var ry = parameters.ry;\n    var largeArc = parameters.largeArc;\n    var swipe = parameters.swipe;\n    var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n    var radians = rad(rotation);\n    var cosine = Math.cos(radians);\n    var sine = Math.sin(radians);\n\n    var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n    var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n    var sign = largeArc !== swipe ? 1 : -1;\n\n    var xt2 = Math.pow(xT, 2);\n    var yt2 = Math.pow(yT, 2);\n    var rx2 = Math.pow(rx, 2);\n    var ry2 = Math.pow(ry, 2);\n\n    var delta = xt2 / rx2 + yt2 / ry2;\n\n    if (delta > 1) {\n        delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n        rx = delta * rx;\n        rx2 = Math.pow(rx, 2);\n\n        ry = delta * ry;\n        ry2 = Math.pow(ry, 2);\n    }\n\n    var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n    // due to rounding errors the value could become NaN even after radii correction\n    if (isNaN(constT)) {\n        constT = 0;\n    }\n\n    var cxT = constT * (rx * yT) / ry;\n    var cyT = - constT * (ry * xT) / rx;\n\n    var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n    var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n    var uX = (xT - cxT) / rx;\n    var uY = (yT - cyT) / ry;\n    var vX = -(xT + cxT) / rx;\n    var vY = -(yT + cyT) / ry;\n\n    var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n    var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n    var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n    if (!swipe && angle > 0) {\n        angle -= 360;\n    }\n\n    if (swipe && angle < 0) {\n        angle += 360;\n    }\n    var endAngle = startAngle + angle;\n    var signEndAngle = endAngle >= 0 ? 1 : -1;\n    endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n    return {\n        center: new Point(cx, cy),\n        startAngle: startAngle,\n        endAngle: endAngle,\n        radiusX: rx,\n        radiusY: ry,\n        xRotation: rotation\n    };\n}\n\nfunction bboxStartAngle(angle, start) {\n    var startAngle = angle;\n\n    while (startAngle < start) {\n        startAngle += 90;\n    }\n\n    return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n    var s1x = p1.x - p0.x;\n    var s2x = p3.x - p2.x;\n    var s1y = p1.y - p0.y;\n    var s2y = p3.y - p2.y;\n    var nx = p0.x - p2.x;\n    var ny = p0.y - p2.y;\n    var d = s1x * s2y - s2x * s1y;\n    var s = (s1x * ny - s1y * nx) / d;\n    var t = (s2x * ny - s2y * nx) / d;\n\n    if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n        return new Point(p0.x + t * s1x, p0.y + t * s1y);\n    }\n}","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (Class) {\n    function ElementsArray(array) {\n        if ( array === void 0 ) array = [];\n\n        Class.call(this);\n\n        this.length = 0;\n        this._splice(0, array.length, array);\n    }\n\n    if ( Class ) ElementsArray.__proto__ = Class;\n    ElementsArray.prototype = Object.create( Class && Class.prototype );\n    ElementsArray.prototype.constructor = ElementsArray;\n\n    ElementsArray.prototype.elements = function elements (value) {\n        if (value) {\n            this._splice(0, this.length, value);\n\n            this._change();\n            return this;\n        }\n\n        return this.slice(0);\n    };\n\n    ElementsArray.prototype.push = function push$1 () {\n        var elements = arguments;\n        var result = push.apply(this, elements);\n\n        this._add(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype.slice = function slice$1 () {\n        return slice.call(this);\n    };\n\n    ElementsArray.prototype.pop = function pop$1 () {\n        var length = this.length;\n        var result = pop.apply(this);\n\n        if (length) {\n            this._remove([ result ]);\n        }\n\n        return result;\n    };\n\n    ElementsArray.prototype.splice = function splice (index, howMany) {\n        var elements = slice.call(arguments, 2);\n        var result = this._splice(index, howMany, elements);\n\n        this._change();\n\n        return result;\n    };\n\n    ElementsArray.prototype.shift = function shift$1 () {\n        var length = this.length;\n        var result = shift.apply(this);\n\n        if (length) {\n            this._remove([ result ]);\n        }\n\n        return result;\n    };\n\n    ElementsArray.prototype.unshift = function unshift$1 () {\n        var elements = arguments;\n        var result = unshift.apply(this, elements);\n\n        this._add(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype.indexOf = function indexOf (element) {\n        var this$1 = this;\n\n        var length = this.length;\n\n        for (var idx = 0; idx < length; idx++) {\n            if (this$1[idx] === element) {\n                return idx;\n            }\n        }\n        return -1;\n    };\n\n    ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n        var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n        this._clearObserver(result);\n        this._setObserver(elements);\n\n        return result;\n    };\n\n    ElementsArray.prototype._add = function _add (elements) {\n        this._setObserver(elements);\n        this._change();\n    };\n\n    ElementsArray.prototype._remove = function _remove (elements) {\n        this._clearObserver(elements);\n        this._change();\n    };\n\n    ElementsArray.prototype._setObserver = function _setObserver (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            elements[idx].addObserver(this$1);\n        }\n    };\n\n    ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            elements[idx].removeObserver(this$1);\n        }\n    };\n\n    ElementsArray.prototype._change = function _change () {};\n\n    return ElementsArray;\n}(Class));\n\nObserversMixin.extend(ElementsArray.prototype);\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n    function GeometryElementsArray () {\n        ElementsArray.apply(this, arguments);\n    }\n\n    if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n    GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n    GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n    GeometryElementsArray.prototype._change = function _change () {\n        this.geometryChange();\n    };\n\n    return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n    var fieldName = \"_\" + name;\n    return function(value) {\n        if (defined(value)) {\n            this._observerField(fieldName, Point.create(value));\n            this.geometryChange();\n            return this;\n        }\n\n        return this[fieldName];\n    };\n}\n\nexport default function definePointAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = pointAccessor(names[i]);\n    }\n}","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n    var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n    var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n    return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n    var t1 = 1 - t;\n    return Math.pow(t1, 3) * points[0][field] +\n        3 * Math.pow(t1, 2) * t * points[1][field] +\n        3 * Math.pow(t, 2) * t1 * points[2][field] +\n        Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n    return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n        3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n        3 * (-points[0][field] + points[1][field]),\n        points[0][field]\n    ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n    function ComplexNumber(real, img) {\n        if ( real === void 0 ) real = 0;\n        if ( img === void 0 ) img = 0;\n\n        Class.call(this);\n\n        this.real = real;\n        this.img = img;\n    }\n\n    if ( Class ) ComplexNumber.__proto__ = Class;\n    ComplexNumber.prototype = Object.create( Class && Class.prototype );\n    ComplexNumber.prototype.constructor = ComplexNumber;\n\n    ComplexNumber.prototype.add = function add (cNumber) {\n        return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n    };\n\n    ComplexNumber.prototype.addConstant = function addConstant (value) {\n        return new ComplexNumber(this.real + value, this.img);\n    };\n\n    ComplexNumber.prototype.negate = function negate () {\n        return new ComplexNumber(-this.real, -this.img);\n    };\n\n    ComplexNumber.prototype.multiply = function multiply (cNumber) {\n        return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n            this.real * cNumber.img + this.img * cNumber.real);\n    };\n\n    ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n        return new ComplexNumber(this.real * value, this.img * value);\n    };\n\n    ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n        var rad = Math.atan2(this.img, this.real);\n        var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n        var nthR = Math.pow(r, 1 / n);\n\n        return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n    };\n\n    ComplexNumber.prototype.equals = function equals (cNumber) {\n        return this.real === cNumber.real && this.img === cNumber.img;\n    };\n\n    ComplexNumber.prototype.isReal = function isReal () {\n        return this.img === 0;\n    };\n\n    return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n    var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n    return [\n        (-b + squareRoot) / (2 * a),\n        (-b - squareRoot) / (2 * a)\n    ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n    if (a === 0) {\n        return solveQuadraticEquation(b, c, d);\n    }\n\n    var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n    var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n    var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n    var i = new ComplexNumber(0,1);\n    var b3a = -b / (3 * a);\n    var x1, x2, y1, y2, y3, z1, z2;\n\n    if (Q < 0) {\n        x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n        x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n    } else {\n        x1 = -q / 2 + Math.sqrt(Q);\n        x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n        x2 = -q / 2 - Math.sqrt(Q);\n        x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n    }\n\n    y1 = x1.add(x2);\n\n    z1 = x1.add(x2).multiplyConstant(-1 / 2);\n    z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n    y2 = z1.add(i.multiply(z2));\n    y3 = z1.add(i.negate().multiply(z2));\n\n    var result = [];\n\n    if (y1.isReal()) {\n        result.push(round(y1.real + b3a, PRECISION));\n    }\n    if (y2.isReal()) {\n        result.push(round(y2.real + b3a, PRECISION));\n    }\n    if (y3.isReal()) {\n        result.push(round(y3.real + b3a, PRECISION));\n    }\n\n    return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n    var polynomial = toCubicPolynomial(points, rootField);\n    var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n    var intersection;\n\n    for (var idx = 0; idx < roots.length; idx++) {\n        if (0 <= roots[idx] && roots[idx] <= 1) {\n            intersection = calculateCurveAt(roots[idx], field, points);\n            if (Math.abs(intersection - point[field]) <= range) {\n                return true;\n            }\n        }\n    }\n}","export default function lineIntersectionsCount(a, b, point) {\n    var intersects;\n    if (a.x !== b.x) {\n        var minX = Math.min(a.x, b.x);\n        var maxX = Math.max(a.x, b.x);\n        var minY = Math.min(a.y, b.y);\n        var maxY = Math.max(a.y, b.y);\n        var inRange = minX <= point.x && point.x < maxX;\n\n        if (minY === maxY) {\n            intersects = point.y <= minY && inRange;\n        } else {\n            intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n        }\n    }\n\n    return intersects ? 1 : 0;\n}","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport definePointAccessors from '../accessors/define-point-accessors';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\n\nvar Segment = (function (Class) {\n    function Segment(anchor, controlIn, controlOut) {\n        Class.call(this);\n\n        this.anchor(anchor || new Point());\n        this.controlIn(controlIn);\n        this.controlOut(controlOut);\n    }\n\n    if ( Class ) Segment.__proto__ = Class;\n    Segment.prototype = Object.create( Class && Class.prototype );\n    Segment.prototype.constructor = Segment;\n\n    Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n        var segmentAnchor = this.anchor().transformCopy(matrix);\n        var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n        var rect;\n\n        if (this.controlOut() && toSegment.controlIn()) {\n            rect = this._curveBoundingBox(\n                segmentAnchor, this.controlOut().transformCopy(matrix),\n                toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n            );\n        } else {\n            rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n        }\n\n        return rect;\n    };\n\n    Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n        return Rect.fromPoints(p1, p2);\n    };\n\n    Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n        var points = [ p1, cp1, cp2, p2 ];\n        var extremesX = this._curveExtremesFor(points, \"x\");\n        var extremesY = this._curveExtremesFor(points, \"y\");\n        var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n        var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n        return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n    };\n\n    Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n        var extremes = this._curveExtremes(\n            points[0][field], points[1][field],\n            points[2][field], points[3][field]\n        );\n\n        return {\n            min: calculateCurveAt(extremes.min, field, points),\n            max: calculateCurveAt(extremes.max, field, points)\n        };\n    };\n\n    Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n        var a = x1 - 3 * x2 + 3 * x3 - x4;\n        var b = - 2 * (x1 - 2 * x2 + x3);\n        var c = x1 - x2;\n        var sqrt = Math.sqrt(b * b - 4 * a * c);\n        var t1 = 0;\n        var t2 = 1;\n\n        if (a === 0) {\n            if (b !== 0) {\n                t1 = t2 = -c / b;\n            }\n        } else if (!isNaN(sqrt)) {\n            t1 = (- b + sqrt) / (2 * a);\n            t2 = (- b - sqrt) / (2 * a);\n        }\n\n        var min = Math.max(Math.min(t1, t2), 0);\n        if (min < 0 || min > 1) {\n            min = 0;\n        }\n\n        var max = Math.min(Math.max(t1, t2), 1);\n        if (max > 1 || max < 0) {\n            max = 1;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n        var intersectionsCount;\n        if (this.controlOut() && segment.controlIn()) {\n            intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n        } else {\n            intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n        }\n        return intersectionsCount;\n    };\n\n    Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n        var bbox = this.bboxTo(segment).expand(width, width);\n        if (bbox.containsPoint(point)) {\n            var p1 = this.anchor();\n            var p2 = this.controlOut();\n            var p3 = segment.controlIn();\n            var p4 = segment.anchor();\n\n            if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n                return !isOutOfEndPoint(p1, p2, point);\n            } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n                return !isOutOfEndPoint(p4, p3, point);\n            }\n\n            //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n            var points = [ p1, p2, p3, p4 ];\n            if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n                return true;\n            }\n            var rotation = transform().rotate(45, point);\n            var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n            return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n        }\n    };\n\n    Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n        var p1 = this.anchor();\n        var p2 = segment.anchor();\n        var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n        var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n        return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n    };\n\n    Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n        var isOnPath;\n        if (this.controlOut() && segment.controlIn()) {\n            isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n        } else {\n            isOnPath = this._isOnLineTo(segment, point, width);\n        }\n        return isOnPath;\n    };\n\n    return Segment;\n}(Class));\n\ndefinePointAccessors(Segment.prototype, [ \"anchor\", \"controlIn\", \"controlOut\" ]);\nObserversMixin.extend(Segment.prototype);\n\nfunction arrayLimits(arr) {\n    var length = arr.length;\n    var min = MAX_NUM;\n    var max = MIN_NUM;\n\n    for (var i = 0; i < length; i ++) {\n        max = Math.max(max, arr[i]);\n        min = Math.min(min, arr[i]);\n    }\n\n    return {\n        min: min,\n        max: max\n    };\n}\n\nexport default Segment;","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n    var polynomial = toCubicPolynomial(points, \"x\");\n    var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n    var rayIntersection, intersectsRay;\n    var count = 0;\n    for (var i = 0; i < roots.length; i++) {\n        rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n        intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n        if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n            count++;\n        }\n    }\n\n    return count;\n}","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n    var boundingBox;\n\n    for (var i = 0; i < elements.length; i++) {\n        var element = elements[i];\n        if (element.visible()) {\n            var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n            if (elementBoundingBox) {\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, elementBoundingBox);\n                } else {\n                    boundingBox = elementBoundingBox;\n                }\n            }\n        }\n    }\n\n    return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n    var boundingBox;\n\n    for (var i = 0; i < elements.length; i++) {\n        var element = elements[i];\n        if (element.visible()) {\n            var elementBoundingBox = element.clippedBBox(transformation);\n            if (elementBoundingBox) {\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, elementBoundingBox);\n                } else {\n                    boundingBox = elementBoundingBox;\n                }\n            }\n        }\n    }\n\n    return boundingBox;\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport { defined, last } from '../util';\n\nvar MultiPath = (function (Element) {\n    function MultiPath(options) {\n        Element.call(this, options);\n        this.paths = new GeometryElementsArray();\n        this.paths.addObserver(this);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(\"#000\");\n        }\n    }\n\n    if ( Element ) MultiPath.__proto__ = Element;\n    MultiPath.prototype = Object.create( Element && Element.prototype );\n    MultiPath.prototype.constructor = MultiPath;\n\n    MultiPath.prototype.moveTo = function moveTo (x, y) {\n        var path = new Path();\n        path.moveTo(x, y);\n\n        this.paths.push(path);\n\n        return this;\n    };\n\n    MultiPath.prototype.lineTo = function lineTo (x, y) {\n        if (this.paths.length > 0) {\n            last(this.paths).lineTo(x, y);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n        if (this.paths.length > 0) {\n            last(this.paths).curveTo(controlOut, controlIn, point);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n        if (this.paths.length > 0) {\n            last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n        if (this.paths.length > 0) {\n            last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype.close = function close () {\n        if (this.paths.length > 0) {\n            last(this.paths).close();\n        }\n\n        return this;\n    };\n\n    MultiPath.prototype._bbox = function _bbox (matrix) {\n        return elementsBoundingBox(this.paths, true, matrix);\n    };\n\n    MultiPath.prototype.rawBBox = function rawBBox () {\n        return elementsBoundingBox(this.paths, false);\n    };\n\n    MultiPath.prototype._containsPoint = function _containsPoint (point) {\n        var paths = this.paths;\n\n        for (var idx = 0; idx < paths.length; idx++) {\n            if (paths[idx]._containsPoint(point)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    MultiPath.prototype._isOnPath = function _isOnPath (point) {\n        var paths = this.paths;\n        var width = this.options.stroke.width;\n\n        for (var idx = 0; idx < paths.length; idx++) {\n            if (paths[idx]._isOnPath(point, width)) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n    };\n\n    return MultiPath;\n}(Element));\n\nMultiPath.prototype.nodeType = \"MultiPath\";\n\nPaintable.extend(MultiPath.prototype);\nMeasurable.extend(MultiPath.prototype);\n\nexport default MultiPath;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n    l: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 2) {\n            var point = new Point(parameters[i], parameters[i + 1]);\n\n            if (options.isRelative) {\n                point.translateWith(position);\n            }\n\n            path.lineTo(point.x, point.y);\n\n            position.x = point.x;\n            position.y = point.y;\n        }\n    },\n\n    c: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 6) {\n            var controlOut = new Point(parameters[i], parameters[i + 1]);\n            var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n            var point = new Point(parameters[i + 4], parameters[i + 5]);\n            if (options.isRelative) {\n                controlIn.translateWith(position);\n                controlOut.translateWith(position);\n                point.translateWith(position);\n            }\n\n            path.curveTo(controlOut, controlIn, point);\n\n            position.x = point.x;\n            position.y = point.y;\n        }\n    },\n\n    v: function(path, options) {\n        var value = options.isRelative ? 0 : options.position.x;\n\n        toLineParamaters(options.parameters, true, value);\n        this.l(path, options);\n    },\n\n    h: function(path, options) {\n        var value = options.isRelative ? 0 : options.position.y;\n\n        toLineParamaters(options.parameters, false, value);\n        this.l(path, options);\n    },\n\n    a: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 7) {\n            var radiusX = parameters[i];\n            var radiusY = parameters[i + 1];\n            var rotation = parameters[i + 2];\n            var largeArc = parameters[i + 3];\n            var swipe = parameters[i + 4];\n            var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n            if (options.isRelative) {\n                endPoint.translateWith(position);\n            }\n            if (position.x !== endPoint.x || position.y !== endPoint.y) {\n                path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n                position.x = endPoint.x;\n                position.y = endPoint.y;\n            }\n        }\n    },\n\n    s: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n        var previousCommand = options.previousCommand;\n        var lastControlIn;\n\n        if (previousCommand === \"s\" || previousCommand === \"c\") {\n            lastControlIn = last(last(path.paths).segments).controlIn();\n        }\n\n        for (var i = 0; i < parameters.length; i += 4) {\n            var controlIn = new Point(parameters[i], parameters[i + 1]);\n            var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n            var controlOut = (void 0);\n\n            if (options.isRelative) {\n                controlIn.translateWith(position);\n                endPoint.translateWith(position);\n            }\n\n            if (lastControlIn) {\n                controlOut = reflectionPoint(lastControlIn, position);\n            } else {\n                controlOut = position.clone();\n            }\n\n            lastControlIn = controlIn;\n\n            path.curveTo(controlOut, controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    },\n\n    q: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n\n        for (var i = 0; i < parameters.length; i += 4) {\n            var controlPoint = new Point(parameters[i], parameters[i + 1]);\n            var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n            if (options.isRelative) {\n                controlPoint.translateWith(position);\n                endPoint.translateWith(position);\n            }\n\n            var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n            path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    },\n\n    t: function(path, options) {\n        var parameters = options.parameters;\n        var position = options.position;\n        var previousCommand = options.previousCommand;\n        var controlPoint;\n\n        if (previousCommand === \"q\" || previousCommand === \"t\") {\n            var lastSegment = last(last(path.paths).segments);\n            controlPoint = lastSegment.controlIn().clone()\n                .translateWith(position.scaleCopy(-1 / 3))\n                .scale(3 / 2);\n        }\n\n        for (var i = 0; i < parameters.length; i += 2) {\n            var endPoint = new Point(parameters[i], parameters[i + 1]);\n            if (options.isRelative) {\n                endPoint.translateWith(position);\n            }\n\n            if (controlPoint) {\n                controlPoint = reflectionPoint(controlPoint, position);\n            } else {\n                controlPoint = position.clone();\n            }\n\n            var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n            path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n            position.x = endPoint.x;\n            position.y = endPoint.y;\n        }\n    }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n    var insertPosition = isVertical ? 0 : 1;\n\n    for (var i = 0; i < parameters.length; i += 2) {\n        parameters.splice(i + insertPosition, 0, value);\n    }\n}\n\nfunction reflectionPoint(point, center) {\n    if (point && center) {\n        return center.scaleCopy(2).translate(-point.x, -point.y);\n    }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n    var scaledPoint = controlPoint.clone().scale(2 / 3);\n    return {\n        controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n        controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n    };\n}\n\nexport default ShapeMap;","import { Class } from '../common';\nimport MultiPath from '../shapes/multi-path';\nimport Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n    var parameters = [];\n    str.replace(SPLIT_REGEX, function(match, number) {\n        parameters.push(parseFloat(number));\n    });\n    return parameters;\n}\n\nvar PathParser = (function (Class) {\n    function PathParser () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) PathParser.__proto__ = Class;\n    PathParser.prototype = Object.create( Class && Class.prototype );\n    PathParser.prototype.constructor = PathParser;\n\n    PathParser.prototype.parse = function parse (str, options) {\n        var multiPath = new MultiPath(options);\n        var position = new Point();\n        var previousCommand;\n\n        str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n            var command = element.toLowerCase();\n            var isRelative = command === element;\n            var parameters = parseParameters(params.trim());\n\n            if (command === MOVE) {\n                if (isRelative) {\n                    position.x += parameters[0];\n                    position.y += parameters[1];\n                } else {\n                    position.x = parameters[0];\n                    position.y = parameters[1];\n                }\n\n                multiPath.moveTo(position.x, position.y);\n\n                if (parameters.length > 2) {\n                    command = \"l\";\n                    parameters.splice(0, 2);\n                }\n            }\n\n            if (ShapeMap[command]) {\n                ShapeMap[command](\n                    multiPath, {\n                        parameters: parameters,\n                        position: position,\n                        isRelative: isRelative,\n                        previousCommand: previousCommand\n                    }\n                );\n\n                if (closePath && closePath.toLowerCase() === CLOSE) {\n                    multiPath.close();\n                }\n            } else if (command !== MOVE) {\n                throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n            }\n\n            previousCommand = command;\n        });\n\n        return multiPath;\n    };\n\n    return PathParser;\n}(Class));\n\nPathParser.current = new PathParser();\n\nexport default PathParser;\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport PathParser from '../parsing/path-parser';\n\nvar Path = (function (Element) {\n    function Path(options) {\n        Element.call(this, options);\n        this.segments = new GeometryElementsArray();\n        this.segments.addObserver(this);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(\"#000\");\n\n            if (!defined(this.options.stroke.lineJoin)) {\n                this.options.set(\"stroke.lineJoin\", \"miter\");\n            }\n        }\n    }\n\n    if ( Element ) Path.__proto__ = Element;\n    Path.prototype = Object.create( Element && Element.prototype );\n    Path.prototype.constructor = Path;\n\n    Path.prototype.moveTo = function moveTo (x, y) {\n        this.suspend();\n        this.segments.elements([]);\n        this.resume();\n\n        this.lineTo(x, y);\n\n        return this;\n    };\n\n    Path.prototype.lineTo = function lineTo (x, y) {\n        var point = defined(y) ? new Point(x, y) : x;\n        var segment = new Segment(point);\n\n        this.segments.push(segment);\n\n        return this;\n    };\n\n    Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var segment = new Segment(point, controlIn);\n            this.suspend();\n            lastSegment.controlOut(controlOut);\n            this.resume();\n\n            this.segments.push(segment);\n        }\n\n        return this;\n    };\n\n    Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var anchor = lastSegment.anchor();\n            var start = rad(startAngle);\n            var center = new Point(anchor.x - radiusX * Math.cos(start),\n                anchor.y - radiusY * Math.sin(start));\n            var arc = new Arc(center, {\n                startAngle: startAngle,\n                endAngle: endAngle,\n                radiusX: radiusX,\n                radiusY: radiusY,\n                anticlockwise: anticlockwise\n            });\n\n            this._addArcSegments(arc);\n        }\n\n        return this;\n    };\n\n    Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n        if (this.segments.length > 0) {\n            var lastSegment = last(this.segments);\n            var anchor = lastSegment.anchor();\n            var arc = Arc.fromPoints(anchor, end, rx, ry, largeArc, swipe, rotation);\n\n            this._addArcSegments(arc);\n        }\n        return this;\n    };\n\n    Path.prototype._addArcSegments = function _addArcSegments (arc) {\n        var this$1 = this;\n\n        this.suspend();\n\n        var curvePoints = arc.curvePoints();\n\n        for (var i = 1; i < curvePoints.length; i += 3) {\n            this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n        }\n\n        this.resume();\n        this.geometryChange();\n    };\n\n    Path.prototype.close = function close () {\n        this.options.closed = true;\n        this.geometryChange();\n\n        return this;\n    };\n\n    Path.prototype.rawBBox = function rawBBox () {\n        return this._bbox();\n    };\n\n    Path.prototype._containsPoint = function _containsPoint (point) {\n        var segments = this.segments;\n        var length = segments.length;\n        var intersectionsCount = 0;\n        var previous, current;\n\n        for (var idx = 1; idx < length; idx++) {\n            previous = segments[idx - 1];\n            current = segments[idx];\n            intersectionsCount += previous._intersectionsTo(current, point);\n        }\n\n        if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n            intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n        }\n\n        return intersectionsCount % 2 !== 0;\n    };\n\n    Path.prototype._isOnPath = function _isOnPath (point, width) {\n        var segments = this.segments;\n        var length = segments.length;\n        var pathWidth = width || this.options.stroke.width;\n\n        if (length > 1) {\n            if (segments[0]._isOnPathTo(segments[1], point, pathWidth, \"start\")) {\n                return true;\n            }\n\n            for (var idx = 2; idx <= length - 2; idx++) {\n                if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n                    return true;\n                }\n            }\n\n            if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, \"end\")) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    Path.prototype._bbox = function _bbox (matrix) {\n        var segments = this.segments;\n        var length = segments.length;\n        var boundingBox;\n\n        if (length === 1) {\n            var anchor = segments[0].anchor().transformCopy(matrix);\n            boundingBox = new Rect(anchor, Size.ZERO);\n        } else if (length > 0) {\n            for (var i = 1; i < length; i++) {\n                var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n                if (boundingBox) {\n                    boundingBox = Rect.union(boundingBox, segmentBox);\n                } else {\n                    boundingBox = segmentBox;\n                }\n            }\n        }\n\n        return boundingBox;\n    };\n\n    Path.fromRect = function fromRect (rect, options) {\n        return new Path(options)\n            .moveTo(rect.topLeft())\n            .lineTo(rect.topRight())\n            .lineTo(rect.bottomRight())\n            .lineTo(rect.bottomLeft())\n            .close();\n    };\n\n    Path.fromPoints = function fromPoints (points, options) {\n        if (points) {\n            var path = new Path(options);\n\n            for (var i = 0; i < points.length; i++) {\n                var point = Point.create(points[i]);\n                if (point) {\n                    if (i === 0) {\n                        path.moveTo(point);\n                    } else {\n                        path.lineTo(point);\n                    }\n                }\n            }\n\n            return path;\n        }\n    };\n\n    Path.fromArc = function fromArc (arc, options) {\n        var path = new Path(options);\n        var startAngle = arc.startAngle;\n        var start = arc.pointAt(startAngle);\n        path.moveTo(start.x, start.y);\n        path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n        return path;\n    };\n\n    return Path;\n}(Element));\n\nPath.prototype.nodeType = \"Path\";\n\nPaintable.extend(Path.prototype);\nMeasurable.extend(Path.prototype);\n\nPath.parse = function(str, options) {\n    return PathParser.current.parse(str, options);\n};\n\nexport default Path;\n","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (Element) {\n    function Arc(geometry, options) {\n        if ( geometry === void 0 ) geometry = new GeometryArc();\n        if ( options === void 0 ) options = {};\n\n        Element.call(this, options);\n\n        this.geometry(geometry);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(DEFAULT_STROKE);\n        }\n    }\n\n    if ( Element ) Arc.__proto__ = Element;\n    Arc.prototype = Object.create( Element && Element.prototype );\n    Arc.prototype.constructor = Arc;\n\n    Arc.prototype._bbox = function _bbox (matrix) {\n        return this._geometry.bbox(matrix);\n    };\n\n    Arc.prototype.rawBBox = function rawBBox () {\n        return this.geometry().bbox();\n    };\n\n    Arc.prototype.toPath = function toPath () {\n        var path = new Path();\n        var curvePoints = this.geometry().curvePoints();\n\n        if (curvePoints.length > 0) {\n            path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n            for (var i = 1; i < curvePoints.length; i += 3) {\n                path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n            }\n        }\n\n        return path;\n    };\n\n    Arc.prototype._containsPoint = function _containsPoint (point) {\n        return this.geometry().containsPoint(point);\n    };\n\n    Arc.prototype._isOnPath = function _isOnPath (point) {\n        return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n    };\n\n    return Arc;\n}(Element));\n\nArc.prototype.nodeType = \"Arc\";\n\nPaintable.extend(Arc.prototype);\nMeasurable.extend(Arc.prototype);\ndefineGeometryAccessors(Arc.prototype, [ \"geometry\" ]);\n\nexport default Arc;","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport Paintable from '../mixins/paintable';\nimport definePointAccessors from '../accessors/define-point-accessors';\nimport { defined, measureText } from '../util';\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (Element) {\n    function Text(content, position, options) {\n        if ( position === void 0 ) position = new Point();\n        if ( options === void 0 ) options = {};\n\n        Element.call(this, options);\n\n        this.content(content);\n        this.position(position);\n\n        if (!this.options.font) {\n            this.options.font = DEFAULT_FONT;\n        }\n\n        if (!defined(this.options.fill)) {\n            this.fill(DEFAULT_FILL);\n        }\n    }\n\n    if ( Element ) Text.__proto__ = Element;\n    Text.prototype = Object.create( Element && Element.prototype );\n    Text.prototype.constructor = Text;\n\n    Text.prototype.content = function content (value) {\n        if (defined(value)) {\n            this.options.set(\"content\", value);\n            return this;\n        }\n\n        return this.options.get(\"content\");\n    };\n\n    Text.prototype.measure = function measure () {\n        var metrics = measureText(this.content(), {\n            font: this.options.get(\"font\")\n        });\n\n        return metrics;\n    };\n\n    Text.prototype.rect = function rect () {\n        var size = this.measure();\n        var pos = this.position().clone();\n        return new Rect(pos, [ size.width, size.height ]);\n    };\n\n    Text.prototype.bbox = function bbox (transformation) {\n        var combinedMatrix = toMatrix(this.currentTransform(transformation));\n        return this.rect().bbox(combinedMatrix);\n    };\n\n    Text.prototype.rawBBox = function rawBBox () {\n        return this.rect().bbox();\n    };\n\n    Text.prototype._containsPoint = function _containsPoint (point) {\n        return this.rect().containsPoint(point);\n    };\n\n    return Text;\n}(Element));\n\nText.prototype.nodeType = \"Text\";\n\nPaintable.extend(Text.prototype);\n\ndefinePointAccessors(Text.prototype, [ \"position\" ]);\n\nexport default Text;","import defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\nvar Image = (function (Element) {\n    function Image(src, rect, options) {\n        if ( rect === void 0 ) rect = new Rect();\n        if ( options === void 0 ) options = {};\n\n        Element.call(this, options);\n\n        this.src(src);\n        this.rect(rect);\n    }\n\n    if ( Element ) Image.__proto__ = Element;\n    Image.prototype = Object.create( Element && Element.prototype );\n    Image.prototype.constructor = Image;\n\n    Image.prototype.src = function src (value) {\n        if (defined(value)) {\n            this.options.set(\"src\", value);\n            return this;\n        }\n\n        return this.options.get(\"src\");\n    };\n\n    Image.prototype.bbox = function bbox (transformation) {\n        var combinedMatrix = toMatrix(this.currentTransform(transformation));\n        return this._rect.bbox(combinedMatrix);\n    };\n\n    Image.prototype.rawBBox = function rawBBox () {\n        return this._rect.bbox();\n    };\n\n    Image.prototype._containsPoint = function _containsPoint (point) {\n        return this._rect.containsPoint(point);\n    };\n\n    Image.prototype._hasFill = function _hasFill () {\n        return this.src();\n    };\n\n    return Image;\n}(Element));\n\nImage.prototype.nodeType = \"Image\";\n\ndefineGeometryAccessors(Image.prototype, [ \"rect\" ]);\n\nexport default Image;","\nvar Traversable = {\n    extend: function(proto, childrenField) {\n        proto.traverse = function(callback) {\n            var children = this[childrenField];\n\n            for (var i = 0; i < children.length; i++) {\n                var child = children[i];\n\n                if (child.traverse) {\n                    child.traverse(callback);\n                } else {\n                    callback(child);\n                }\n            }\n\n            return this;\n        };\n    }\n};\n\nexport default Traversable;","import Element from './element';\nimport Traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\nvar Group = (function (Element) {\n    function Group(options) {\n        Element.call(this, options);\n        this.children = [];\n    }\n\n    if ( Element ) Group.__proto__ = Element;\n    Group.prototype = Object.create( Element && Element.prototype );\n    Group.prototype.constructor = Group;\n\n    Group.prototype.childrenChange = function childrenChange (action, items, index) {\n        this.trigger(\"childrenChange\",{\n            action: action,\n            items: items,\n            index: index\n        });\n    };\n\n    Group.prototype.append = function append$1 () {\n        append(this.children, arguments);\n        this._reparent(arguments, this);\n\n        this.childrenChange(\"add\", arguments);\n\n        return this;\n    };\n\n    Group.prototype.insert = function insert (index, element) {\n        this.children.splice(index, 0, element);\n        element.parent = this;\n\n        this.childrenChange(\"add\", [ element ], index);\n\n        return this;\n    };\n\n    Group.prototype.insertAt = function insertAt (element, index) {\n        return this.insert(index, element);\n    };\n\n    Group.prototype.remove = function remove (element) {\n        var index = this.children.indexOf(element);\n        if (index >= 0) {\n            this.children.splice(index, 1);\n            element.parent = null;\n            this.childrenChange(\"remove\", [ element ], index);\n        }\n\n        return this;\n    };\n\n    Group.prototype.removeAt = function removeAt (index) {\n        if (0 <= index && index < this.children.length) {\n            var element = this.children[index];\n            this.children.splice(index, 1);\n            element.parent = null;\n            this.childrenChange(\"remove\", [ element ], index);\n        }\n\n        return this;\n    };\n\n    Group.prototype.clear = function clear () {\n        var items = this.children;\n        this.children = [];\n        this._reparent(items, null);\n\n        this.childrenChange(\"remove\", items, 0);\n\n        return this;\n    };\n\n    Group.prototype.bbox = function bbox (transformation) {\n        return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n    };\n\n    Group.prototype.rawBBox = function rawBBox () {\n        return elementsBoundingBox(this.children, false);\n    };\n\n    Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n        return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n    };\n\n    Group.prototype.currentTransform = function currentTransform (transformation) {\n        return Element.prototype.currentTransform.call(this, transformation) || null;\n    };\n\n    Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n        if (this.visible()) {\n            var children = this.children;\n            var transform = this.currentTransform(parentTransform);\n            for (var idx = 0; idx < children.length; idx++) {\n                if (children[idx].containsPoint(point, transform)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n\n    Group.prototype._reparent = function _reparent (elements, newParent) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var child = elements[i];\n            var parent = child.parent;\n            if (parent && parent !== this$1 && parent.remove) {\n                parent.remove(child);\n            }\n\n            child.parent = newParent;\n        }\n    };\n\n    return Group;\n}(Element));\n\nGroup.prototype.nodeType = \"Group\";\n\nTraversable.extend(Group.prototype, \"children\");\n\nexport default Group;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n    var transofrm = element.transform() || createTransform();\n    var matrix = transofrm.matrix();\n    matrix.e += point.x - bbox.origin.x;\n    matrix.f += point.y - bbox.origin.y;\n\n    transofrm.matrix(matrix);\n    element.transform(transofrm);\n}","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n    var start;\n    if (align === \"start\") {\n        start = rect.origin[axis];\n    } else if (align === \"end\") {\n        start = rect.origin[axis] + rect.size[sizeField] - size;\n    } else {\n        start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n    }\n\n    return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n    var start;\n    if (align === \"start\") {\n        start = rect.origin[axis] + rect.size[sizeField] - size;\n    } else if (align === \"end\") {\n        start = rect.origin[axis];\n    } else {\n        start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n    }\n\n    return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n    alignContent: \"start\",\n    justifyContent: \"start\",\n    alignItems: \"start\",\n    spacing: 0,\n    orientation: \"horizontal\",\n    lineSpacing: 0,\n    wrap: true,\n    revers: false\n};\n\nvar forEach = function (elements, callback) {\n    elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n    var length = elements.length;\n\n    for (var idx = length - 1; idx >= 0; idx--) {\n        callback(elements[idx], idx);\n    }\n};\n\nvar Layout = (function (Group) {\n    function Layout(rect, options) {\n        Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n        this._rect = rect;\n        this._fieldMap = {};\n    }\n\n    if ( Group ) Layout.__proto__ = Group;\n    Layout.prototype = Object.create( Group && Group.prototype );\n    Layout.prototype.constructor = Layout;\n\n    Layout.prototype.rect = function rect (value) {\n        if (value) {\n            this._rect = value;\n            return this;\n        }\n\n        return this._rect;\n    };\n\n    Layout.prototype._initMap = function _initMap () {\n        var options = this.options;\n        var fieldMap = this._fieldMap;\n        if (options.orientation === \"horizontal\") {\n            fieldMap.sizeField = \"width\";\n            fieldMap.groupsSizeField = \"height\";\n            fieldMap.groupAxis = \"x\";\n            fieldMap.groupsAxis = \"y\";\n        } else {\n            fieldMap.sizeField = \"height\";\n            fieldMap.groupsSizeField = \"width\";\n            fieldMap.groupAxis = \"y\";\n            fieldMap.groupsAxis = \"x\";\n        }\n\n        if (options.reverse) {\n            this.forEach = forEachReverse;\n            this.justifyAlign = alignStartReverse;\n        } else {\n            this.forEach = forEach;\n            this.justifyAlign = alignStart;\n        }\n    };\n\n    Layout.prototype.reflow = function reflow () {\n        var this$1 = this;\n\n        if (!this._rect || this.children.length === 0) {\n            return;\n        }\n        this._initMap();\n\n        if (this.options.transform) {\n            this.transform(null);\n        }\n\n        var options = this.options;\n        var rect = this._rect;\n        var ref = this._initGroups();\n        var groups = ref.groups;\n        var groupsSize = ref.groupsSize;\n        var ref$1 = this._fieldMap;\n        var sizeField = ref$1.sizeField;\n        var groupsSizeField = ref$1.groupsSizeField;\n        var groupAxis = ref$1.groupAxis;\n        var groupsAxis = ref$1.groupsAxis;\n        var groupOrigin = new Point();\n        var elementOrigin = new Point();\n        var size = new Size();\n        var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n        var elementStart, group, groupBox;\n\n        var arrangeElements = function (bbox, idx) {\n            var element = group.elements[idx];\n\n            elementOrigin[groupAxis] = elementStart;\n            elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n            translateToPoint(elementOrigin, bbox, element);\n            elementStart += bbox.size[sizeField] + options.spacing;\n        };\n\n        for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n            group = groups[groupIdx];\n            groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n            groupOrigin[groupsAxis] = groupStart;\n            size[sizeField] = group.size;\n            size[groupsSizeField] = group.lineSize;\n            groupBox = new Rect(groupOrigin, size);\n            this$1.forEach(group.bboxes, arrangeElements);\n\n            groupStart += group.lineSize + options.lineSpacing;\n        }\n\n        if (!options.wrap && group.size > rect.size[sizeField]) {\n            var scale = rect.size[sizeField] / groupBox.size[sizeField];\n            var scaledStart = groupBox.topLeft().scale(scale, scale);\n            var scaledSize = groupBox.size[groupsSizeField] * scale;\n            var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n            var transform = createTransform();\n            if (groupAxis === \"x\") {\n                transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n            } else {\n                transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n            }\n            transform.scale(scale, scale);\n\n            this.transform(transform);\n        }\n    };\n\n    Layout.prototype._initGroups = function _initGroups () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var lineSpacing = options.lineSpacing;\n        var wrap = options.wrap;\n        var spacing = options.spacing;\n        var sizeField = this._fieldMap.sizeField;\n        var group = this._newGroup();\n        var groups = [];\n        var addGroup = function() {\n            groups.push(group);\n            groupsSize += group.lineSize + lineSpacing;\n        };\n        var groupsSize = -lineSpacing;\n\n        for (var idx = 0; idx < children.length; idx++) {\n            var element = children[idx];\n            var bbox = children[idx].clippedBBox();\n            if (element.visible() && bbox) {\n                if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n                    if (group.bboxes.length === 0) {\n                        this$1._addToGroup(group, bbox, element);\n                        addGroup();\n                        group = this$1._newGroup();\n                    } else {\n                        addGroup();\n                        group = this$1._newGroup();\n                        this$1._addToGroup(group, bbox, element);\n                    }\n                } else {\n                    this$1._addToGroup(group, bbox, element);\n                }\n            }\n        }\n\n        if (group.bboxes.length) {\n            addGroup();\n        }\n\n        return {\n            groups: groups,\n            groupsSize: groupsSize\n        };\n    };\n\n    Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n        group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n        group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n        group.bboxes.push(bbox);\n        group.elements.push(element);\n    };\n\n    Layout.prototype._newGroup = function _newGroup () {\n        return {\n            lineSize: 0,\n            size: -this.options.spacing,\n            bboxes: [],\n            elements: []\n        };\n    };\n\n    return Layout;\n}(Group));\n\nexport default Layout;","import defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\nvar Rect = (function (Element) {\n    function Rect(geometry, options) {\n        if ( geometry === void 0 ) geometry = new GeometryRect();\n        if ( options === void 0 ) options = {};\n\n        Element.call(this, options);\n        this.geometry(geometry);\n\n        if (!defined(this.options.stroke)) {\n            this.stroke(\"#000\");\n        }\n    }\n\n    if ( Element ) Rect.__proto__ = Element;\n    Rect.prototype = Object.create( Element && Element.prototype );\n    Rect.prototype.constructor = Rect;\n\n    Rect.prototype._bbox = function _bbox (matrix) {\n        return this._geometry.bbox(matrix);\n    };\n\n    Rect.prototype.rawBBox = function rawBBox () {\n        return this._geometry.bbox();\n    };\n\n    Rect.prototype._containsPoint = function _containsPoint (point) {\n        return this._geometry.containsPoint(point);\n    };\n\n    Rect.prototype._isOnPath = function _isOnPath (point) {\n        return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n    };\n\n    return Rect;\n}(Element));\n\nRect.prototype.nodeType = \"Rect\";\n\nPaintable.extend(Rect.prototype);\nMeasurable.extend(Rect.prototype);\ndefineGeometryAccessors(Rect.prototype, [ \"geometry\" ]);\n\nexport default Rect;\n\n","import translateToPoint from './translate-to-point';\nimport alignStart from './align-start';\n\nexport default function alignElements(elements, rect, alignment, axis, sizeField) {\n    for (var idx = 0; idx < elements.length; idx++) {\n        var bbox = elements[idx].clippedBBox();\n        if (bbox) {\n            var point = bbox.origin.clone();\n            point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n            translateToPoint(point, bbox, elements[idx]);\n        }\n    }\n}","\nimport alignElements from './align-elements';\n\nexport default function align(elements, rect, alignment) {\n    alignElements(elements, rect, alignment, \"x\", \"width\");\n}","import alignElements from './align-elements';\n\nexport default function vAlign(elements, rect, alignment) {\n    alignElements(elements, rect, alignment, \"y\", \"height\");\n}","import Point from '../geometry/point';\nimport translateToPoint from './translate-to-point';\n\nexport default function stackElements(elements, stackAxis, otherAxis, sizeField) {\n    if (elements.length > 1) {\n        var origin = new Point();\n        var previousBBox = elements[0].bbox;\n\n        for (var idx = 1; idx < elements.length; idx++) {\n            var element = elements[idx].element;\n            var bbox = elements[idx].bbox;\n            origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n            origin[otherAxis] = bbox.origin[otherAxis];\n            translateToPoint(origin, bbox, element);\n            bbox.origin[stackAxis] = origin[stackAxis];\n            previousBBox = bbox;\n        }\n    }\n}","export default function createStackElements(elements) {\n    var stackElements = [];\n\n    for (var idx = 0; idx < elements.length; idx++) {\n        var element = elements[idx];\n        var bbox = element.clippedBBox();\n        if (bbox) {\n            stackElements.push({\n                element: element,\n                bbox: bbox\n            });\n        }\n    }\n\n    return stackElements;\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function stack(elements) {\n    stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function vStack(elements) {\n    stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n}","import translateToPoint from './translate-to-point';\nimport stackElements from './stack-elements';\n\nfunction getStacks(elements, rect, sizeField) {\n    var maxSize = rect.size[sizeField];\n    var stacks = [];\n    var stack = [];\n    var stackSize = 0;\n    var element, bbox;\n\n    var addElementToStack = function() {\n        stack.push({\n            element: element,\n            bbox: bbox\n        });\n    };\n\n    for (var idx = 0; idx < elements.length; idx++) {\n        element = elements[idx];\n\n        bbox = element.clippedBBox();\n        if (bbox) {\n            var size = bbox.size[sizeField];\n            if (stackSize + size > maxSize) {\n                if (stack.length) {\n                    stacks.push(stack);\n                    stack = [];\n                    addElementToStack();\n                    stackSize = size;\n                } else {\n                    addElementToStack();\n                    stacks.push(stack);\n                    stack = [];\n                    stackSize = 0;\n                }\n            } else {\n                addElementToStack();\n                stackSize += size;\n            }\n        }\n    }\n\n    if (stack.length) {\n        stacks.push(stack);\n    }\n\n    return stacks;\n}\n\nexport default function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n    var stacks = getStacks(elements, rect, sizeField);\n    var origin = rect.origin.clone();\n    var result = [];\n\n    for (var idx = 0; idx < stacks.length; idx++) {\n        var stack = stacks[idx];\n        var startElement = stack[0];\n        origin[otherAxis] = startElement.bbox.origin[otherAxis];\n        translateToPoint(origin, startElement.bbox, startElement.element);\n        startElement.bbox.origin[axis] = origin[axis];\n        stackElements(stack, axis, otherAxis, sizeField);\n        result.push([]);\n        for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n            result[idx].push(stack[elementIdx].element);\n        }\n    }\n    return result;\n}","import wrapElements from './wrap-elements';\n\nexport default function wrap(elements, rect) {\n    return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n}","import wrapElements from './wrap-elements';\n\nexport default function vWrap(elements, rect) {\n    return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n}","import createTransform from '../geometry/transform';\n\nexport default function fit(element, rect) {\n    var bbox = element.clippedBBox();\n    if (bbox) {\n        var elementSize = bbox.size;\n        var rectSize = rect.size;\n        if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n            var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n            var transform = element.transform() || createTransform();\n            transform.scale(scale, scale);\n            element.transform(transform);\n        }\n    }\n}","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n    function StopsArray () {\n        ElementsArray.apply(this, arguments);\n    }\n\n    if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n    StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n    StopsArray.prototype.constructor = StopsArray;\n\n    StopsArray.prototype._change = function _change () {\n        this.optionsChange({\n            field: \"stops\"\n        });\n    };\n\n    return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n    return function(value) {\n        if (defined(value)) {\n            this.options.set(name, value);\n            return this;\n        }\n\n        return this.options.get(name);\n    };\n}\n\nexport default function defineOptionsAccessors(fn, names) {\n    for (var i = 0; i < names.length; i++) {\n        fn[names[i]] = optionsAccessor(names[i]);\n    }\n}","import defineOptionsAccessors from '../accessors/define-options-accessors';\nimport OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\n\nvar GradientStop = (function (Class) {\n    function GradientStop(offset, color, opacity) {\n        Class.call(this);\n\n        this.options = new OptionsStore({\n            offset: offset,\n            color: color,\n            opacity: defined(opacity) ? opacity : 1\n        });\n        this.options.addObserver(this);\n    }\n\n    if ( Class ) GradientStop.__proto__ = Class;\n    GradientStop.prototype = Object.create( Class && Class.prototype );\n    GradientStop.prototype.constructor = GradientStop;\n\n    GradientStop.create = function create (arg) {\n        if (defined(arg)) {\n            var stop;\n            if (arg instanceof GradientStop) {\n                stop = arg;\n            } else if (arg.length > 1) {\n                stop = new GradientStop(arg[0], arg[1], arg[2]);\n            } else {\n                stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n            }\n\n            return stop;\n        }\n    };\n\n    return GradientStop;\n}(Class));\n\ndefineOptionsAccessors(GradientStop.prototype, [ \"offset\", \"color\", \"opacity\" ]);\nObserversMixin.extend(GradientStop.prototype);\n\nexport default GradientStop;\n","import ObserversMixin from '../mixins/observers-mixin';\nimport StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport { Class } from '../common';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (Class) {\n    function Gradient(options) {\n        if ( options === void 0 ) options = {};\n\n        Class.call(this);\n\n        this.stops = new StopsArray(this._createStops(options.stops));\n        this.stops.addObserver(this);\n        this._userSpace = options.userSpace;\n        this.id = definitionId();\n    }\n\n    if ( Class ) Gradient.__proto__ = Class;\n    Gradient.prototype = Object.create( Class && Class.prototype );\n    Gradient.prototype.constructor = Gradient;\n\n    Gradient.prototype.userSpace = function userSpace (value) {\n        if (defined(value)) {\n            this._userSpace = value;\n            this.optionsChange();\n            return this;\n        }\n\n        return this._userSpace;\n    };\n\n    Gradient.prototype._createStops = function _createStops (stops) {\n        if ( stops === void 0 ) stops = [];\n\n        var result = [];\n        for (var idx = 0; idx < stops.length; idx++) {\n            result.push(GradientStop.create(stops[idx]));\n        }\n\n        return result;\n    };\n\n    Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n        this.stops.push(new GradientStop(offset, color, opacity));\n    };\n\n    Gradient.prototype.removeStop = function removeStop (stop) {\n        var index = this.stops.indexOf(stop);\n        if (index >= 0) {\n            this.stops.splice(index, 1);\n        }\n    };\n\n    return Gradient;\n}(Class));\n\nGradient.prototype.nodeType = \"Gradient\";\n\nObserversMixin.extend(Gradient.prototype);\n\nObject.assign(Gradient.prototype, {\n    optionsChange: function(e) {\n        this.trigger(\"optionsChange\", {\n            field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n            value: this\n        });\n    },\n\n    geometryChange: function() {\n        this.optionsChange();\n    }\n});\n\nexport default Gradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\nvar LinearGradient = (function (Gradient) {\n    function LinearGradient(options) {\n        if ( options === void 0 ) options = {};\n\n        Gradient.call(this, options);\n\n        this.start(options.start || new Point());\n\n        this.end(options.end || new Point(1, 0));\n    }\n\n    if ( Gradient ) LinearGradient.__proto__ = Gradient;\n    LinearGradient.prototype = Object.create( Gradient && Gradient.prototype );\n    LinearGradient.prototype.constructor = LinearGradient;\n\n    return LinearGradient;\n}(Gradient));\n\ndefinePointAccessors(LinearGradient.prototype, [ \"start\", \"end\" ]);\n\nexport default LinearGradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\nvar RadialGradient = (function (Gradient) {\n    function RadialGradient(options) {\n        if ( options === void 0 ) options = {};\n\n        Gradient.call(this, options);\n\n        this.center(options.center || new Point());\n        this._radius = defined(options.radius) ? options.radius : 1;\n        this._fallbackFill = options.fallbackFill;\n    }\n\n    if ( Gradient ) RadialGradient.__proto__ = Gradient;\n    RadialGradient.prototype = Object.create( Gradient && Gradient.prototype );\n    RadialGradient.prototype.constructor = RadialGradient;\n\n    RadialGradient.prototype.radius = function radius (value) {\n        if (defined(value)) {\n            this._radius = value;\n            this.geometryChange();\n            return this;\n        }\n\n        return this._radius;\n    };\n\n    RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n        if (defined(value)) {\n            this._fallbackFill = value;\n            this.optionsChange();\n            return this;\n        }\n\n        return this._fallbackFill;\n    };\n\n    return RadialGradient;\n}(Gradient));\n\ndefinePointAccessors(RadialGradient.prototype, [ \"center\" ]);\n\nexport default RadialGradient;","export function swing(position) {\n    return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n    return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n    var s = 1.70158,\n        p = 0,\n        a = diff;\n\n    if (position === 0) {\n        return start;\n    }\n\n    if (position === 1) {\n        return start + diff;\n    }\n\n    if (!p) {\n        p = 0.5;\n    }\n\n    if (a < Math.abs(diff)) {\n        a = diff;\n        s = p / 4;\n    } else {\n        s = p / (2 * Math.PI) * Math.asin(diff / a);\n    }\n\n    return a * Math.pow(2, -10 * position) *\n           Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","import { Class } from '../common';\n\nvar AnimationFactory = (function (Class) {\n    function AnimationFactory() {\n        Class.call(this);\n\n        this._items = [];\n    }\n\n    if ( Class ) AnimationFactory.__proto__ = Class;\n    AnimationFactory.prototype = Object.create( Class && Class.prototype );\n    AnimationFactory.prototype.constructor = AnimationFactory;\n\n    AnimationFactory.prototype.register = function register (name, type) {\n        this._items.push({\n            name: name,\n            type: type\n        });\n    };\n\n    AnimationFactory.prototype.create = function create (element, options) {\n        var items = this._items;\n        var match;\n\n        if (options && options.type) {\n            var type = options.type.toLowerCase();\n            for (var i = 0; i < items.length; i++) {\n                if (items[i].name.toLowerCase() === type) {\n                    match = items[i];\n                    break;\n                }\n            }\n        }\n\n        if (match) {\n            return new match.type(element, options);\n        }\n    };\n\n    return AnimationFactory;\n}(Class));\n\nAnimationFactory.current = new AnimationFactory();\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar now = Date.now || function() {\n    return new Date().getTime();\n};\n\nvar Animation = (function (Class) {\n    function Animation(element, options) {\n        Class.call(this);\n\n        this.options = Object.assign({}, this.options, options);\n        this.element = element;\n    }\n\n    if ( Class ) Animation.__proto__ = Class;\n    Animation.prototype = Object.create( Class && Class.prototype );\n    Animation.prototype.constructor = Animation;\n\n    Animation.prototype.setup = function setup () {};\n    Animation.prototype.step = function step () {};\n\n    Animation.prototype.play = function play () {\n        var this$1 = this;\n\n        var options = this.options;\n        var duration = options.duration;\n        var delay = options.delay; if ( delay === void 0 ) delay = 0;\n        var easing = easingFunctions[options.easing];\n        var start = now() + delay;\n        var finish = start + duration;\n\n        if (duration === 0) {\n            this.step(1);\n            this.abort();\n        } else {\n            setTimeout(function () {\n                var loop = function () {\n                    if (this$1._stopped) {\n                        return;\n                    }\n\n                    var wallTime = now();\n\n                    var time = limitValue(wallTime - start, 0, duration);\n                    var position = time / duration;\n                    var easingPosition = easing(position, time, 0, 1, duration);\n\n                    this$1.step(easingPosition);\n\n                    if (wallTime < finish) {\n                        animationFrame(loop);\n                    } else {\n                        this$1.abort();\n                    }\n                };\n\n                loop();\n            }, delay);\n        }\n    };\n\n    Animation.prototype.abort = function abort () {\n        this._stopped = true;\n    };\n\n    Animation.prototype.destroy = function destroy () {\n        this.abort();\n    };\n\n    return Animation;\n}(Class));\n\nAnimation.prototype.options = {\n    duration: 500,\n    easing: \"swing\"\n};\n\nAnimation.create = function(type, element, options) {\n    return AnimationFactory.current.create(type, element, options);\n};\n\nexport default Animation;\n","import { Class, logToConsole } from '../common';\n\nvar SurfaceFactory = (function (Class) {\n    function SurfaceFactory() {\n        Class.call(this);\n\n        this._items = [];\n    }\n\n    if ( Class ) SurfaceFactory.__proto__ = Class;\n    SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n    SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n    SurfaceFactory.prototype.register = function register (name, type, order) {\n        var items = this._items;\n        var first = items[0];\n        var entry = {\n            name: name,\n            type: type,\n            order: order\n        };\n\n        if (!first || order < first.order) {\n            items.unshift(entry);\n        } else {\n            items.push(entry);\n        }\n    };\n\n    SurfaceFactory.prototype.create = function create (element, options) {\n        var items = this._items;\n        var match = items[0];\n\n        if (options && options.type) {\n            var preferred = options.type.toLowerCase();\n            for (var i = 0; i < items.length; i++) {\n                if (items[i].name === preferred) {\n                    match = items[i];\n                    break;\n                }\n            }\n        }\n\n        if (match) {\n            return new match.type(element, options);\n        }\n\n        logToConsole(\n            \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n            \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n    };\n\n    return SurfaceFactory;\n}(Class));\n\nSurfaceFactory.current = new SurfaceFactory();\n\nexport default SurfaceFactory;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport SurfaceFactory from './surface-factory';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementStyles, elementSize, elementOffset } from '../util';\n\nvar events = [\n    \"click\",\n    \"mouseenter\",\n    \"mouseleave\",\n    \"mousemove\",\n    \"resize\"\n];\n\nvar Surface = (function (Observable) {\n    function Surface(element, options) {\n        Observable.call(this);\n\n        this.options = Object.assign({}, options);\n        this.element = element;\n        this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n        this._click = this._handler(\"click\");\n        this._mouseenter = this._handler(\"mouseenter\");\n        this._mouseleave = this._handler(\"mouseleave\");\n        this._mousemove = this._handler(\"mousemove\");\n\n        this._visual = new Group();\n\n        elementSize(element, this.options);\n\n        this.bind(events, this.options);\n\n        this._enableTracking();\n    }\n\n    if ( Observable ) Surface.__proto__ = Observable;\n    Surface.prototype = Object.create( Observable && Observable.prototype );\n    Surface.prototype.constructor = Surface;\n\n    Surface.prototype.draw = function draw (element) {\n        this._visual.children.push(element);\n    };\n\n    Surface.prototype.clear = function clear () {\n        this._visual.children = [];\n    };\n\n    Surface.prototype.destroy = function destroy () {\n        this._visual = null;\n        this.element._kendoExportVisual = null;\n        this.unbind();\n    };\n\n    Surface.prototype.eventTarget = function eventTarget (e) {\n        var this$1 = this;\n\n        var domNode = eventElement(e);\n        var node;\n\n        while (!node && domNode) {\n            node = domNode._kendoNode;\n            if (domNode === this$1.element) {\n                break;\n            }\n\n            domNode = domNode.parentElement;\n        }\n\n        if (node) {\n            return node.srcElement;\n        }\n    };\n\n    Surface.prototype.exportVisual = function exportVisual () {\n        return this._visual;\n    };\n\n    Surface.prototype.getSize = function getSize () {\n        return elementSize(this.element);\n    };\n\n    Surface.prototype.currentSize = function currentSize (size) {\n        if (size) {\n            this._size = size;\n        } else {\n            return this._size;\n        }\n    };\n\n    Surface.prototype.setSize = function setSize (size) {\n        elementSize(this.element, size);\n\n        this.currentSize(size);\n        this._resize();\n    };\n\n    Surface.prototype.resize = function resize (force) {\n        var size = this.getSize();\n        var currentSize = this.currentSize();\n\n        if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n            this.currentSize(size);\n            this._resize(size, force);\n            this.trigger(\"resize\", size);\n        }\n    };\n\n    Surface.prototype.size = function size (value) {\n        if (!value) {\n            return this.getSize();\n        }\n\n        this.setSize(value);\n    };\n\n    Surface.prototype.suspendTracking = function suspendTracking () {\n        this._suspendedTracking = true;\n    };\n\n    Surface.prototype.resumeTracking = function resumeTracking () {\n        this._suspendedTracking = false;\n    };\n\n    Surface.prototype._enableTracking = function _enableTracking () {};\n\n    Surface.prototype._resize = function _resize () {};\n\n    Surface.prototype._handler = function _handler (eventName) {\n        var this$1 = this;\n\n        return function (e) {\n            var node = this$1.eventTarget(e);\n            if (node && !this$1._suspendedTracking) {\n                this$1.trigger(eventName, {\n                    element: node,\n                    originalEvent: e,\n                    type: eventName\n                });\n            }\n        };\n    };\n\n    Surface.prototype._elementOffset = function _elementOffset () {\n        var element = this.element;\n        var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n        var paddingLeft = ref.paddingLeft;\n        var paddingTop = ref.paddingTop;\n        var ref$1 = elementOffset(element);\n        var left = ref$1.left;\n        var top = ref$1.top;\n\n        return {\n            left: left + parseInt(paddingLeft, 10),\n            top: top + parseInt(paddingTop, 10)\n        };\n    };\n\n    Surface.prototype._surfacePoint = function _surfacePoint (e) {\n        var offset = this._elementOffset();\n        var coord = eventCoordinates(e);\n        var x = coord.x - offset.left;\n        var y = coord.y - offset.top;\n\n        return new Point(x, y);\n    };\n\n    return Surface;\n}(Observable));\n\nSurface.create = function(element, options) {\n    return SurfaceFactory.current.create(element, options);\n};\n\nSurface.support = {};\n\nexport default Surface;\n","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n    function BaseNode(srcElement) {\n        Class.call(this);\n\n        this.childNodes = [];\n        this.parent = null;\n\n        if (srcElement) {\n            this.srcElement = srcElement;\n            this.observe();\n        }\n    }\n\n    if ( Class ) BaseNode.__proto__ = Class;\n    BaseNode.prototype = Object.create( Class && Class.prototype );\n    BaseNode.prototype.constructor = BaseNode;\n\n    BaseNode.prototype.destroy = function destroy () {\n        var this$1 = this;\n\n        if (this.srcElement) {\n            this.srcElement.removeObserver(this);\n        }\n\n        var children = this.childNodes;\n        for (var i = 0; i < children.length; i++) {\n            this$1.childNodes[i].destroy();\n        }\n\n        this.parent = null;\n    };\n\n    BaseNode.prototype.load = function load () {};\n\n    BaseNode.prototype.observe = function observe () {\n        if (this.srcElement) {\n            this.srcElement.addObserver(this);\n        }\n    };\n\n    BaseNode.prototype.append = function append (node) {\n        this.childNodes.push(node);\n        node.parent = this;\n    };\n\n    BaseNode.prototype.insertAt = function insertAt (node, pos) {\n        this.childNodes.splice(pos, 0, node);\n        node.parent = this;\n    };\n\n    BaseNode.prototype.remove = function remove (index, count) {\n        var this$1 = this;\n\n        var end = index + count;\n        for (var i = index; i < end; i++) {\n            this$1.childNodes[i].removeSelf();\n        }\n        this.childNodes.splice(index, count);\n    };\n\n    BaseNode.prototype.removeSelf = function removeSelf () {\n        this.clear();\n        this.destroy();\n    };\n\n    BaseNode.prototype.clear = function clear () {\n        this.remove(0, this.childNodes.length);\n    };\n\n    BaseNode.prototype.invalidate = function invalidate () {\n        if (this.parent) {\n            this.parent.invalidate();\n        }\n    };\n\n    BaseNode.prototype.geometryChange = function geometryChange () {\n        this.invalidate();\n    };\n\n    BaseNode.prototype.optionsChange = function optionsChange () {\n        this.invalidate();\n    };\n\n    BaseNode.prototype.childrenChange = function childrenChange (e) {\n        if (e.action === \"add\") {\n            this.load(e.items, e.index);\n        } else if (e.action === \"remove\") {\n            this.remove(e.index, e.items.length);\n        }\n\n        this.invalidate();\n    };\n\n    return BaseNode;\n}(Class));\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n    return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n    var output = \"\";\n    for (var i = 0; i < attrs.length; i++) {\n        output += renderAttr(attrs[i][0], attrs[i][1]);\n    }\n\n    return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n    var output = \"\";\n    for (var i = 0; i < attrs.length; i++) {\n        var value = attrs[i][1];\n        if (defined(value)) {\n            output += attrs[i][0] + \":\" + value + \";\";\n        }\n    }\n\n    if (output !== \"\") {\n        return output;\n    }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\n\nexport { SVG_NS, NONE };","import { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n    container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n    var testFragment = \"<svg xmlns='\" + SVG_NS + \"'></svg>\";\n    var testContainer = document.createElement(\"div\");\n    var hasParser = typeof DOMParser !== \"undefined\";\n\n    testContainer.innerHTML = testFragment;\n\n    if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n        renderSVG = function(container, svg) {\n            var parser = new DOMParser();\n            var chartDoc = parser.parseFromString(svg, \"text/xml\");\n            var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n            container.innerHTML = \"\";\n            container.appendChild(importedDoc);\n        };\n    }\n}\n\nexport default renderSVG;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n    clip: \"clip-path\",\n    fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n    return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n    var base = document.getElementsByTagName(\"base\")[0];\n    var href = document.location.href;\n    var url = \"\";\n\n    if (base && !(support.browser || {}).msie) {\n        var hashIndex = href.indexOf(\"#\");\n        if (hashIndex !== -1) {\n            href = href.substring(0, hashIndex);\n        }\n\n        url = href;\n    }\n\n    return url;\n}\n\nvar Node = (function (BaseNode) {\n    function Node(srcElement, options) {\n        BaseNode.call(this, srcElement);\n        this.definitions = {};\n\n        this.options = options;\n    }\n\n    if ( BaseNode ) Node.__proto__ = BaseNode;\n    Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n    Node.prototype.constructor = Node;\n\n    Node.prototype.destroy = function destroy () {\n        if (this.element) {\n            this.element._kendoNode = null;\n            this.element = null;\n        }\n\n        this.clearDefinitions();\n        BaseNode.prototype.destroy.call(this);\n    };\n\n    Node.prototype.load = function load (elements, pos) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var srcElement = elements[i];\n            var children = srcElement.children;\n\n            var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n            if (defined(pos)) {\n                this$1.insertAt(childNode, pos);\n            } else {\n                this$1.append(childNode);\n            }\n\n            childNode.createDefinitions();\n\n            if (children && children.length > 0) {\n                childNode.load(children);\n            }\n\n            var element = this$1.element;\n            if (element) {\n                childNode.attachTo(element, pos);\n            }\n        }\n    };\n\n    Node.prototype.root = function root () {\n        var root = this;\n\n        while (root.parent) {\n            root = root.parent;\n        }\n\n        return root;\n    };\n\n    Node.prototype.attachTo = function attachTo (domElement, pos) {\n        var container = document.createElement(\"div\");\n        renderSVG(container,\n            \"<svg xmlns='\" + SVG_NS + \"' version='1.1'>\" +\n                this.render() +\n            \"</svg>\"\n        );\n\n        var element = container.firstChild.firstChild;\n        if (element) {\n            if (defined(pos)) {\n                domElement.insertBefore(element, domElement.childNodes[pos] || null);\n            } else {\n                domElement.appendChild(element);\n            }\n            this.setElement(element);\n        }\n    };\n\n    Node.prototype.setElement = function setElement (element) {\n        if (this.element) {\n            this.element._kendoNode = null;\n        }\n\n        this.element = element;\n        this.element._kendoNode = this;\n\n        var nodes = this.childNodes;\n        for (var i = 0; i < nodes.length; i++) {\n            var childElement = element.childNodes[i];\n            nodes[i].setElement(childElement);\n        }\n    };\n\n    Node.prototype.clear = function clear () {\n        this.clearDefinitions();\n\n        if (this.element) {\n            this.element.innerHTML = \"\";\n        }\n\n        var children = this.childNodes;\n        for (var i = 0; i < children.length; i++) {\n            children[i].destroy();\n        }\n\n        this.childNodes = [];\n    };\n\n    Node.prototype.removeSelf = function removeSelf () {\n        if (this.element) {\n            var parentNode = this.element.parentNode;\n            if (parentNode) {\n                parentNode.removeChild(this.element);\n            }\n            this.element = null;\n        }\n\n        BaseNode.prototype.removeSelf.call(this);\n    };\n\n    Node.prototype.template = function template () {\n        return this.renderChildren();\n    };\n\n    Node.prototype.render = function render () {\n        return this.template();\n    };\n\n    Node.prototype.renderChildren = function renderChildren () {\n        var nodes = this.childNodes;\n        var output = \"\";\n\n        for (var i = 0; i < nodes.length; i++) {\n            output += nodes[i].render();\n        }\n\n        return output;\n    };\n\n    Node.prototype.optionsChange = function optionsChange (e) {\n        var field = e.field;\n        var value = e.value;\n\n        if (field === \"visible\") {\n            this.css(\"display\", value ? \"\" : NONE);\n        } else if (DefinitionMap[field] && isDefinition(field, value)) {\n            this.updateDefinition(field, value);\n        } else if (field === \"opacity\") {\n            this.attr(\"opacity\", value);\n        } else if (field === \"cursor\") {\n            this.css(\"cursor\", value);\n        } else if (field === \"id\") {\n            if (value) {\n                this.attr(\"id\", value);\n            } else {\n                this.removeAttr(\"id\");\n            }\n        }\n\n        BaseNode.prototype.optionsChange.call(this, e);\n    };\n\n    Node.prototype.attr = function attr (name, value) {\n        if (this.element) {\n            this.element.setAttribute(name, value);\n        }\n    };\n\n    Node.prototype.allAttr = function allAttr (attrs) {\n        var this$1 = this;\n\n        for (var i = 0; i < attrs.length; i++) {\n            this$1.attr(attrs[i][0], attrs[i][1]);\n        }\n    };\n\n    Node.prototype.css = function css (name, value) {\n        if (this.element) {\n            this.element.style[name] = value;\n        }\n    };\n\n    Node.prototype.allCss = function allCss (styles) {\n        var this$1 = this;\n\n        for (var i = 0; i < styles.length; i++) {\n            this$1.css(styles[i][0], styles[i][1]);\n        }\n    };\n\n    Node.prototype.removeAttr = function removeAttr (name) {\n        if (this.element) {\n            this.element.removeAttribute(name);\n        }\n    };\n\n    Node.prototype.mapTransform = function mapTransform (transform) {\n        var attrs = [];\n        if (transform) {\n            attrs.push([\n                TRANSFORM,\n                \"matrix(\" + transform.matrix().toString(6) + \")\"\n            ]);\n        }\n\n        return attrs;\n    };\n\n    Node.prototype.renderTransform = function renderTransform () {\n        return renderAllAttr(\n            this.mapTransform(this.srcElement.transform())\n        );\n    };\n\n    Node.prototype.transformChange = function transformChange (value) {\n        if (value) {\n            this.allAttr(this.mapTransform(value));\n        } else {\n            this.removeAttr(TRANSFORM);\n        }\n    };\n\n    Node.prototype.mapStyle = function mapStyle () {\n        var options = this.srcElement.options;\n        var style = [ [ \"cursor\", options.cursor ] ];\n\n        if (options.visible === false) {\n            style.push([ \"display\", NONE ]);\n        }\n\n        return style;\n    };\n\n    Node.prototype.renderStyle = function renderStyle$1 () {\n        return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n    };\n\n    Node.prototype.renderOpacity = function renderOpacity () {\n        return renderAttr(\"opacity\", this.srcElement.options.opacity);\n    };\n\n    Node.prototype.renderId = function renderId () {\n        return renderAttr(\"id\", this.srcElement.options.id);\n    };\n\n    Node.prototype.createDefinitions = function createDefinitions () {\n        var srcElement = this.srcElement;\n        var definitions = this.definitions;\n        if (srcElement) {\n            var options = srcElement.options;\n            var hasDefinitions;\n\n            for (var field in DefinitionMap) {\n                var definition = options.get(field);\n                if (definition && isDefinition(field, definition)) {\n                    definitions[field] = definition;\n                    hasDefinitions = true;\n                }\n            }\n            if (hasDefinitions) {\n                this.definitionChange({\n                    action: \"add\",\n                    definitions: definitions\n                });\n            }\n        }\n    };\n\n    Node.prototype.definitionChange = function definitionChange (e) {\n        if (this.parent) {\n            this.parent.definitionChange(e);\n        }\n    };\n\n    Node.prototype.updateDefinition = function updateDefinition (type, value) {\n        var definitions = this.definitions;\n        var current = definitions[type];\n        var attr = DefinitionMap[type];\n        var definition = {};\n        if (current) {\n            definition[type] = current;\n            this.definitionChange({\n                action: \"remove\",\n                definitions: definition\n            });\n            delete definitions[type];\n        }\n\n        if (!value) {\n            if (current) {\n                this.removeAttr(attr);\n            }\n        } else {\n            definition[type] = value;\n            this.definitionChange({\n                action: \"add\",\n                definitions: definition\n            });\n            definitions[type] = value;\n            this.attr(attr, this.refUrl(value.id));\n        }\n    };\n\n    Node.prototype.clearDefinitions = function clearDefinitions () {\n        var definitions = this.definitions;\n\n        this.definitionChange({\n            action: \"remove\",\n            definitions: definitions\n        });\n        this.definitions = {};\n    };\n\n    Node.prototype.renderDefinitions = function renderDefinitions () {\n        return renderAllAttr(this.mapDefinitions());\n    };\n\n    Node.prototype.mapDefinitions = function mapDefinitions () {\n        var this$1 = this;\n\n        var definitions = this.definitions;\n        var attrs = [];\n\n        for (var field in definitions) {\n            attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n        }\n\n        return attrs;\n    };\n\n    Node.prototype.refUrl = function refUrl (id) {\n        var skipBaseHref = (this.options || {}).skipBaseHref;\n        var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n        var base = skipBaseHref ? '' : baseHref;\n        return (\"url(\" + base + \"#\" + id + \")\");\n    };\n\n    Node.prototype.baseUrl = function baseUrl$1 () {\n        return baseUrl();\n    };\n\n    return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n    function GradientStopNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) GradientStopNode.__proto__ = Node;\n    GradientStopNode.prototype = Object.create( Node && Node.prototype );\n    GradientStopNode.prototype.constructor = GradientStopNode;\n\n    GradientStopNode.prototype.template = function template () {\n        return (\"<stop \" + (this.renderOffset()) + \" \" + (this.renderStyle()) + \" />\");\n    };\n\n    GradientStopNode.prototype.renderOffset = function renderOffset () {\n        return renderAttr(\"offset\", this.srcElement.offset());\n    };\n\n    GradientStopNode.prototype.mapStyle = function mapStyle () {\n        var srcElement = this.srcElement;\n        return [\n            [ \"stop-color\", srcElement.color() ],\n            [ \"stop-opacity\", srcElement.opacity() ]\n        ];\n    };\n\n    GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"offset\") {\n            this.attr(e.field, e.value);\n        } else if (e.field === \"color\" || e.field === \"opacity\") {\n            this.css(\"stop-\" + e.field, e.value);\n        }\n    };\n\n    return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n    function GradientNode(srcElement) {\n        Node.call(this, srcElement);\n\n        this.id = srcElement.id;\n\n        this.loadStops();\n    }\n\n    if ( Node ) GradientNode.__proto__ = Node;\n    GradientNode.prototype = Object.create( Node && Node.prototype );\n    GradientNode.prototype.constructor = GradientNode;\n\n    GradientNode.prototype.loadStops = function loadStops () {\n        var this$1 = this;\n\n        var stops = this.srcElement.stops;\n        var element = this.element;\n\n        for (var idx = 0; idx < stops.length; idx++) {\n            var stopNode = new GradientStopNode(stops[idx]);\n            this$1.append(stopNode);\n            if (element) {\n                stopNode.attachTo(element);\n            }\n        }\n    };\n\n    GradientNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"gradient.stops\") {\n            BaseNode.prototype.clear.call(this);\n            this.loadStops();\n        } else if (e.field === \"gradient\") {\n            this.allAttr(this.mapCoordinates());\n        }\n    };\n\n    GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n        return renderAllAttr(this.mapCoordinates());\n    };\n\n    GradientNode.prototype.mapSpace = function mapSpace () {\n        return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n    };\n\n    return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n    function LinearGradientNode () {\n        GradientNode.apply(this, arguments);\n    }\n\n    if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n    LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n    LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n    LinearGradientNode.prototype.template = function template () {\n        return (\"<linearGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</linearGradient>\");\n    };\n\n    LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n        var srcElement = this.srcElement;\n        var start = srcElement.start();\n        var end = srcElement.end();\n        var attrs = [\n            [ \"x1\", start.x ],\n            [ \"y1\", start.y ],\n            [ \"x2\", end.x ],\n            [ \"y2\", end.y ],\n            this.mapSpace()\n        ];\n\n        return attrs;\n    };\n\n    return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n    function RadialGradientNode () {\n        GradientNode.apply(this, arguments);\n    }\n\n    if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n    RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n    RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n    RadialGradientNode.prototype.template = function template () {\n        return (\"<radialGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</radialGradient>\");\n    };\n\n    RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n        var srcElement = this.srcElement;\n        var center = srcElement.center();\n        var radius = srcElement.radius();\n        var attrs = [\n            [ \"cx\", center.x ],\n            [ \"cy\", center.y ],\n            [ \"r\", radius ],\n            this.mapSpace()\n        ];\n        return attrs;\n    };\n\n    return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\n\nvar ClipNode = (function (Node) {\n    function ClipNode(srcElement) {\n        Node.call(this);\n\n        this.srcElement = srcElement;\n        this.id = srcElement.id;\n\n        this.load([ srcElement ]);\n    }\n\n    if ( Node ) ClipNode.__proto__ = Node;\n    ClipNode.prototype = Object.create( Node && Node.prototype );\n    ClipNode.prototype.constructor = ClipNode;\n\n    ClipNode.prototype.template = function template () {\n        return (\"<clipPath id='\" + (this.id) + \"'>\" + (this.renderChildren()) + \"</clipPath>\");\n    };\n\n    return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nvar DefinitionNode = (function (Node) {\n    function DefinitionNode() {\n        Node.call(this);\n        this.definitionMap = {};\n    }\n\n    if ( Node ) DefinitionNode.__proto__ = Node;\n    DefinitionNode.prototype = Object.create( Node && Node.prototype );\n    DefinitionNode.prototype.constructor = DefinitionNode;\n\n    DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n        this.element = domElement;\n    };\n\n    DefinitionNode.prototype.template = function template () {\n        return (\"<defs>\" + (this.renderChildren()) + \"</defs>\");\n    };\n\n    DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n        var definitions = e.definitions;\n        var action = e.action;\n\n        if (action === \"add\") {\n            this.addDefinitions(definitions);\n        } else if (action === \"remove\") {\n            this.removeDefinitions(definitions);\n        }\n    };\n\n    DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n        var nodeType;\n        if (type === \"clip\") {\n            nodeType = ClipNode;\n        } else if (type === \"fill\") {\n            if (item instanceof LinearGradient) {\n                nodeType = LinearGradientNode;\n            } else if (item instanceof RadialGradient) {\n                nodeType = RadialGradientNode;\n            }\n        }\n        return new nodeType(item);\n    };\n\n    DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n        var this$1 = this;\n\n        for (var field in definitions) {\n            this$1.addDefinition(field, definitions[field]);\n        }\n    };\n\n    DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n        var ref = this;\n        var element = ref.element;\n        var definitionMap = ref.definitionMap;\n        var id = srcElement.id;\n        var mapItem = definitionMap[id];\n        if (!mapItem) {\n            var node = this.createDefinition(type, srcElement);\n            definitionMap[id] = {\n                element: node,\n                count: 1\n            };\n            this.append(node);\n            if (element) {\n                node.attachTo(this.element);\n            }\n        } else {\n            mapItem.count++;\n        }\n    };\n\n    DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n        var this$1 = this;\n\n        for (var field in definitions) {\n            this$1.removeDefinition(definitions[field]);\n        }\n    };\n\n    DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n        var definitionMap = this.definitionMap;\n        var id = srcElement.id;\n        var mapItem = definitionMap[id];\n\n        if (mapItem) {\n            mapItem.count--;\n            if (mapItem.count === 0) {\n                this.remove(this.childNodes.indexOf(mapItem.element), 1);\n                delete definitionMap[id];\n            }\n        }\n    };\n\n    return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n    function RootNode(options) {\n        Node.call(this);\n        this.options = options;\n        this.defs = new DefinitionNode();\n    }\n\n    if ( Node ) RootNode.__proto__ = Node;\n    RootNode.prototype = Object.create( Node && Node.prototype );\n    RootNode.prototype.constructor = RootNode;\n\n    RootNode.prototype.attachTo = function attachTo (domElement) {\n        this.element = domElement;\n        this.defs.attachTo(domElement.firstElementChild);\n    };\n\n    RootNode.prototype.clear = function clear () {\n        BaseNode.prototype.clear.call(this);\n    };\n\n    RootNode.prototype.template = function template () {\n        return this.defs.render() + this.renderChildren();\n    };\n\n    RootNode.prototype.definitionChange = function definitionChange (e) {\n        this.defs.definitionChange(e);\n    };\n\n    return RootNode;\n}(Node));\n\nexport default RootNode;","import BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n    var ctm;\n\n    try {\n        ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n    } catch (e) { } // eslint-disable-line no-empty\n\n    if (ctm) {\n        var left = - ctm.e % 1;\n        var top = - ctm.f % 1;\n        var style = element.style;\n\n        if (left !== 0 || top !== 0) {\n            style.left = left + \"px\";\n            style.top = top + \"px\";\n        }\n    }\n}\n\nvar Surface = (function (BaseSurface) {\n    function Surface(element, options) {\n        BaseSurface.call(this, element, options);\n\n        this._root = new RootNode(Object.assign({\n            rtl: elementStyles(element, 'direction').direction === RTL\n        }, this.options));\n\n        renderSVG(this.element, this._template());\n\n        this._rootElement = this.element.firstElementChild;\n\n        alignToScreen(this._rootElement);\n\n        this._root.attachTo(this._rootElement);\n\n        bindEvents(this.element, {\n            click: this._click,\n            mouseover: this._mouseenter,\n            mouseout: this._mouseleave,\n            mousemove: this._mousemove\n        });\n\n        this.resize();\n    }\n\n    if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n    Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n    Surface.prototype.constructor = Surface;\n\n    Surface.prototype.destroy = function destroy () {\n        if (this._root) {\n            this._root.destroy();\n            this._root = null;\n            this._rootElement = null;\n            unbindEvents(this.element, {\n                click: this._click,\n                mouseover: this._mouseenter,\n                mouseout: this._mouseleave,\n                mousemove: this._mousemove\n            });\n        }\n\n        BaseSurface.prototype.destroy.call(this);\n    };\n\n    Surface.prototype.translate = function translate (offset) {\n        var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n        this._offset = offset;\n        this._rootElement.setAttribute(\"viewBox\", viewBox);\n    };\n\n    Surface.prototype.draw = function draw (element) {\n        BaseSurface.prototype.draw.call(this, element);\n        this._root.load([ element ]);\n    };\n\n    Surface.prototype.clear = function clear () {\n        BaseSurface.prototype.clear.call(this);\n        this._root.clear();\n    };\n\n    Surface.prototype.svg = function svg () {\n        return \"<?xml version='1.0' ?>\" + this._template();\n    };\n\n    Surface.prototype.exportVisual = function exportVisual () {\n        var ref = this;\n        var visual = ref._visual;\n        var offset = ref._offset;\n\n        if (offset) {\n            var wrap = new Group();\n            wrap.children.push(visual);\n\n            wrap.transform(\n                transform().translate(-offset.x, -offset.y)\n            );\n\n            visual = wrap;\n        }\n\n        return visual;\n    };\n\n    Surface.prototype._resize = function _resize () {\n        if (this._offset) {\n            this.translate(this._offset);\n        }\n    };\n\n    Surface.prototype._template = function _template () {\n        return (\"<svg style='width: 100%; height: 100%; overflow: hidden;' xmlns='\" + SVG_NS + \"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>\" + (this._root.render()) + \"</svg>\");\n    };\n\n    return Surface;\n}(BaseSurface));\n\nSurface.prototype.type = \"svg\";\n\nif (typeof document !== \"undefined\" && document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\")) {\n    BaseSurface.support.svg = true;\n    SurfaceFactory.current.register(\"svg\", Surface, 10);\n}\n\nexport default Surface;","import Node from './node';\nimport NODE_MAP from './node-map';\n\nvar GroupNode = (function (Node) {\n    function GroupNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) GroupNode.__proto__ = Node;\n    GroupNode.prototype = Object.create( Node && Node.prototype );\n    GroupNode.prototype.constructor = GroupNode;\n\n    GroupNode.prototype.template = function template () {\n        return (\"<g\" + (this.renderId() + this.renderTransform() + this.renderStyle() + this.renderOpacity() + this.renderDefinitions()) + \">\" + (this.renderChildren()) + \"</g>\");\n    };\n\n    GroupNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"transform\") {\n            this.transformChange(e.value);\n        }\n\n        Node.prototype.optionsChange.call(this, e);\n    };\n\n    return GroupNode;\n}(Node));\n\nNODE_MAP.Group = GroupNode;\n\nexport default GroupNode;","var DASH_ARRAYS = {\n    dot: [ 1.5, 3.5 ],\n    dash: [ 4, 3.5 ],\n    longdash: [ 8, 3.5 ],\n    dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n    longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n    longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\n\nvar ATTRIBUTE_MAP = {\n    \"fill.opacity\": \"fill-opacity\",\n    \"stroke.color\": \"stroke\",\n    \"stroke.width\": \"stroke-width\",\n    \"stroke.opacity\": \"stroke-opacity\"\n};\nvar SPACE = \" \";\n\nvar PathNode = (function (Node) {\n    function PathNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) PathNode.__proto__ = Node;\n    PathNode.prototype = Object.create( Node && Node.prototype );\n    PathNode.prototype.constructor = PathNode;\n\n    PathNode.prototype.geometryChange = function geometryChange () {\n        this.attr(\"d\", this.renderData());\n        this.invalidate();\n    };\n\n    PathNode.prototype.optionsChange = function optionsChange (e) {\n        switch (e.field) {\n            case \"fill\":\n                if (e.value) {\n                    this.allAttr(this.mapFill(e.value));\n                } else {\n                    this.removeAttr(\"fill\");\n                }\n                break;\n\n            case \"fill.color\":\n                this.allAttr(this.mapFill({ color: e.value }));\n                break;\n\n            case \"stroke\":\n                if (e.value) {\n                    this.allAttr(this.mapStroke(e.value));\n                } else {\n                    this.removeAttr(\"stroke\");\n                }\n                break;\n\n            case \"transform\":\n                this.transformChange(e.value);\n                break;\n\n            default:\n                var name = ATTRIBUTE_MAP[e.field];\n                if (name) {\n                    this.attr(name, e.value);\n                }\n                break;\n        }\n\n        Node.prototype.optionsChange.call(this, e);\n    };\n\n    PathNode.prototype.content = function content () {\n        if (this.element) {\n            this.element.textContent = this.srcElement.content();\n        }\n    };\n\n    PathNode.prototype.renderData = function renderData () {\n        return this.printPath(this.srcElement);\n    };\n\n    PathNode.prototype.printPath = function printPath (path) {\n        var this$1 = this;\n\n        var segments = path.segments;\n        var length = segments.length;\n        if (length > 0) {\n            var parts = [];\n            var output, currentType;\n\n            for (var i = 1; i < length; i++) {\n                var segmentType = this$1.segmentType(segments[i - 1], segments[i]);\n                if (segmentType !== currentType) {\n                    currentType = segmentType;\n                    parts.push(segmentType);\n                }\n\n                if (segmentType === \"L\") {\n                    parts.push(this$1.printPoints(segments[i].anchor()));\n                } else {\n                    parts.push(this$1.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n                }\n            }\n\n            output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n            if (path.options.closed) {\n                output += \"Z\";\n            }\n\n            return output;\n        }\n    };\n\n    PathNode.prototype.printPoints = function printPoints () {\n        var points = arguments;\n        var length = points.length;\n        var result = [];\n\n        for (var i = 0; i < length; i++) {\n            result.push(points[i].toString(3));\n        }\n\n        return result.join(\" \");\n    };\n\n    PathNode.prototype.segmentType = function segmentType (segmentStart, segmentEnd) {\n        return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\n    };\n\n    PathNode.prototype.mapStroke = function mapStroke (stroke) {\n        var attrs = [];\n\n        if (stroke && !isTransparent(stroke.color)) {\n            attrs.push([ \"stroke\", stroke.color ]);\n            attrs.push([ \"stroke-width\", stroke.width ]);\n            attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n            attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n            if (defined(stroke.opacity)) {\n                attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n            }\n\n            if (defined(stroke.dashType)) {\n                attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n            }\n        } else {\n            attrs.push([ \"stroke\", NONE ]);\n        }\n\n        return attrs;\n    };\n\n    PathNode.prototype.renderStroke = function renderStroke () {\n        return renderAllAttr(\n            this.mapStroke(this.srcElement.options.stroke)\n        );\n    };\n\n    PathNode.prototype.renderDashType = function renderDashType (stroke) {\n        var dashType = stroke.dashType;\n        var width = stroke.width; if ( width === void 0 ) width = 1;\n\n        if (dashType && dashType !== SOLID) {\n            var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n            var result = [];\n\n            for (var i = 0; i < dashArray.length; i++) {\n                result.push(dashArray[i] * width);\n            }\n\n            return result.join(\" \");\n        }\n    };\n\n    PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n        var dashType = stroke.dashType;\n        var lineCap = stroke.lineCap;\n\n        return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n    };\n\n    PathNode.prototype.mapFill = function mapFill (fill) {\n        var attrs = [];\n        if (!(fill && fill.nodeType === \"Gradient\")) {\n            if (fill && !isTransparent(fill.color)) {\n                attrs.push([ \"fill\", fill.color ]);\n\n                if (defined(fill.opacity)) {\n                    attrs.push([ \"fill-opacity\", fill.opacity ]);\n                }\n            } else {\n                attrs.push([ \"fill\", NONE ]);\n            }\n        }\n\n        return attrs;\n    };\n\n    PathNode.prototype.renderFill = function renderFill () {\n        return renderAllAttr(\n            this.mapFill(this.srcElement.options.fill)\n        );\n    };\n\n    PathNode.prototype.template = function template () {\n        return \"<path \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" \" + (renderAttr('d', this.renderData())) +\n                    \"\" + (this.renderStroke()) + (this.renderFill()) + (this.renderDefinitions()) + (this.renderTransform()) + \"></path>\";\n    };\n\n    return PathNode;\n}(Node));\n\nNODE_MAP.Path = PathNode;\n\nexport default PathNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar ArcNode = (function (PathNode) {\n    function ArcNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ArcNode.__proto__ = PathNode;\n    ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ArcNode.prototype.constructor = ArcNode;\n\n    ArcNode.prototype.renderData = function renderData () {\n        return this.printPath(this.srcElement.toPath());\n    };\n\n    return ArcNode;\n}(PathNode));\n\nNODE_MAP.Arc = ArcNode;\n\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar CircleNode = (function (PathNode) {\n    function CircleNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) CircleNode.__proto__ = PathNode;\n    CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n    CircleNode.prototype.constructor = CircleNode;\n\n    CircleNode.prototype.geometryChange = function geometryChange () {\n        var center = this.center();\n        this.attr(\"cx\", center.x);\n        this.attr(\"cy\", center.y);\n        this.attr(\"r\", this.radius());\n        this.invalidate();\n    };\n\n    CircleNode.prototype.center = function center () {\n        return this.srcElement.geometry().center;\n    };\n\n    CircleNode.prototype.radius = function radius () {\n        return this.srcElement.geometry().radius;\n    };\n\n    CircleNode.prototype.template = function template () {\n        return \"<circle \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n                    \"cx='\" + (this.center().x) + \"' cy='\" + (this.center().y) + \"' r='\" + (this.radius()) + \"'\" +\n                    (this.renderStroke()) + \" \" + (this.renderFill()) + \" \" + (this.renderDefinitions()) +\n                    (this.renderTransform()) + \" ></circle>\";\n    };\n\n    return CircleNode;\n}(PathNode));\n\nNODE_MAP.Circle = CircleNode;\n\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar RectNode = (function (PathNode) {\n    function RectNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) RectNode.__proto__ = PathNode;\n    RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n    RectNode.prototype.constructor = RectNode;\n\n    RectNode.prototype.geometryChange = function geometryChange () {\n        var geometry = this.srcElement.geometry();\n        this.attr(\"x\", geometry.origin.x);\n        this.attr(\"y\", geometry.origin.y);\n        this.attr(\"width\", geometry.size.width);\n        this.attr(\"height\", geometry.size.height);\n        this.invalidate();\n    };\n\n    RectNode.prototype.size = function size () {\n        return this.srcElement.geometry().size;\n    };\n\n    RectNode.prototype.origin = function origin () {\n        return this.srcElement.geometry().origin;\n    };\n\n    RectNode.prototype.template = function template () {\n        return \"<rect \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" x='\" + (this.origin().x) + \"' y='\" + (this.origin().y) + \"' \" +\n                    \"width='\" + (this.size().width) + \"' height='\" + (this.size().height) + \"' \" + (this.renderStroke()) + \" \" +\n                    (this.renderFill()) + \" \" + (this.renderDefinitions()) + \" \" + (this.renderTransform()) + \" />\";\n    };\n\n    return RectNode;\n}(PathNode));\n\nNODE_MAP.Rect = RectNode;\n\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n    function ImageNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ImageNode.__proto__ = PathNode;\n    ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ImageNode.prototype.constructor = ImageNode;\n\n    ImageNode.prototype.geometryChange = function geometryChange () {\n        this.allAttr(this.mapPosition());\n        this.invalidate();\n    };\n\n    ImageNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"src\") {\n            this.allAttr(this.mapSource());\n        }\n\n        PathNode.prototype.optionsChange.call(this, e);\n    };\n\n    ImageNode.prototype.mapPosition = function mapPosition () {\n        var rect = this.srcElement.rect();\n        var tl = rect.topLeft();\n\n        return [\n            [ \"x\", tl.x ],\n            [ \"y\", tl.y ],\n            [ \"width\", rect.width() + \"px\" ],\n            [ \"height\", rect.height() + \"px\" ]\n        ];\n    };\n\n    ImageNode.prototype.renderPosition = function renderPosition () {\n        return renderAllAttr(this.mapPosition());\n    };\n\n    ImageNode.prototype.mapSource = function mapSource (encode) {\n        var src = this.srcElement.src();\n\n        if (encode) {\n            src = htmlEncode(src);\n        }\n\n        return [ [ \"xlink:href\", src ] ];\n    };\n\n    ImageNode.prototype.renderSource = function renderSource () {\n        return renderAllAttr(this.mapSource(true));\n    };\n\n    ImageNode.prototype.template = function template () {\n        return \"<image preserveAspectRatio='none' \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderTransform()) + \" \" + (this.renderOpacity()) +\n               (this.renderPosition()) + \" \" + (this.renderSource()) + \" \" + (this.renderDefinitions()) + \">\" +\n               \"</image>\";\n    };\n\n    return ImageNode;\n}(PathNode));\n\nNODE_MAP.Image = ImageNode;\n\nexport default ImageNode;","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n    if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n        return text;\n    }\n\n    var element = decodeEntities._element;\n    ENTITY_REGEX.lastIndex = 0;\n\n    return text.replace(ENTITY_REGEX, function (match) {\n        element.innerHTML = match;\n\n        return element.textContent || element.innerText;\n    });\n}\n\nif (typeof document !== \"undefined\") {\n    decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n    function TextNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) TextNode.__proto__ = PathNode;\n    TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n    TextNode.prototype.constructor = TextNode;\n\n    TextNode.prototype.geometryChange = function geometryChange () {\n        var pos = this.pos();\n        this.attr(\"x\", pos.x);\n        this.attr(\"y\", pos.y);\n        this.invalidate();\n    };\n\n    TextNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"font\") {\n            this.attr(\"style\", renderStyle(this.mapStyle()));\n            this.geometryChange();\n        } else if (e.field === \"content\") {\n            PathNode.prototype.content.call(this, this.srcElement.content());\n        }\n\n        PathNode.prototype.optionsChange.call(this, e);\n    };\n\n    TextNode.prototype.mapStyle = function mapStyle (encode) {\n        var style = PathNode.prototype.mapStyle.call(this, encode);\n        var font = this.srcElement.options.font;\n\n        if (encode) {\n            font = htmlEncode(font);\n        }\n\n        style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n        return style;\n    };\n\n    TextNode.prototype.pos = function pos () {\n        var pos = this.srcElement.position();\n        var size = this.srcElement.measure();\n        return pos.clone().setY(pos.y + size.baseline);\n    };\n\n    TextNode.prototype.renderContent = function renderContent () {\n        var content = this.srcElement.content();\n        content = decodeEntities(content);\n        content = htmlEncode(content);\n\n        return normalizeText(content);\n    };\n\n    TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n        var anchor;\n\n        if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n            anchor = 'end';\n        }\n\n        return renderAttr(\"text-anchor\", anchor);\n    };\n\n    TextNode.prototype.template = function template () {\n        return \"<text \" + (this.renderId()) + \" \" + (this.renderTextAnchor()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n                    \"x='\" + (this.pos().x) + \"' y='\" + (this.pos().y) + \"' \" + (this.renderStroke()) + \" \" + (this.renderTransform()) + \" \" + (this.renderDefinitions()) +\n                    (this.renderFill()) + \">\" + (this.renderContent()) + \"</text>\";\n    };\n\n    return TextNode;\n}(PathNode));\n\nNODE_MAP.Text = TextNode;\n\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar MultiPathNode = (function (PathNode) {\n    function MultiPathNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n    MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n    MultiPathNode.prototype.constructor = MultiPathNode;\n\n    MultiPathNode.prototype.renderData = function renderData () {\n        var this$1 = this;\n\n        var paths = this.srcElement.paths;\n\n        if (paths.length > 0) {\n            var result = [];\n\n            for (var i = 0; i < paths.length; i++) {\n                result.push(this$1.printPath(paths[i]));\n            }\n\n            return result.join(\" \");\n        }\n    };\n\n    return MultiPathNode;\n}(PathNode));\n\nNODE_MAP.MultiPath = MultiPathNode;\n\nexport default MultiPathNode;","import RootNode from './root-node';\nimport { Group } from '../shapes';\nimport { transform } from '../geometry';\nimport { SVG_NS } from './constants';\n\nexport default function exportGroup(group) {\n    var root = new RootNode({\n        skipBaseHref: true\n    });\n    var bbox = group.clippedBBox();\n    var rootGroup = group;\n\n    if (bbox) {\n        var origin = bbox.getOrigin();\n        var exportRoot = new Group();\n        exportRoot.transform(transform().translate(-origin.x, -origin.y));\n        exportRoot.children.push(group);\n        rootGroup = exportRoot;\n    }\n\n    root.load([ rootGroup ]);\n\n    var svg = \"<?xml version='1.0' ?><svg xmlns='\" + SVG_NS + \"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>\" + (root.render()) + \"</svg>\";\n\n    root.destroy();\n\n    return svg;\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","\nexport default function renderPath(ctx, path) {\n    var segments = path.segments;\n\n    if (segments.length === 0) {\n        return;\n    }\n\n    var segment = segments[0];\n    var anchor = segment.anchor();\n    ctx.moveTo(anchor.x, anchor.y);\n\n    for (var i = 1; i < segments.length; i++) {\n        segment = segments[i];\n        anchor = segment.anchor();\n\n        var prevSeg = segments[i - 1];\n        var prevOut = prevSeg.controlOut();\n        var controlIn = segment.controlIn();\n\n        if (prevOut && controlIn) {\n            ctx.bezierCurveTo(prevOut.x, prevOut.y,\n                              controlIn.x, controlIn.y,\n                              anchor.x, anchor.y);\n        } else {\n            ctx.lineTo(anchor.x, anchor.y);\n        }\n    }\n\n    if (path.options.closed) {\n        ctx.closePath();\n    }\n}","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n    function Node(srcElement) {\n        BaseNode.call(this, srcElement);\n        if (srcElement) {\n            this.initClip();\n        }\n    }\n\n    if ( BaseNode ) Node.__proto__ = BaseNode;\n    Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n    Node.prototype.constructor = Node;\n\n    Node.prototype.initClip = function initClip () {\n        var clip = this.srcElement.clip();\n        if (clip) {\n            this.clip = clip;\n            clip.addObserver(this);\n        }\n    };\n\n    Node.prototype.clear = function clear () {\n        if (this.srcElement) {\n            this.srcElement.removeObserver(this);\n        }\n\n        this.clearClip();\n\n        BaseNode.prototype.clear.call(this);\n    };\n\n    Node.prototype.clearClip = function clearClip () {\n        if (this.clip) {\n            this.clip.removeObserver(this);\n            delete this.clip;\n        }\n    };\n\n    Node.prototype.setClip = function setClip (ctx) {\n        if (this.clip) {\n            ctx.beginPath();\n            renderPath(ctx, this.clip);\n            ctx.clip();\n        }\n    };\n\n    Node.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"clip\") {\n            this.clearClip();\n            this.initClip();\n        }\n\n        BaseNode.prototype.optionsChange.call(this, e);\n    };\n\n    Node.prototype.setTransform = function setTransform (ctx) {\n        if (this.srcElement) {\n            var transform = this.srcElement.transform();\n            if (transform) {\n                ctx.transform.apply(ctx, transform.matrix().toArray(6));\n            }\n        }\n    };\n\n    Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n        var this$1 = this;\n\n        for (var i = 0; i < elements.length; i++) {\n            var srcElement = elements[i];\n            var children = srcElement.children;\n\n            var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n            if (children && children.length > 0) {\n                childNode.load(children, pos, cors);\n            }\n\n            if (defined(pos)) {\n                this$1.insertAt(childNode, pos);\n            } else {\n                this$1.append(childNode);\n            }\n        }\n    };\n\n    Node.prototype.load = function load (elements, pos, cors) {\n        this.loadElements(elements, pos, cors);\n\n        this.invalidate();\n    };\n\n    Node.prototype.setOpacity = function setOpacity (ctx) {\n        if (this.srcElement) {\n            var opacity = this.srcElement.opacity();\n            if (defined(opacity)) {\n                this.globalAlpha(ctx, opacity);\n            }\n        }\n    };\n\n    Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n        var opactity = value;\n        if (opactity && ctx.globalAlpha) {\n            opactity *= ctx.globalAlpha;\n        }\n        ctx.globalAlpha = opactity;\n    };\n\n    Node.prototype.visible = function visible () {\n        var src = this.srcElement;\n        return !src || (src && src.options.visible !== false);\n    };\n\n    return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport Traversable from '../mixins/traversable';\nimport NODE_MAP from './node-map';\n\nvar GroupNode = (function (Node) {\n    function GroupNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) GroupNode.__proto__ = Node;\n    GroupNode.prototype = Object.create( Node && Node.prototype );\n    GroupNode.prototype.constructor = GroupNode;\n\n    GroupNode.prototype.renderTo = function renderTo (ctx) {\n        if (!this.visible()) {\n            return;\n        }\n\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        var childNodes = this.childNodes;\n        for (var i = 0; i < childNodes.length; i++) {\n            var child = childNodes[i];\n            if (child.visible()) {\n                child.renderTo(ctx);\n            }\n        }\n\n        ctx.restore();\n    };\n\n    return GroupNode;\n}(Node));\n\nTraversable.extend(GroupNode.prototype, \"childNodes\");\n\nNODE_MAP.Group = GroupNode;\n\nexport default GroupNode;","import GroupNode from './group-node';\nimport Traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (GroupNode) {\n    function RootNode(canvas, size) {\n        GroupNode.call(this);\n\n        this.canvas = canvas;\n        this.size = size;\n        this.ctx = canvas.getContext(\"2d\");\n\n        var invalidateHandler = this._invalidate.bind(this);\n        this.invalidate = throttle(function () {\n            animationFrame(invalidateHandler);\n        }, FRAME_DELAY);\n    }\n\n    if ( GroupNode ) RootNode.__proto__ = GroupNode;\n    RootNode.prototype = Object.create( GroupNode && GroupNode.prototype );\n    RootNode.prototype.constructor = RootNode;\n\n    RootNode.prototype.destroy = function destroy () {\n        GroupNode.prototype.destroy.call(this);\n        this.canvas = null;\n        this.ctx = null;\n    };\n\n    RootNode.prototype.load = function load (elements, pos, cors) {\n        this.loadElements(elements, pos, cors);\n        this._invalidate();\n    };\n\n    RootNode.prototype._rescale = function _rescale () {\n        var ref = this;\n        var canvas = ref.canvas;\n        var size = ref.size;\n        var scale = 1;\n\n        if (typeof window.devicePixelRatio === 'number') {\n            scale = window.devicePixelRatio;\n        }\n\n        canvas.width = size.width * scale;\n        canvas.height = size.height * scale;\n        this.ctx.scale(scale, scale);\n    };\n\n    RootNode.prototype._invalidate = function _invalidate () {\n        if (!this.ctx) {\n            return;\n        }\n\n        this._rescale();\n\n        this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n        this.renderTo(this.ctx);\n    };\n\n    return RootNode;\n}(GroupNode));\n\nTraversable.extend(RootNode.prototype, \"childNodes\");\n\nexport default RootNode;\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n    function QuadRoot() {\n        Class.call(this);\n\n        this.shapes = [];\n    }\n\n    if ( Class ) QuadRoot.__proto__ = Class;\n    QuadRoot.prototype = Object.create( Class && Class.prototype );\n    QuadRoot.prototype.constructor = QuadRoot;\n\n    QuadRoot.prototype._add = function _add (shape, bbox) {\n        this.shapes.push({\n            bbox: bbox,\n            shape: shape\n        });\n        shape._quadNode = this;\n    };\n\n    QuadRoot.prototype.pointShapes = function pointShapes (point) {\n        var shapes = this.shapes;\n        var length = shapes.length;\n        var result = [];\n        for (var idx = 0; idx < length; idx++) {\n            if (shapes[idx].bbox.containsPoint(point)) {\n                result.push(shapes[idx].shape);\n            }\n        }\n        return result;\n    };\n\n    QuadRoot.prototype.insert = function insert (shape, bbox) {\n        this._add(shape, bbox);\n    };\n\n    QuadRoot.prototype.remove = function remove (shape) {\n        var shapes = this.shapes;\n        var length = shapes.length;\n\n        for (var idx = 0; idx < length; idx++) {\n            if (shapes[idx].shape === shape) {\n                shapes.splice(idx, 1);\n                break;\n            }\n        }\n    };\n\n    return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n    function QuadNode(rect) {\n        QuadRoot.call(this);\n        this.children = [];\n        this.rect = rect;\n    }\n\n    if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n    QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n    QuadNode.prototype.constructor = QuadNode;\n\n    QuadNode.prototype.inBounds = function inBounds (rect) {\n        var nodeRect = this.rect;\n        var nodeBottomRight = nodeRect.bottomRight();\n        var bottomRight = rect.bottomRight();\n        var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n            bottomRight.y <= nodeBottomRight.y;\n        return inBounds;\n    };\n\n    QuadNode.prototype.pointShapes = function pointShapes (point) {\n        var children = this.children;\n        var length = children.length;\n        var result = QuadRoot.prototype.pointShapes.call(this, point);\n        for (var idx = 0; idx < length; idx++) {\n            append(result, children[idx].pointShapes(point));\n        }\n        return result;\n    };\n\n    QuadNode.prototype.insert = function insert (shape, bbox) {\n        var children = this.children;\n        var inserted = false;\n\n        if (this.inBounds(bbox)) {\n            if (this.shapes.length < 4) {\n                this._add(shape, bbox);\n            } else {\n                if (!children.length) {\n                    this._initChildren();\n                }\n\n                for (var idx = 0; idx < children.length; idx++) {\n                    if (children[idx].insert(shape, bbox)) {\n                        inserted = true;\n                        break;\n                    }\n                }\n\n                if (!inserted) {\n                    this._add(shape, bbox);\n                }\n            }\n            inserted = true;\n        }\n\n        return inserted;\n    };\n\n    QuadNode.prototype._initChildren = function _initChildren () {\n        var ref = this;\n        var rect = ref.rect;\n        var children = ref.children;\n        var center = rect.center();\n        var halfWidth = rect.width() / 2;\n        var halfHeight = rect.height() / 2;\n\n        children.push(\n            new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n            new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n        );\n    };\n\n    return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n    function ShapesQuadTree() {\n        Class.call(this);\n\n        this.initRoots();\n    }\n\n    if ( Class ) ShapesQuadTree.__proto__ = Class;\n    ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n    ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n    ShapesQuadTree.prototype.initRoots = function initRoots () {\n        this.rootMap = {};\n        this.root = new QuadRoot();\n        this.rootElements = [];\n    };\n\n    ShapesQuadTree.prototype.clear = function clear () {\n        var this$1 = this;\n\n        var rootElements = this.rootElements;\n        for (var idx = 0; idx < rootElements.length; idx++) {\n            this$1.remove(rootElements[idx]);\n        }\n        this.initRoots();\n    };\n\n    ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n        var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n        var result = this.root.pointShapes(point);\n\n        if (sectorRoot) {\n            result = result.concat(sectorRoot.pointShapes(point));\n        }\n\n        this.assignZindex(result);\n\n        result.sort(zIndexComparer);\n        for (var idx = 0; idx < result.length; idx++) {\n            if (result[idx].containsPoint(point)) {\n                return result[idx];\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n        var this$1 = this;\n\n        for (var idx = 0; idx < elements.length; idx++) {\n            var element = elements[idx];\n            var zIndex = 0;\n            var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n            var parents = [];\n\n            while (element) {\n                parents.push(element);\n                element = element.parent;\n            }\n\n            while (parents.length) {\n                element = parents.pop();\n                zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n                levelWeight /= LEVEL_STEP;\n            }\n\n            elements[idx]._zIndex = zIndex;\n        }\n    };\n\n    ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"transform\" || e.field === \"stroke.width\") {\n            this.bboxChange(e.element);\n        }\n    };\n\n    ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n        this.bboxChange(e.element);\n    };\n\n    ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n        var this$1 = this;\n\n        if (element.nodeType === \"Group\") {\n            for (var idx = 0; idx < element.children.length; idx++) {\n                this$1.bboxChange(element.children[idx]);\n            }\n        } else {\n            if (element._quadNode) {\n                element._quadNode.remove(element);\n            }\n            this._insertShape(element);\n        }\n    };\n\n    ShapesQuadTree.prototype.add = function add (elements) {\n        var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n        append(this.rootElements, elementsArray);\n        this._insert(elementsArray);\n    };\n\n    ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n        var this$1 = this;\n\n        if (e.action === \"remove\") {\n            for (var idx = 0; idx < e.items.length; idx++) {\n                this$1.remove(e.items[idx]);\n            }\n        } else {\n            this._insert(Array.prototype.slice.call(e.items, 0));\n        }\n    };\n\n    ShapesQuadTree.prototype._insert = function _insert (elements) {\n        var this$1 = this;\n\n        var element;\n\n        while (elements.length > 0) {\n            element = elements.pop();\n            element.addObserver(this$1);\n            if (element.nodeType === \"Group\") {\n                append(elements, element.children);\n            } else {\n                this$1._insertShape(element);\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n        var bbox = shape.bbox();\n        if (bbox) {\n            var sectors = this.getSectors(bbox);\n            var x = sectors[0][0];\n            var y = sectors[1][0];\n\n            if (this.inRoot(sectors)) {\n                this.root.insert(shape, bbox);\n            } else {\n                var rootMap = this.rootMap;\n                if (!rootMap[x]) {\n                    rootMap[x] = {};\n                }\n\n                if (!rootMap[x][y]) {\n                    rootMap[x][y] = new QuadNode(\n                        new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n                    );\n                }\n\n                rootMap[x][y].insert(shape, bbox);\n            }\n        }\n    };\n\n    ShapesQuadTree.prototype.remove = function remove (element) {\n        var this$1 = this;\n\n        element.removeObserver(this);\n\n        if (element.nodeType === \"Group\") {\n            var children = element.children;\n            for (var idx = 0; idx < children.length; idx++) {\n                this$1.remove(children[idx]);\n            }\n        } else if (element._quadNode) {\n            element._quadNode.remove(element);\n            delete element._quadNode;\n        }\n    };\n\n    ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n        return sectors[0].length > 1 || sectors[1].length > 1;\n    };\n\n    ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n        var bottomRight = rect.bottomRight();\n        var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n        var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n        var sectors = [ [], [] ];\n        for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n            sectors[0].push(x);\n        }\n        for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n            sectors[1].push(y);\n        }\n        return sectors;\n    };\n\n    return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n    if (x1._zIndex < x2._zIndex) {\n        return 1;\n    }\n    if (x1._zIndex > x2._zIndex) {\n        return -1;\n    }\n\n    return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n    surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n    surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n    this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n    this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n    this._resetCursor();\n    delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n    var cursor = this._shapeCursor(e);\n\n    if (!cursor) {\n        this._resetCursor();\n    } else {\n        if (!this._current) {\n            this._defaultCursor = this._getCursor();\n        }\n\n        this._setCursor(cursor);\n    }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n    this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n    var shape = e.element;\n\n    while (shape && !defined(shape.options.cursor)) {\n        shape = shape.parent;\n    }\n\n    if (shape) {\n        return shape.options.cursor;\n    }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n    if (this.element) {\n        return this.element.style.cursor;\n    }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n    if (this.element) {\n        this.element.style.cursor = cursor;\n        this._current = cursor;\n    }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n    if (this._current) {\n        this._setCursor(this._defaultCursor || \"\");\n        delete this._current;\n    }\n};\n\nexport default SurfaceCursor;\n\n","import BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nvar Surface = (function (BaseSurface) {\n    function Surface(element, options) {\n        BaseSurface.call(this, element, options);\n\n        this.element.innerHTML = this._template(this);\n\n        var canvas = this.element.firstElementChild;\n        var size = elementSize(element);\n\n        canvas.width = size.width;\n        canvas.height = size.height;\n\n        this._rootElement = canvas;\n\n        this._root = new RootNode(canvas, size);\n\n        this._mouseTrackHandler = this._trackMouse.bind(this);\n\n        bindEvents(this.element, {\n            click: this._mouseTrackHandler,\n            mousemove: this._mouseTrackHandler\n        });\n    }\n\n    if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n    Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n    Surface.prototype.constructor = Surface;\n\n    Surface.prototype.destroy = function destroy () {\n        BaseSurface.prototype.destroy.call(this);\n\n        if (this._root) {\n            this._root.destroy();\n            this._root = null;\n        }\n\n        if (this._searchTree) {\n            this._searchTree.clear();\n            delete this._searchTree;\n        }\n\n        if (this._cursor) {\n            this._cursor.destroy();\n            delete this._cursor;\n        }\n\n        unbindEvents(this.element, {\n            click: this._mouseTrackHandler,\n            mousemove: this._mouseTrackHandler\n        });\n    };\n\n    Surface.prototype.draw = function draw (element) {\n        BaseSurface.prototype.draw.call(this, element);\n        this._root.load([ element ], undefined, this.options.cors);\n\n        if (this._searchTree) {\n            this._searchTree.add([ element ]);\n        }\n    };\n\n    Surface.prototype.clear = function clear () {\n        BaseSurface.prototype.clear.call(this);\n        this._root.clear();\n\n        if (this._searchTree) {\n            this._searchTree.clear();\n        }\n\n        if (this._cursor) {\n            this._cursor.clear();\n        }\n    };\n\n    Surface.prototype.eventTarget = function eventTarget (e) {\n        if (this._searchTree) {\n            var point = this._surfacePoint(e);\n            var shape = this._searchTree.pointShape(point);\n            return shape;\n        }\n    };\n\n    Surface.prototype.image = function image () {\n        var ref = this;\n        var root = ref._root;\n        var rootElement = ref._rootElement;\n        var loadingStates = [];\n\n        root.traverse(function (childNode) {\n            if (childNode.loading) {\n                loadingStates.push(childNode.loading);\n            }\n        });\n\n        var promise = createPromise();\n        var resolveDataURL = function () {\n            root._invalidate();\n\n            try {\n                var data = rootElement.toDataURL();\n                promise.resolve(data);\n            } catch (e) {\n                promise.reject(e);\n            }\n        };\n\n        promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n        return promise;\n    };\n\n    Surface.prototype.suspendTracking = function suspendTracking () {\n        BaseSurface.prototype.suspendTracking.call(this);\n        if (this._searchTree) {\n            this._searchTree.clear();\n            delete this._searchTree;\n        }\n    };\n\n    Surface.prototype.resumeTracking = function resumeTracking () {\n        BaseSurface.prototype.resumeTracking.call(this);\n        if (!this._searchTree) {\n            this._searchTree = new ShapesQuadTree();\n\n            var childNodes = this._root.childNodes;\n            var rootElements = [];\n            for (var idx = 0; idx < childNodes.length; idx++) {\n                rootElements.push(childNodes[idx].srcElement);\n            }\n            this._searchTree.add(rootElements);\n        }\n    };\n\n    Surface.prototype._resize = function _resize () {\n        this._rootElement.width = this._size.width;\n        this._rootElement.height = this._size.height;\n\n        this._root.size = this._size;\n        this._root.invalidate();\n    };\n\n    Surface.prototype._template = function _template () {\n        return \"<canvas style='width: 100%; height: 100%;'></canvas>\";\n    };\n\n    Surface.prototype._enableTracking = function _enableTracking () {\n        this._searchTree = new ShapesQuadTree();\n        this._cursor = new SurfaceCursor(this);\n\n        BaseSurface.prototype._enableTracking.call(this);\n    };\n\n    Surface.prototype._trackMouse = function _trackMouse (e) {\n        if (this._suspendedTracking) {\n            return;\n        }\n\n        var shape = this.eventTarget(e);\n\n        if (e.type !== \"click\") {\n            var currentShape = this._currentShape;\n            if (currentShape && currentShape !== shape) {\n                this.trigger(\"mouseleave\", {\n                    element: currentShape,\n                    originalEvent: e,\n                    type: \"mouseleave\"\n                });\n            }\n\n            if (shape && currentShape !== shape) {\n                this.trigger(\"mouseenter\", {\n                    element: shape,\n                    originalEvent: e,\n                    type: \"mouseenter\"\n                });\n            }\n\n            this.trigger(\"mousemove\", {\n                element: shape,\n                originalEvent: e,\n                type: \"mousemove\"\n            });\n\n            this._currentShape = shape;\n        } else if (shape) {\n            this.trigger(\"click\", {\n                element: shape,\n                originalEvent: e,\n                type: \"click\"\n            });\n        }\n    };\n\n    return Surface;\n}(BaseSurface));\n\nSurface.prototype.type = \"canvas\";\n\nif (typeof document !== \"undefined\" && document.createElement(\"canvas\").getContext) {\n    BaseSurface.support.canvas = true;\n    SurfaceFactory.current.register(\"canvas\", Surface, 20);\n}\n\nexport default Surface;\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\nimport NODE_MAP from './node-map';\n\nfunction addGradientStops(gradient, stops) {\n    for (var idx = 0; idx < stops.length; idx++) {\n        var stop = stops[idx];\n        var color = parseColor(stop.color());\n\n        color.a *= stop.opacity();\n\n        gradient.addColorStop(stop.offset(), color.toCssRgba());\n    }\n}\n\nvar PathNode = (function (Node) {\n    function PathNode () {\n        Node.apply(this, arguments);\n    }\n\n    if ( Node ) PathNode.__proto__ = Node;\n    PathNode.prototype = Object.create( Node && Node.prototype );\n    PathNode.prototype.constructor = PathNode;\n\n    PathNode.prototype.renderTo = function renderTo (ctx) {\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        ctx.beginPath();\n\n        this.renderPoints(ctx, this.srcElement);\n\n        this.setLineDash(ctx);\n        this.setLineCap(ctx);\n        this.setLineJoin(ctx);\n\n        this.setFill(ctx);\n        this.setStroke(ctx);\n\n        ctx.restore();\n    };\n\n    PathNode.prototype.setFill = function setFill (ctx) {\n        var fill = this.srcElement.options.fill;\n        var hasFill = false;\n\n        if (fill) {\n            if (fill.nodeType === \"Gradient\") {\n                this.setGradientFill(ctx, fill);\n                hasFill = true;\n            } else if (!isTransparent(fill.color)) {\n                ctx.fillStyle = fill.color;\n\n                ctx.save();\n                this.globalAlpha(ctx, fill.opacity);\n                ctx.fill();\n                ctx.restore();\n\n                hasFill = true;\n            }\n        }\n\n        return hasFill;\n    };\n\n    PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n        var bbox = this.srcElement.rawBBox();\n        var gradient;\n\n        if (fill instanceof LinearGradient) {\n            var start = fill.start();\n            var end = fill.end();\n            gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n        } else if (fill instanceof RadialGradient) {\n            var center = fill.center();\n            gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n        }\n\n        addGradientStops(gradient, fill.stops);\n\n        ctx.save();\n\n        if (!fill.userSpace()) {\n            ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n        }\n        ctx.fillStyle = gradient;\n        ctx.fill();\n\n        ctx.restore();\n    };\n\n    PathNode.prototype.setStroke = function setStroke (ctx) {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n            ctx.strokeStyle = stroke.color;\n            ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n            ctx.save();\n            this.globalAlpha(ctx, stroke.opacity);\n            ctx.stroke();\n            ctx.restore();\n\n            return true;\n        }\n    };\n\n    PathNode.prototype.dashType = function dashType () {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && stroke.dashType) {\n            return stroke.dashType.toLowerCase();\n        }\n    };\n\n    PathNode.prototype.setLineDash = function setLineDash (ctx) {\n        var dashType = this.dashType();\n        if (dashType && dashType !== SOLID) {\n            var dashArray = DASH_ARRAYS[dashType];\n            if (ctx.setLineDash) {\n                ctx.setLineDash(dashArray);\n            } else {\n                ctx.mozDash = dashArray;\n                ctx.webkitLineDash = dashArray;\n            }\n        }\n    };\n\n    PathNode.prototype.setLineCap = function setLineCap (ctx) {\n        var dashType = this.dashType();\n        var stroke = this.srcElement.options.stroke;\n        if (dashType && dashType !== SOLID) {\n            ctx.lineCap = BUTT;\n        } else if (stroke && stroke.lineCap) {\n            ctx.lineCap = stroke.lineCap;\n        }\n    };\n\n    PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n        var stroke = this.srcElement.options.stroke;\n        if (stroke && stroke.lineJoin) {\n            ctx.lineJoin = stroke.lineJoin;\n        }\n    };\n\n    PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n        renderPath(ctx, path);\n    };\n\n    return PathNode;\n}(Node));\n\nNODE_MAP.Path = PathNode;\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n    function ArcNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) ArcNode.__proto__ = PathNode;\n    ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ArcNode.prototype.constructor = ArcNode;\n\n    ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n        var path = this.srcElement.toPath();\n        renderPath(ctx, path);\n    };\n\n    return ArcNode;\n}(PathNode));\n\nNODE_MAP.Arc = ArcNode;\n\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar CircleNode = (function (PathNode) {\n    function CircleNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) CircleNode.__proto__ = PathNode;\n    CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n    CircleNode.prototype.constructor = CircleNode;\n\n    CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n        var ref = this.srcElement.geometry();\n        var center = ref.center;\n        var radius = ref.radius;\n\n        ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n    };\n\n    return CircleNode;\n}(PathNode));\n\nNODE_MAP.Circle = CircleNode;\n\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar RectNode = (function (PathNode) {\n    function RectNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) RectNode.__proto__ = PathNode;\n    RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n    RectNode.prototype.constructor = RectNode;\n\n    RectNode.prototype.renderPoints = function renderPoints (ctx) {\n        var ref = this.srcElement.geometry();\n        var origin = ref.origin;\n        var size = ref.size;\n\n        ctx.rect(origin.x, origin.y, size.width, size.height);\n    };\n\n    return RectNode;\n}(PathNode));\n\nNODE_MAP.Rect = RectNode;\n\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n    function ImageNode(srcElement, cors) {\n        PathNode.call(this, srcElement);\n\n        this.onLoad = this.onLoad.bind(this);\n        this.onError = this.onError.bind(this);\n\n        this.loading = createPromise();\n\n        var img = this.img = new Image();\n\n        if (cors && !(/^data:/i.test(srcElement.src()))) {\n            img.crossOrigin = cors;\n        }\n\n        img.src = srcElement.src();\n\n        if (img.complete) {\n            this.onLoad();\n        } else {\n            img.onload = this.onLoad;\n            img.onerror = this.onError;\n        }\n    }\n\n    if ( PathNode ) ImageNode.__proto__ = PathNode;\n    ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n    ImageNode.prototype.constructor = ImageNode;\n\n    ImageNode.prototype.renderTo = function renderTo (ctx) {\n        if (this.loading.state() === \"resolved\") {\n            ctx.save();\n\n            this.setTransform(ctx);\n            this.setClip(ctx);\n\n            this.drawImage(ctx);\n\n            ctx.restore();\n        }\n    };\n\n    ImageNode.prototype.optionsChange = function optionsChange (e) {\n        if (e.field === \"src\") {\n            this.loading = createPromise();\n            this.img.src = this.srcElement.src();\n        } else {\n            PathNode.prototype.optionsChange.call(this, e);\n        }\n    };\n\n    ImageNode.prototype.onLoad = function onLoad () {\n        this.loading.resolve();\n        this.invalidate();\n    };\n\n    ImageNode.prototype.onError = function onError () {\n        this.loading.reject(new Error(\n            \"Unable to load image '\" + this.img.src +\n            \"'. Check for connectivity and verify CORS headers.\"\n        ));\n    };\n\n    ImageNode.prototype.drawImage = function drawImage (ctx) {\n        var rect = this.srcElement.rect();\n        var topLeft = rect.topLeft();\n\n        ctx.drawImage(\n            this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n        );\n    };\n\n    return ImageNode;\n}(PathNode));\n\nNODE_MAP.Image = ImageNode;\n\nexport default ImageNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar TextNode = (function (PathNode) {\n    function TextNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) TextNode.__proto__ = PathNode;\n    TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n    TextNode.prototype.constructor = TextNode;\n\n    TextNode.prototype.renderTo = function renderTo (ctx) {\n        var text = this.srcElement;\n        var pos = text.position();\n        var size = text.measure();\n\n        ctx.save();\n\n        this.setTransform(ctx);\n        this.setClip(ctx);\n        this.setOpacity(ctx);\n\n        ctx.beginPath();\n\n        ctx.font = text.options.font;\n        ctx.textAlign = 'left';\n\n        if (this.setFill(ctx)) {\n            ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n        }\n\n        if (this.setStroke(ctx)) {\n            this.setLineDash(ctx);\n            ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n        }\n\n        ctx.restore();\n    };\n\n    return TextNode;\n}(PathNode));\n\n\nNODE_MAP.Text = TextNode;\n\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n    function MultiPathNode () {\n        PathNode.apply(this, arguments);\n    }\n\n    if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n    MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n    MultiPathNode.prototype.constructor = MultiPathNode;\n\n    MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n        var paths = this.srcElement.paths;\n        for (var i = 0; i < paths.length; i++) {\n            renderPath(ctx, paths[i]);\n        }\n    };\n\n    return MultiPathNode;\n}(PathNode));\n\nNODE_MAP.MultiPath = MultiPathNode;\n\nexport default MultiPathNode;","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n    var defaults = {\n        width: \"800px\", height: \"600px\",\n        cors: \"Anonymous\"\n    };\n\n    var exportRoot = group;\n    var bbox = group.clippedBBox();\n\n\n    if (bbox) {\n        var origin = bbox.getOrigin();\n        exportRoot = new Group();\n        exportRoot.transform(transform().translate(-origin.x, -origin.y));\n        exportRoot.children.push(group);\n\n        var size = bbox.getSize();\n        defaults.width = size.width + \"px\";\n        defaults.height = size.height + \"px\";\n    }\n\n    var surfaceOptions = Object.assign(defaults, options);\n\n    var container = document.createElement(\"div\");\n    var style = container.style;\n\n    style.display = \"none\";\n    style.width = surfaceOptions.width;\n    style.height = surfaceOptions.height;\n    document.body.appendChild(container);\n\n    var surface = new Surface(container, surfaceOptions);\n    surface.suspendTracking();\n    surface.draw(exportRoot);\n\n    var promise = surface.image();\n    var destroy = function () {\n        surface.destroy();\n        document.body.removeChild(container);\n    };\n    promise.then(destroy, destroy);\n\n    return promise;\n}","import { createPromise, encodeBase64 } from '../util';\nimport exportGroup from './export-group';\n\nexport default function exportSVG(group, options) {\n    var svg = exportGroup(group);\n\n    if (!options || !options.raw) {\n        svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n    }\n\n    return createPromise().resolve(svg);\n}\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = (function(){\n    var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    return {\n        decode: function(str) {\n            var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n            while (i < n) {\n                var enc1 = keyStr.indexOf(input.charAt(i++));\n                var enc2 = keyStr.indexOf(input.charAt(i++));\n                var enc3 = keyStr.indexOf(input.charAt(i++));\n                var enc4 = keyStr.indexOf(input.charAt(i++));\n\n                var chr1 = (enc1 << 2) | (enc2 >>> 4);\n                var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n                var chr3 = ((enc3 & 3) << 6) | enc4;\n\n                output.push(chr1);\n                if (enc3 != 64) {\n                    output.push(chr2);\n                }\n                if (enc4 != 64) {\n                    output.push(chr3);\n                }\n            }\n\n            return output;\n        },\n        encode: function(bytes) {\n            var i = 0, n = bytes.length;\n            var output = \"\";\n\n            while (i < n) {\n                var chr1 = bytes[i++];\n                var chr2 = bytes[i++];\n                var chr3 = bytes[i++];\n\n                var enc1 = chr1 >>> 2;\n                var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n                var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n                var enc4 = chr3 & 63;\n\n                if (i - n == 2) {\n                    enc3 = enc4 = 64;\n                } else if (i - n == 1) {\n                    enc4 = 64;\n                }\n\n                output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n            }\n            return output;\n        }\n    };\n}());\n\nfunction BinaryStream(data) {\n    var offset = 0, length = 0;\n    if (data == null) {\n        data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n    } else {\n        length = data.length;\n    }\n\n    var ensure = HAS_TYPED_ARRAYS ? function(len) {\n        if (len >= data.length) {\n            var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n            tmp.set(data, 0);\n            data = tmp;\n        }\n    } : function() {};\n\n    var get = HAS_TYPED_ARRAYS ? function() {\n        return new Uint8Array(data.buffer, 0, length);\n    } : function() {\n        return data;\n    };\n\n    var write = HAS_TYPED_ARRAYS ? function(bytes) {\n        if (typeof bytes == \"string\") {\n            return writeString(bytes);\n        }\n        var len = bytes.length;\n        ensure(offset + len);\n        data.set(bytes, offset);\n        offset += len;\n        if (offset > length) {\n            length = offset;\n        }\n    } : function(bytes) {\n        if (typeof bytes == \"string\") {\n            return writeString(bytes);\n        }\n        for (var i = 0; i < bytes.length; ++i) {\n            writeByte(bytes[i]);\n        }\n    };\n\n    var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n        if (data.buffer.slice) {\n            return new Uint8Array(data.buffer.slice(start, start + length));\n        } else {\n            // IE10\n            var x = new Uint8Array(length);\n            x.set(new Uint8Array(data.buffer, start, length));\n            return x;\n        }\n    } : function(start, length) {\n        return data.slice(start, start + length);\n    };\n\n    function eof() {\n        return offset >= length;\n    }\n    function readByte() {\n        return offset < length ? data[offset++] : 0;\n    }\n    function writeByte(b) {\n        ensure(offset);\n        data[offset++] = b & 0xFF;\n        if (offset > length) {\n            length = offset;\n        }\n    }\n    function readShort() {\n        return (readByte() << 8) | readByte();\n    }\n    function writeShort(w) {\n        writeByte(w >> 8);\n        writeByte(w);\n    }\n    function readShort_() {\n        var w = readShort();\n        return w >= 0x8000 ? w - 0x10000 : w;\n    }\n    function writeShort_(w) {\n        writeShort(w < 0 ? w + 0x10000 : w);\n    }\n    function readLong() {\n        return (readShort() * 0x10000) + readShort();\n    }\n    function writeLong(w) {\n        writeShort((w >>> 16) & 0xFFFF);\n        writeShort(w & 0xFFFF);\n    }\n    function readLong_() {\n        var w = readLong();\n        return w >= 0x80000000 ? w - 0x100000000 : w;\n    }\n    function writeLong_(w) {\n        writeLong(w < 0 ? w + 0x100000000 : w);\n    }\n    function readFixed() {\n        return readLong() / 0x10000;\n    }\n    function writeFixed(f) {\n        writeLong(Math.round(f * 0x10000));\n    }\n    function readFixed_() {\n        return readLong_() / 0x10000;\n    }\n    function writeFixed_(f) {\n        writeLong_(Math.round(f * 0x10000));\n    }\n    function read(len) {\n        return times(len, readByte);\n    }\n    function readString(len) {\n        return String.fromCharCode.apply(String, read(len));\n    }\n    function writeString(str) {\n        for (var i = 0; i < str.length; ++i) {\n            writeByte(str.charCodeAt(i));\n        }\n    }\n    function times(n, reader) {\n        for (var ret = new Array(n), i = 0; i < n; ++i) {\n            ret[i] = reader();\n        }\n        return ret;\n    }\n\n    var stream = {\n        eof         : eof,\n        readByte    : readByte,\n        writeByte   : writeByte,\n        readShort   : readShort,\n        writeShort  : writeShort,\n        readLong    : readLong,\n        writeLong   : writeLong,\n        readFixed   : readFixed,\n        writeFixed  : writeFixed,\n\n        // signed numbers.\n        readShort_  : readShort_,\n        writeShort_ : writeShort_,\n        readLong_   : readLong_,\n        writeLong_  : writeLong_,\n        readFixed_  : readFixed_,\n        writeFixed_ : writeFixed_,\n\n        read        : read,\n        write       : write,\n        readString  : readString,\n        writeString : writeString,\n\n        times       : times,\n        get         : get,\n        slice       : slice,\n\n        offset: function(pos) {\n            if (pos != null) {\n                offset = pos;\n                return stream;\n            }\n            return offset;\n        },\n\n        skip: function(nbytes) {\n            offset += nbytes;\n        },\n\n        toString: function() {\n            throw new Error(\"FIX CALLER.  BinaryStream is no longer convertible to string!\");\n        },\n\n        length: function() { return length; },\n\n        saveExcursion: function(f) {\n            var pos = offset;\n            try {\n                return f();\n            } finally {\n                offset = pos;\n            }\n        },\n\n        writeBase64: function(base64) {\n            if (window.atob) {\n                writeString(window.atob(base64));\n            } else {\n                write(BASE64.decode(base64));\n            }\n        },\n        base64: function() {\n            return BASE64.encode(get());\n        }\n    };\n\n    return stream;\n}\n\nfunction ucs2decode(string) {\n    var output = [],\n        counter = 0,\n        length = string.length,\n        value,\n        extra;\n    while (counter < length) {\n        value = string.charCodeAt(counter++);\n        if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n            // high surrogate, and there is a next character\n            extra = string.charCodeAt(counter++);\n            if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n                output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n            } else {\n                // unmatched surrogate; only append this code unit, in case the next\n                // code unit is the high surrogate of a surrogate pair\n                output.push(value);\n                counter--;\n            }\n        } else {\n            output.push(value);\n        }\n    }\n    return output;\n}\n\nfunction ucs2encode(array) {\n    return array.map(function(value){\n        var output = \"\";\n        if (value > 0xFFFF) {\n            value -= 0x10000;\n            output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n            value = 0xDC00 | value & 0x3FF;\n        }\n        output += String.fromCharCode(value);\n        return output;\n    }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n    var data = window.atob(base64);\n    var result = new Uint8Array(data.length);\n\n    for (var idx = 0; idx < data.length; idx++) {\n        result[idx] = data.charCodeAt(idx);\n    }\n\n    return result;\n}\n\nfunction createUint8Array(data) {\n    var result = new Uint8Array(data.length);\n\n    for (var idx = 0; idx < data.length; idx++) {\n        result[idx] = data[idx];\n    }\n\n    return result;\n}\n\nfunction base64ToUint8Array(base64) {\n    if (window.atob) {\n        return atobUint8Array(base64);\n    }\n\n    return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n    HAS_TYPED_ARRAYS,\n    BASE64,\n    BinaryStream,\n    ucs2decode,\n    ucs2encode,\n    base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n    return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\n\nfunction Directory(data) {\n    this.raw = data;\n    this.scalerType = data.readLong();\n    this.tableCount = data.readShort();\n    this.searchRange = data.readShort();\n    this.entrySelector = data.readShort();\n    this.rangeShift = data.readShort();\n\n    var tables = this.tables = {};\n    for (var i = 0; i < this.tableCount; ++i) {\n        var entry = {\n            tag      : data.readString(4),\n            checksum : data.readLong(),\n            offset   : data.readLong(),\n            length   : data.readLong()\n        };\n        tables[entry.tag] = entry;\n    }\n}\n\nDirectory.prototype = {\n\n    readTable: function(name, Ctor) {\n        var def = this.tables[name];\n        if (!def) {\n            throw new Error(\"Table \" + name + \" not found in directory\");\n        }\n        return (this[name] = def.table = new Ctor(this, def));\n    },\n\n    render: function(tables) {\n        var this$1 = this;\n\n        var tableCount = Object.keys(tables).length;\n\n        var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n        var searchRange = maxpow2 * 16;\n        var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n        var rangeShift = tableCount * 16 - searchRange;\n\n        var out = BinaryStream();\n        out.writeLong(this.scalerType);\n        out.writeShort(tableCount);\n        out.writeShort(searchRange);\n        out.writeShort(entrySelector);\n        out.writeShort(rangeShift);\n\n        var directoryLength = tableCount * 16;\n        var offset = out.offset() + directoryLength;\n        var headOffset = null;\n        var tableData = BinaryStream();\n\n        for (var tag in tables) {\n            if (hasOwnProperty(tables, tag)) {\n                var table = tables[tag];\n\n                out.writeString(tag);\n                out.writeLong(this$1.checksum(table));\n                out.writeLong(offset);\n                out.writeLong(table.length);\n\n                tableData.write(table);\n                if (tag == \"head\") {\n                    headOffset = offset;\n                }\n                offset += table.length;\n\n                while (offset % 4) {\n                    tableData.writeByte(0);\n                    offset++;\n                }\n            }\n        }\n\n        out.write(tableData.get());\n        var sum = this.checksum(out.get());\n        var adjustment = 0xB1B0AFBA - sum;\n\n        out.offset(headOffset + 8);\n        out.writeLong(adjustment);\n        return out.get();\n    },\n\n    checksum: function(data) {\n        data = BinaryStream(data);\n        var sum = 0;\n        while (!data.eof()) {\n            sum += data.readLong();\n        }\n        return sum & 0xFFFFFFFF;\n    }\n};\n\nfunction deftable(methods) {\n    function Ctor(file, def) {\n        this.definition = def;\n        this.length = def.length;\n        this.offset = def.offset;\n        this.file = file;\n        this.rawData = file.raw;\n        this.parse(file.raw);\n    }\n    Ctor.prototype.raw = function() {\n        return this.rawData.slice(this.offset, this.length);\n    };\n    for (var i in methods) {\n        if (hasOwnProperty(methods, i)) {\n            Ctor[i] = Ctor.prototype[i] = methods[i];\n        }\n    }\n    return Ctor;\n}\n\nvar HeadTable = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n        this.version             = data.readLong();\n        this.revision            = data.readLong();\n        this.checkSumAdjustment  = data.readLong();\n        this.magicNumber         = data.readLong();\n        this.flags               = data.readShort();\n        this.unitsPerEm          = data.readShort();\n        this.created             = data.read(8);\n        this.modified            = data.read(8);\n\n        this.xMin = data.readShort_();\n        this.yMin = data.readShort_();\n        this.xMax = data.readShort_();\n        this.yMax = data.readShort_();\n\n        this.macStyle           = data.readShort();\n        this.lowestRecPPEM      = data.readShort();\n        this.fontDirectionHint  = data.readShort_();\n        this.indexToLocFormat   = data.readShort_();\n        this.glyphDataFormat    = data.readShort_();\n    },\n    render: function(indexToLocFormat) {\n        var out = BinaryStream();\n        out.writeLong(this.version);\n        out.writeLong(this.revision);\n        out.writeLong(0);       // checksum adjustment; shall be computed later\n        out.writeLong(this.magicNumber);\n        out.writeShort(this.flags);\n        out.writeShort(this.unitsPerEm);\n        out.write(this.created);\n        out.write(this.modified);\n        out.writeShort_(this.xMin);\n        out.writeShort_(this.yMin);\n        out.writeShort_(this.xMax);\n        out.writeShort_(this.yMax);\n        out.writeShort(this.macStyle);\n        out.writeShort(this.lowestRecPPEM);\n        out.writeShort_(this.fontDirectionHint);\n        out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n        out.writeShort_(this.glyphDataFormat);\n        return out.get();\n    }\n});\n\nvar LocaTable = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n        var format = this.file.head.indexToLocFormat;\n        if (format === 0) {\n            this.offsets = data.times(this.length / 2, function(){\n                return 2 * data.readShort();\n            });\n        } else {\n            this.offsets = data.times(this.length / 4, data.readLong);\n        }\n    },\n    offsetOf: function(id) {\n        return this.offsets[id];\n    },\n    lengthOf: function(id) {\n        return this.offsets[id + 1] - this.offsets[id];\n    },\n    render: function(offsets) {\n        var out = BinaryStream();\n        var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n        for (var i = 0; i < offsets.length; ++i) {\n            if (needsLongFormat) {\n                out.writeLong(offsets[i]);\n            } else {\n                out.writeShort(offsets[i] / 2);\n            }\n        }\n        return {\n            format: needsLongFormat ? 1 : 0,\n            table: out.get()\n        };\n    }\n});\n\nvar HheaTable = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n\n        this.version              = data.readLong();\n        this.ascent               = data.readShort_();\n        this.descent              = data.readShort_();\n        this.lineGap              = data.readShort_();\n        this.advanceWidthMax      = data.readShort();\n        this.minLeftSideBearing   = data.readShort_();\n        this.minRightSideBearing  = data.readShort_();\n        this.xMaxExtent           = data.readShort_();\n        this.caretSlopeRise       = data.readShort_();\n        this.caretSlopeRun        = data.readShort_();\n        this.caretOffset          = data.readShort_();\n\n        data.skip(4 * 2);       // reserved\n\n        this.metricDataFormat     = data.readShort_();\n        this.numOfLongHorMetrics  = data.readShort();\n    },\n    render: function(ids) {\n        var out = BinaryStream();\n        out.writeLong(this.version);\n        out.writeShort_(this.ascent);\n        out.writeShort_(this.descent);\n        out.writeShort_(this.lineGap);\n        out.writeShort(this.advanceWidthMax);\n        out.writeShort_(this.minLeftSideBearing);\n        out.writeShort_(this.minRightSideBearing);\n        out.writeShort_(this.xMaxExtent);\n        out.writeShort_(this.caretSlopeRise);\n        out.writeShort_(this.caretSlopeRun);\n        out.writeShort_(this.caretOffset);\n\n        out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n        out.writeShort_(this.metricDataFormat);\n        out.writeShort(ids.length);\n        return out.get();\n    }\n});\n\nvar MaxpTable = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n        this.version = data.readLong();\n        this.numGlyphs = data.readShort();\n        this.maxPoints = data.readShort();\n        this.maxContours = data.readShort();\n        this.maxComponentPoints = data.readShort();\n        this.maxComponentContours = data.readShort();\n        this.maxZones = data.readShort();\n        this.maxTwilightPoints = data.readShort();\n        this.maxStorage = data.readShort();\n        this.maxFunctionDefs = data.readShort();\n        this.maxInstructionDefs = data.readShort();\n        this.maxStackElements = data.readShort();\n        this.maxSizeOfInstructions = data.readShort();\n        this.maxComponentElements = data.readShort();\n        this.maxComponentDepth = data.readShort();\n    },\n    render: function(glyphIds) {\n        var out = BinaryStream();\n        out.writeLong(this.version);\n        out.writeShort(glyphIds.length);\n        out.writeShort(this.maxPoints);\n        out.writeShort(this.maxContours);\n        out.writeShort(this.maxComponentPoints);\n        out.writeShort(this.maxComponentContours);\n        out.writeShort(this.maxZones);\n        out.writeShort(this.maxTwilightPoints);\n        out.writeShort(this.maxStorage);\n        out.writeShort(this.maxFunctionDefs);\n        out.writeShort(this.maxInstructionDefs);\n        out.writeShort(this.maxStackElements);\n        out.writeShort(this.maxSizeOfInstructions);\n        out.writeShort(this.maxComponentElements);\n        out.writeShort(this.maxComponentDepth);\n        return out.get();\n    }\n});\n\nvar HmtxTable = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n        var dir = this.file, hhea = dir.hhea;\n        this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n            return {\n                advance: data.readShort(),\n                lsb: data.readShort_()\n            };\n        });\n        var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n        this.leftSideBearings = data.times(lsbCount, data.readShort_);\n    },\n    forGlyph: function(id) {\n        var metrics = this.metrics;\n        var n = metrics.length;\n        if (id < n) {\n            return metrics[id];\n        }\n        return {\n            advance: metrics[n - 1].advance,\n            lsb: this.leftSideBearings[id - n]\n        };\n    },\n    render: function(glyphIds) {\n        var this$1 = this;\n\n        var out = BinaryStream();\n        for (var i = 0; i < glyphIds.length; ++i) {\n            var m = this$1.forGlyph(glyphIds[i]);\n            out.writeShort(m.advance);\n            out.writeShort_(m.lsb);\n        }\n        return out.get();\n    }\n});\n\nvar GlyfTable = (function(){\n\n    function SimpleGlyph(raw) {\n        this.raw = raw;\n    }\n    SimpleGlyph.prototype = {\n        compound: false,\n        render: function() {\n            return this.raw.get();\n        }\n    };\n\n    var ARG_1_AND_2_ARE_WORDS     = 0x0001;\n    var WE_HAVE_A_SCALE           = 0x0008;\n    var MORE_COMPONENTS           = 0x0020;\n    var WE_HAVE_AN_X_AND_Y_SCALE  = 0x0040;\n    var WE_HAVE_A_TWO_BY_TWO      = 0x0080;\n    //var WE_HAVE_INSTRUCTIONS      = 0x0100;\n\n    function CompoundGlyph(data) {\n        this.raw = data;\n        var ids = this.glyphIds = [];\n        var offsets = this.idOffsets = [];\n        while (true) {          // eslint-disable-line no-constant-condition\n            var flags = data.readShort();\n            offsets.push(data.offset());\n            ids.push(data.readShort());\n\n            if (!(flags & MORE_COMPONENTS)) {\n                break;\n            }\n\n            data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n            if (flags & WE_HAVE_A_TWO_BY_TWO) {\n                data.skip(8);\n            } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n                data.skip(4);\n            } else if (flags & WE_HAVE_A_SCALE) {\n                data.skip(2);\n            }\n        }\n    }\n\n    CompoundGlyph.prototype = {\n        compound: true,\n        render: function(old2new) {\n            var this$1 = this;\n\n            var out = BinaryStream(this.raw.get());\n            for (var i = 0; i < this.glyphIds.length; ++i) {\n                var id = this$1.glyphIds[i];\n                out.offset(this$1.idOffsets[i]);\n                out.writeShort(old2new[id]);\n            }\n            return out.get();\n        }\n    };\n\n    return deftable({\n        parse: function() {\n            this.cache = {};\n        },\n        glyphFor: function(id) {\n            var cache = this.cache;\n            if (hasOwnProperty(cache, id)) {\n                return cache[id];\n            }\n\n            var loca = this.file.loca;\n            var length = loca.lengthOf(id);\n\n            if (length === 0) {\n                return (cache[id] = null);\n            }\n\n            var data = this.rawData;\n            var offset = this.offset + loca.offsetOf(id);\n            var raw = BinaryStream(data.slice(offset, length));\n\n            var numberOfContours = raw.readShort_();\n            var xMin = raw.readShort_();\n            var yMin = raw.readShort_();\n            var xMax = raw.readShort_();\n            var yMax = raw.readShort_();\n\n            var glyph = cache[id] = numberOfContours == -1 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n            glyph.numberOfContours = numberOfContours;\n            glyph.xMin = xMin;\n            glyph.yMin = yMin;\n            glyph.xMax = xMax;\n            glyph.yMax = yMax;\n\n            return glyph;\n        },\n        render: function(glyphs, oldIds, old2new) {\n            var out = BinaryStream(), offsets = [];\n            for (var i = 0; i < oldIds.length; ++i) {\n                var id = oldIds[i];\n                var glyph = glyphs[id];\n                offsets.push(out.offset());\n                if (glyph) {\n                    out.write(glyph.render(old2new));\n                }\n            }\n            offsets.push(out.offset());\n            return {\n                table: out.get(),\n                offsets: offsets\n            };\n        }\n    });\n\n}());\n\nvar NameTable = (function(){\n\n    function NameEntry(text, entry) {\n        this.text = text;\n        this.length = text.length;\n        this.platformID = entry.platformID;\n        this.platformSpecificID = entry.platformSpecificID;\n        this.languageID = entry.languageID;\n        this.nameID = entry.nameID;\n    }\n\n    return deftable({\n        parse: function(data) {\n            data.offset(this.offset);\n            data.readShort();   // format\n            var count = data.readShort();\n            var stringOffset = this.offset + data.readShort();\n            var nameRecords = data.times(count, function(){\n                return {\n                    platformID         : data.readShort(),\n                    platformSpecificID : data.readShort(),\n                    languageID         : data.readShort(),\n                    nameID             : data.readShort(),\n                    length             : data.readShort(),\n                    offset             : data.readShort() + stringOffset\n                };\n            });\n            var strings = this.strings = {};\n            for (var i = 0; i < nameRecords.length; ++i) {\n                var rec = nameRecords[i];\n                data.offset(rec.offset);\n                var text = data.readString(rec.length);\n                if (!strings[rec.nameID]) {\n                    strings[rec.nameID] = [];\n                }\n                strings[rec.nameID].push(new NameEntry(text, rec));\n            }\n            this.postscriptEntry = strings[6][0];\n            this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n        },\n\n        render: function(psName) {\n            var this$1 = this;\n\n            var strings = this.strings;\n            var strCount = 0;\n            for (var i in strings) {\n                if (hasOwnProperty(strings, i)) {\n                    strCount += strings[i].length;\n                }\n            }\n            var out = BinaryStream();\n            var strTable = BinaryStream();\n\n            out.writeShort(0);  // format\n            out.writeShort(strCount);\n            out.writeShort(6 + 12 * strCount); // stringOffset\n\n            for (i in strings) {\n                if (hasOwnProperty(strings, i)) {\n                    var list = i == 6 ? [\n                        new NameEntry(psName, this$1.postscriptEntry)\n                    ] : strings[i];\n                    for (var j = 0; j < list.length; ++j) {\n                        var str = list[j];\n                        out.writeShort(str.platformID);\n                        out.writeShort(str.platformSpecificID);\n                        out.writeShort(str.languageID);\n                        out.writeShort(str.nameID);\n                        out.writeShort(str.length);\n                        out.writeShort(strTable.offset());\n\n                        strTable.writeString(str.text);\n                    }\n                }\n            }\n\n            out.write(strTable.get());\n\n            return out.get();\n        }\n    });\n\n})();\n\nvar PostTable = (function(){\n\n    var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n    return deftable({\n        parse: function(data) {\n            var this$1 = this;\n\n            data.offset(this.offset);\n\n            this.format = data.readLong();\n            this.italicAngle = data.readFixed_();\n            this.underlinePosition = data.readShort_();\n            this.underlineThickness = data.readShort_();\n            this.isFixedPitch = data.readLong();\n            this.minMemType42 = data.readLong();\n            this.maxMemType42 = data.readLong();\n            this.minMemType1 = data.readLong();\n            this.maxMemType1 = data.readLong();\n\n            var numberOfGlyphs;\n\n            switch (this.format) {\n              case 0x00010000:\n              case 0x00030000:\n                break;\n\n              case 0x00020000:\n                numberOfGlyphs = data.readShort();\n                this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n                this.names = [];\n                var limit = this.offset + this.length;\n                while (data.offset() < limit) {\n                    this$1.names.push(data.readString(data.readByte()));\n                }\n                break;\n\n              case 0x00025000:\n                numberOfGlyphs = data.readShort();\n                this.offsets = data.read(numberOfGlyphs);\n                break;\n\n              case 0x00040000:\n                this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n                break;\n            }\n        },\n        glyphFor: function(code) {\n            switch (this.format) {\n              case 0x00010000:\n                return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n              case 0x00020000:\n                var index = this.glyphNameIndex[code];\n                if (index < POSTSCRIPT_GLYPHS.length) {\n                    return POSTSCRIPT_GLYPHS[index];\n                }\n                return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n              case 0x00025000:\n\n              case 0x00030000:\n                return \".notdef\";\n\n              case 0x00040000:\n                return this.map[code] || 0xFFFF;\n            }\n        },\n        render: function(mapping) {\n            var this$1 = this;\n\n            if (this.format == 0x00030000) {\n                return this.raw();\n            }\n\n            // keep original header, but set format to 2.0\n            var out = BinaryStream(this.rawData.slice(this.offset, 32));\n            out.writeLong(0x00020000);\n            out.offset(32);\n\n            var indexes = [];\n            var strings = [];\n\n            for (var i = 0; i < mapping.length; ++i) {\n                var id = mapping[i];\n                var post = this$1.glyphFor(id);\n                var index = POSTSCRIPT_GLYPHS.indexOf(post);\n                if (index >= 0) {\n                    indexes.push(index);\n                } else {\n                    indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n                    strings.push(post);\n                }\n            }\n\n            out.writeShort(mapping.length);\n\n            for (i = 0; i < indexes.length; ++i) {\n                out.writeShort(indexes[i]);\n            }\n\n            for (i = 0; i < strings.length; ++i) {\n                out.writeByte(strings[i].length);\n                out.writeString(strings[i]);\n            }\n\n            return out.get();\n        }\n    });\n})();\n\nvar CmapTable = (function(){\n\n    function CmapEntry(data, offset, codeMap) {\n        var self = this;\n        self.platformID = data.readShort();\n        self.platformSpecificID = data.readShort();\n        self.offset = offset + data.readLong();\n\n        data.saveExcursion(function(){\n            var code;\n            data.offset(self.offset);\n            self.format = data.readShort();\n\n            switch (self.format) {\n              case 0:\n                self.length = data.readShort();\n                self.language = data.readShort();\n                for (var i = 0; i < 256; ++i) {\n                    codeMap[i] = data.readByte();\n                }\n                break;\n\n              case 4:\n                self.length = data.readShort();\n                self.language = data.readShort();\n                var segCount = data.readShort() / 2;\n\n                data.skip(6);       // searchRange, entrySelector, rangeShift\n                var endCode = data.times(segCount, data.readShort);\n                data.skip(2);       // reserved pad\n                var startCode = data.times(segCount, data.readShort);\n                var idDelta = data.times(segCount, data.readShort_);\n                var idRangeOffset = data.times(segCount, data.readShort);\n\n                var count = (self.length + self.offset - data.offset()) / 2;\n                var glyphIds = data.times(count, data.readShort);\n\n                for (i = 0; i < segCount; ++i) {\n                    var start = startCode[i], end = endCode[i];\n                    for (code = start; code <= end; ++code) {\n                        var glyphId;\n                        if (idRangeOffset[i] === 0) {\n                            glyphId = code + idDelta[i];\n                        } else {\n                            ///\n                            // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n                            // into the glyphIds table, from the *current* `i` cell of idRangeOffset.  In other words,\n                            // this offset spans from the first into the second array.  This works, because the arrays\n                            // are consecutive in the TTF file:\n                            //\n                            //     [ ...idRangeOffset... ][ ...glyphIds... ]\n                            //       ...... 48 ......       .... ID ....\n                            //              ^----- 48 bytes -----^\n                            //\n                            // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n                            // so that we can have that special `zero` value.)\n                            //\n                            // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n                            // yet the offset is in bytes.  That is why we divide it by 2.  Then we subtract the\n                            // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n                            // the corresponding delta to get the actual glyph ID.\n                            ///\n                            var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n                            glyphId = glyphIds[index] || 0;\n                            if (glyphId !== 0) {\n                                glyphId += idDelta[i];\n                            }\n                        }\n                        codeMap[code] = glyphId & 0xFFFF;\n                    }\n                }\n                break;\n\n              case 6:\n                self.length = data.readShort();\n                self.language = data.readShort();\n                code = data.readShort();\n                var length = data.readShort();\n                while (length-- > 0) {\n                    codeMap[code++] = data.readShort();\n                }\n                break;\n\n              case 12:\n                data.readShort(); // reserved\n                self.length = data.readLong();\n                self.language = data.readLong();\n                var ngroups = data.readLong();\n                while (ngroups-- > 0) {\n                    code = data.readLong();\n                    var endCharCode = data.readLong();\n                    var glyphCode = data.readLong();\n                    while (code <= endCharCode) {\n                        codeMap[code++] = glyphCode++;\n                    }\n                }\n                break;\n\n              default:\n                if (window.console) {\n                    window.console.error(\"Unhandled CMAP format: \" + self.format);\n                }\n            }\n        });\n    }\n\n    function renderCharmap(ncid2ogid, ogid2ngid) {\n        var codes = sortedKeys(ncid2ogid);\n        var startCodes = [];\n        var endCodes = [];\n        var last = null;\n        var diff = null;\n\n        function new_gid(charcode) {\n            return ogid2ngid[ncid2ogid[charcode]];\n        }\n\n        for (var i = 0; i < codes.length; ++i) {\n            var code = codes[i];\n            var gid = new_gid(code);\n            var delta = gid - code;\n            if (last == null || delta !== diff) {\n                if (last) {\n                    endCodes.push(last);\n                }\n                startCodes.push(code);\n                diff = delta;\n            }\n            last = code;\n        }\n\n        if (last) {\n            endCodes.push(last);\n        }\n        endCodes.push(0xFFFF);\n        startCodes.push(0xFFFF);\n\n        var segCount = startCodes.length;\n        var segCountX2 = segCount * 2;\n        var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n        var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n        var rangeShift = segCountX2 - searchRange;\n\n        var deltas = [];\n        var rangeOffsets = [];\n        var glyphIds = [];\n\n        for (i = 0; i < segCount; ++i) {\n            var startCode = startCodes[i];\n            var endCode = endCodes[i];\n            if (startCode == 0xFFFF) {\n                deltas.push(0);\n                rangeOffsets.push(0);\n                break;\n            }\n            var startGlyph = new_gid(startCode);\n            if (startCode - startGlyph >= 0x8000) {\n                deltas.push(0);\n                rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n                for (var j = startCode; j <= endCode; ++j) {\n                    glyphIds.push(new_gid(j));\n                }\n            } else {\n                deltas.push(startGlyph - startCode);\n                rangeOffsets.push(0);\n            }\n        }\n\n        var out = BinaryStream();\n\n        out.writeShort(3);      // platformID\n        out.writeShort(1);      // platformSpecificID\n        out.writeLong(12);      // offset\n        out.writeShort(4);      // format\n        out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n        out.writeShort(0);      // language\n        out.writeShort(segCountX2);\n        out.writeShort(searchRange);\n        out.writeShort(entrySelector);\n        out.writeShort(rangeShift);\n\n        endCodes.forEach(out.writeShort);\n        out.writeShort(0);      // reserved pad\n        startCodes.forEach(out.writeShort);\n        deltas.forEach(out.writeShort_);\n        rangeOffsets.forEach(out.writeShort);\n        glyphIds.forEach(out.writeShort);\n\n        return out.get();\n    }\n\n    return deftable({\n        parse: function(data) {\n            var self = this;\n            var offset = self.offset;\n            data.offset(offset);\n            self.codeMap = {};\n            self.version = data.readShort();\n            var tableCount = data.readShort();\n            self.tables = data.times(tableCount, function(){\n                return new CmapEntry(data, offset, self.codeMap);\n            });\n        },\n        render: function(ncid2ogid, ogid2ngid) {\n            var out = BinaryStream();\n            out.writeShort(0);  // version\n            out.writeShort(1);  // tableCount\n            out.write(renderCharmap(ncid2ogid, ogid2ngid));\n            return out.get();\n        }\n    });\n\n})();\n\nvar OS2Table = deftable({\n    parse: function(data) {\n        data.offset(this.offset);\n        this.version = data.readShort();\n        this.averageCharWidth = data.readShort_();\n        this.weightClass = data.readShort();\n        this.widthClass = data.readShort();\n        this.type = data.readShort();\n        this.ySubscriptXSize = data.readShort_();\n        this.ySubscriptYSize = data.readShort_();\n        this.ySubscriptXOffset = data.readShort_();\n        this.ySubscriptYOffset = data.readShort_();\n        this.ySuperscriptXSize = data.readShort_();\n        this.ySuperscriptYSize = data.readShort_();\n        this.ySuperscriptXOffset = data.readShort_();\n        this.ySuperscriptYOffset = data.readShort_();\n        this.yStrikeoutSize = data.readShort_();\n        this.yStrikeoutPosition = data.readShort_();\n        this.familyClass = data.readShort_();\n\n        this.panose = data.times(10, data.readByte);\n        this.charRange = data.times(4, data.readLong);\n\n        this.vendorID = data.readString(4);\n        this.selection = data.readShort();\n        this.firstCharIndex = data.readShort();\n        this.lastCharIndex = data.readShort();\n\n        if (this.version > 0) {\n            this.ascent = data.readShort_();\n            this.descent = data.readShort_();\n            this.lineGap = data.readShort_();\n            this.winAscent = data.readShort();\n            this.winDescent = data.readShort();\n            this.codePageRange = data.times(2, data.readLong);\n\n            if (this.version > 1) {\n                this.xHeight = data.readShort();\n                this.capHeight = data.readShort();\n                this.defaultChar = data.readShort();\n                this.breakChar = data.readShort();\n                this.maxContext = data.readShort();\n            }\n        }\n    },\n    render: function() {\n        return this.raw();\n    }\n});\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n    var ret = \"\", n = String(subsetTag);\n    for (var i = 0; i < n.length; ++i) {\n        ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n    }\n    ++subsetTag;\n    return ret;\n}\n\nfunction Subfont(font) {\n    this.font = font;\n    this.subset = {};\n    this.unicodes = {};\n    this.ogid2ngid = { 0: 0 };\n    this.ngid2ogid = { 0: 0 };\n    this.ncid2ogid = {};\n    this.next = this.firstChar = 1;\n    this.nextGid = 1;\n    this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n}\n\nSubfont.prototype = {\n    use: function(ch) {\n        var self = this;\n        if (typeof ch == \"string\") {\n            return ucs2decode(ch).reduce(function(ret, code){\n                return ret + String.fromCharCode(self.use(code));\n            }, \"\");\n        }\n        var code = self.unicodes[ch];\n        if (!code) {\n            code = self.next++;\n            self.subset[code] = ch;\n            self.unicodes[ch] = code;\n\n            // generate new GID (glyph ID) and maintain newGID ->\n            // oldGID and back mappings\n            var old_gid = self.font.cmap.codeMap[ch];\n            if (old_gid) {\n                self.ncid2ogid[code] = old_gid;\n                if (self.ogid2ngid[old_gid] == null) {\n                    var new_gid = self.nextGid++;\n                    self.ogid2ngid[old_gid] = new_gid;\n                    self.ngid2ogid[new_gid] = old_gid;\n                }\n            }\n        }\n        return code;\n    },\n    encodeText: function(text) {\n        return this.use(text);\n    },\n    glyphIds: function() {\n        return sortedKeys(this.ogid2ngid);\n    },\n    glyphsFor: function(glyphIds, result) {\n        var this$1 = this;\n\n        if (!result) {\n            result = {};\n        }\n        for (var i = 0; i < glyphIds.length; ++i) {\n            var id = glyphIds[i];\n            if (!result[id]) {\n                var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n                if (glyph && glyph.compound) {\n                    this$1.glyphsFor(glyph.glyphIds, result);\n                }\n            }\n        }\n        return result;\n    },\n    render: function() {\n        var this$1 = this;\n\n        var glyphs = this.glyphsFor(this.glyphIds());\n\n        // add missing sub-glyphs\n        for (var old_gid in glyphs) {\n            if (hasOwnProperty(glyphs, old_gid)) {\n                old_gid = parseInt(old_gid, 10);\n                if (this$1.ogid2ngid[old_gid] == null) {\n                    var new_gid = this$1.nextGid++;\n                    this$1.ogid2ngid[old_gid] = new_gid;\n                    this$1.ngid2ogid[new_gid] = old_gid;\n                }\n            }\n        }\n\n        // must obtain old_gid_ids in an order matching sorted\n        // new_gid_ids\n        var new_gid_ids = sortedKeys(this.ngid2ogid);\n        var old_gid_ids = new_gid_ids.map(function(id){\n            return this.ngid2ogid[id];\n        }, this);\n\n        var font = this.font;\n        var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n        var loca = font.loca.render(glyf.offsets);\n\n        this.lastChar = this.next - 1;\n\n        var tables = {\n            \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n            \"glyf\" : glyf.table,\n            \"loca\" : loca.table,\n            \"hmtx\" : font.hmtx.render(old_gid_ids),\n            \"hhea\" : font.hhea.render(old_gid_ids),\n            \"maxp\" : font.maxp.render(old_gid_ids),\n            \"post\" : font.post.render(old_gid_ids),\n            \"name\" : font.name.render(this.psName),\n            \"head\" : font.head.render(loca.format),\n            \"OS/2\" : font.os2.render()\n        };\n\n        return this.font.directory.render(tables);\n    },\n    cidToGidMap: function() {\n        var this$1 = this;\n\n        var out = BinaryStream(), len = 0;\n        for (var cid = this.firstChar; cid < this.next; ++cid) {\n            while (len < cid) {\n                out.writeShort(0);\n                len++;\n            }\n            var old_gid = this$1.ncid2ogid[cid];\n            if (old_gid) {\n                var new_gid = this$1.ogid2ngid[old_gid];\n                out.writeShort(new_gid);\n            } else {\n                out.writeShort(0);\n            }\n            len++;\n        }\n        return out.get();\n    }\n};\n\nfunction TTFFont(rawData, name) {\n    var self = this;\n    var data = self.contents = BinaryStream(rawData);\n    if (data.readString(4) == \"ttcf\") {\n        var offset;\n        var parse = function() {\n            data.offset(offset);\n            self.parse();\n        };\n        if (!name) {\n            throw new Error(\"Must specify a name for TTC files\");\n        }\n        data.readLong();        // version\n        var numFonts = data.readLong();\n        for (var i = 0; i < numFonts; ++i) {\n            offset = data.readLong();\n            data.saveExcursion(parse);\n            if (self.psName == name) {\n                return;\n            }\n        }\n        throw new Error(\"Font \" + name + \" not found in collection\");\n    } else {\n        data.offset(0);\n        self.parse();\n    }\n}\n\nTTFFont.prototype = {\n    parse: function() {\n        var dir = this.directory = new Directory(this.contents);\n\n        this.head = dir.readTable(\"head\", HeadTable);\n        this.loca = dir.readTable(\"loca\", LocaTable);\n        this.hhea = dir.readTable(\"hhea\", HheaTable);\n        this.maxp = dir.readTable(\"maxp\", MaxpTable);\n        this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n        this.glyf = dir.readTable(\"glyf\", GlyfTable);\n        this.name = dir.readTable(\"name\", NameTable);\n        this.post = dir.readTable(\"post\", PostTable);\n        this.cmap = dir.readTable(\"cmap\", CmapTable);\n        this.os2  = dir.readTable(\"OS/2\", OS2Table);\n\n        this.psName = this.name.postscriptName;\n        this.ascent = this.os2.ascent || this.hhea.ascent;\n        this.descent = this.os2.descent || this.hhea.descent;\n        this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n        this.scale = 1000 / this.head.unitsPerEm;\n    },\n    widthOfGlyph: function(glyph) {\n        return this.hmtx.forGlyph(glyph).advance * this.scale;\n    },\n    makeSubset: function() {\n        return new Subfont(this);\n    }\n};\n\nexport { TTFFont };\n","import { deflate as pakoDeflate } from 'pako/dist/pako_deflate';\n\nexport var deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n    return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\n\nvar browser = support.browser;\nvar NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nvar PAPER_SIZE = {\n    a0        : [ 2383.94 , 3370.39 ],\n    a1        : [ 1683.78 , 2383.94 ],\n    a2        : [ 1190.55 , 1683.78 ],\n    a3        : [ 841.89  , 1190.55 ],\n    a4        : [ 595.28  , 841.89  ],\n    a5        : [ 419.53  , 595.28  ],\n    a6        : [ 297.64  , 419.53  ],\n    a7        : [ 209.76  , 297.64  ],\n    a8        : [ 147.40  , 209.76  ],\n    a9        : [ 104.88  , 147.40  ],\n    a10       : [ 73.70   , 104.88  ],\n    b0        : [ 2834.65 , 4008.19 ],\n    b1        : [ 2004.09 , 2834.65 ],\n    b2        : [ 1417.32 , 2004.09 ],\n    b3        : [ 1000.63 , 1417.32 ],\n    b4        : [ 708.66  , 1000.63 ],\n    b5        : [ 498.90  , 708.66  ],\n    b6        : [ 354.33  , 498.90  ],\n    b7        : [ 249.45  , 354.33  ],\n    b8        : [ 175.75  , 249.45  ],\n    b9        : [ 124.72  , 175.75  ],\n    b10       : [ 87.87   , 124.72  ],\n    c0        : [ 2599.37 , 3676.54 ],\n    c1        : [ 1836.85 , 2599.37 ],\n    c2        : [ 1298.27 , 1836.85 ],\n    c3        : [ 918.43  , 1298.27 ],\n    c4        : [ 649.13  , 918.43  ],\n    c5        : [ 459.21  , 649.13  ],\n    c6        : [ 323.15  , 459.21  ],\n    c7        : [ 229.61  , 323.15  ],\n    c8        : [ 161.57  , 229.61  ],\n    c9        : [ 113.39  , 161.57  ],\n    c10       : [ 79.37   , 113.39  ],\n    executive : [ 521.86  , 756.00  ],\n    folio     : [ 612.00  , 936.00  ],\n    legal     : [ 612.00  , 1008.00 ],\n    letter    : [ 612.00  , 792.00  ],\n    tabloid   : [ 792.00  , 1224.00 ]\n};\n\nfunction makeOutput() {\n    var indentLevel = 0, output = BinaryStream();\n    function out() {\n        var arguments$1 = arguments;\n\n        for (var i = 0; i < arguments.length; ++i) {\n            var x = arguments$1[i];\n            if (x === undefined) {\n                throw new Error(\"Cannot output undefined to PDF\");\n            }\n            else if (x instanceof PDFValue) {\n                x.beforeRender(out);\n                x.render(out);\n            }\n            else if (isArray(x)) {\n                renderArray(x, out);\n            }\n            else if (isDate(x)) {\n                renderDate(x, out);\n            }\n            else if (typeof x == \"number\") {\n                if (isNaN(x)) {\n                    throw new Error(\"Cannot output NaN to PDF\");\n                }\n                // make sure it doesn't end up in exponent notation\n                var num = x.toFixed(7);\n                if (num.indexOf(\".\") >= 0) {\n                    num = num.replace(/\\.?0+$/, \"\");\n                }\n                if (num == \"-0\") {\n                    num = \"0\";\n                }\n                output.writeString(num);\n            }\n            else if (/string|boolean/.test(typeof x)) {\n                output.writeString(String(x));\n            }\n            else if (typeof x.get == \"function\") {\n                output.write(x.get());\n            }\n            else if (typeof x == \"object\") {\n                if (!x) {\n                    output.writeString(\"null\");\n                } else {\n                    out(new PDFDictionary(x));\n                }\n            }\n        }\n    }\n    out.writeData = function(data) {\n        output.write(data);\n    };\n    out.withIndent = function(f) {\n        ++indentLevel;\n        f(out);\n        --indentLevel;\n    };\n    out.indent = function() {\n        out(NL, pad(\"\", indentLevel * 2, \"  \"));\n        out.apply(null, arguments);\n    };\n    out.offset = function() {\n        return output.offset();\n    };\n    out.toString = function() {\n        throw new Error(\"FIX CALLER\");\n    };\n    out.get = function() {\n        return output.get();\n    };\n    out.stream = function() {\n        return output;\n    };\n    return out;\n}\n\nfunction wrapObject(value, id) {\n    var beforeRender = value.beforeRender;\n    var renderValue = value.render;\n\n    value.beforeRender = function(){};\n\n    value.render = function(out) {\n        out(id, \" 0 R\");\n    };\n\n    value.renderFull = function(out) {\n        value._offset = out.offset();\n        out(id, \" 0 obj \");\n        beforeRender.call(value, out);\n        renderValue.call(value, out);\n        out(\" endobj\");\n    };\n}\n\nfunction getPaperOptions(getOption) {\n    if (typeof getOption != \"function\") {\n        var options = getOption;\n        getOption = function(key, def) {\n            return key in options ? options[key] : def;\n        };\n    }\n    var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n    if (!paperSize) {\n        return {};\n    }\n    if (typeof paperSize == \"string\") {\n        paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n        if (paperSize == null) {\n            throw new Error(\"Unknown paper size\");\n        }\n    }\n\n    paperSize[0] = unitsToPoints(paperSize[0]);\n    paperSize[1] = unitsToPoints(paperSize[1]);\n\n    if (getOption(\"landscape\", false)) {\n        paperSize = [\n            Math.max(paperSize[0], paperSize[1]),\n            Math.min(paperSize[0], paperSize[1])\n        ];\n    }\n\n    var margin = getOption(\"margin\");\n    if (margin) {\n        if (typeof margin == \"string\" || typeof margin == \"number\") {\n            margin = unitsToPoints(margin, 0);\n            margin = { left: margin, top: margin, right: margin, bottom: margin };\n        } else {\n            margin = {\n                left   : unitsToPoints(margin.left, 0),\n                top    : unitsToPoints(margin.top, 0),\n                right  : unitsToPoints(margin.right, 0),\n                bottom : unitsToPoints(margin.bottom, 0)\n            };\n        }\n        if (getOption(\"addMargin\")) {\n            paperSize[0] += margin.left + margin.right;\n            paperSize[1] += margin.top + margin.bottom;\n        }\n    }\n    return { paperSize: paperSize, margin: margin };\n}\n\nfunction PDFDocument(options) {\n    var self = this;\n    var out = makeOutput();\n    var objcount = 0;\n    var objects = [];\n\n    function getOption(name, defval) {\n        return (options && options[name] != null) ? options[name] : defval;\n    }\n\n    self.getOption = getOption;\n\n    self.attach = function(value) {\n        if (objects.indexOf(value) < 0) {\n            wrapObject(value, ++objcount);\n            objects.push(value);\n        }\n        return value;\n    };\n\n    self.pages = [];\n\n    self.FONTS = {};\n    self.IMAGES = {};\n    self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n    self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n    self.GRAD_COL = {};     // cache for whole color gradient objects\n    self.GRAD_OPC = {};     // cache for whole opacity gradient objects\n\n    var catalog = self.attach(new PDFCatalog());\n    var pageTree = self.attach(new PDFPageTree());\n\n    if (getOption(\"autoPrint\")) {\n        var nameTree = {};\n        nameTree.JavaScript = new PDFDictionary({ Names: [\n            new PDFString(\"JS\"), self.attach(new PDFDictionary({\n                S: _(\"JavaScript\"),\n                JS: new PDFString(\"print(true);\")\n            }))\n        ] });\n        catalog.props.Names = new PDFDictionary(nameTree);\n    }\n\n    catalog.setPages(pageTree);\n\n    var info = self.attach(new PDFDictionary({\n        Producer     : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n        Title        : new PDFString(getOption(\"title\", \"\"), true),\n        Author       : new PDFString(getOption(\"author\", \"\"), true),\n        Subject      : new PDFString(getOption(\"subject\", \"\"), true),\n        Keywords     : new PDFString(getOption(\"keywords\", \"\"), true),\n        Creator      : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n        CreationDate : getOption(\"date\", new Date())\n    }));\n\n    self.addPage = function(options) {\n        var paperOptions  = getPaperOptions(function(name, defval){\n            return (options && options[name] != null) ? options[name] : defval;\n        });\n        var paperSize     = paperOptions.paperSize;\n        var margin        = paperOptions.margin;\n        var contentWidth  = paperSize[0];\n        var contentHeight = paperSize[1];\n        if (margin) {\n            contentWidth -= margin.left + margin.right;\n            contentHeight -= margin.top + margin.bottom;\n        }\n        var content = new PDFStream(makeOutput(), null, true);\n        var props = {\n            Contents : self.attach(content),\n            Parent   : pageTree,\n            MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n        };\n        var page = new PDFPage(self, props);\n        page._content = content;\n        pageTree.addPage(self.attach(page));\n\n        // canvas-like coord. system.  (0,0) is upper-left.\n        // text must be vertically mirorred before drawing.\n        page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n        if (margin) {\n            page.translate(margin.left, margin.top);\n            // XXX: clip to right/bottom margin.  Make this optional?\n            page.rect(0, 0, contentWidth, contentHeight);\n            page.clip();\n        }\n\n        self.pages.push(page);\n        return page;\n    };\n\n    self.render = function() {\n        var i;\n        /// file header\n        out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n        /// file body\n        for (i = 0; i < objects.length; ++i) {\n            objects[i].renderFull(out);\n            out(NL, NL);\n        }\n\n        /// cross-reference table\n        var xrefOffset = out.offset();\n        out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n        out(\"0000000000 65535 f \", NL);\n        for (i = 0; i < objects.length; ++i) {\n            out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n        }\n        out(NL);\n\n        /// trailer\n        out(\"trailer\", NL);\n        out(new PDFDictionary({\n            Size: objects.length + 1,\n            Root: catalog,\n            Info: info\n        }), NL, NL);\n\n        /// end\n        out(\"startxref\", NL, xrefOffset, NL);\n        out(\"%%EOF\", NL);\n\n        return out.stream().offset(0);\n    };\n}\n\nvar FONT_CACHE = {\n    \"Times-Roman\"           : true,\n    \"Times-Bold\"            : true,\n    \"Times-Italic\"          : true,\n    \"Times-BoldItalic\"      : true,\n    \"Helvetica\"             : true,\n    \"Helvetica-Bold\"        : true,\n    \"Helvetica-Oblique\"     : true,\n    \"Helvetica-BoldOblique\" : true,\n    \"Courier\"               : true,\n    \"Courier-Bold\"          : true,\n    \"Courier-Oblique\"       : true,\n    \"Courier-BoldOblique\"   : true,\n    \"Symbol\"                : true,\n    \"ZapfDingbats\"          : true\n};\n\nfunction loadBinary(url, cont) {\n    // IE throws Accesss denied error for Data URIs\n    var m;\n    if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n        cont(base64ToUint8Array(url.substr(m[0].length)));\n        return;\n    }\n\n    function error() {\n        if (window.console) {\n            if (window.console.error) {\n                window.console.error(\"Cannot load URL: %s\", url);\n            } else {\n                window.console.log(\"Cannot load URL: %s\", url);\n            }\n        }\n        cont(null);\n    }\n    var req = new XMLHttpRequest();\n    req.open('GET', url, true);\n    if (HAS_TYPED_ARRAYS) {\n        req.responseType = \"arraybuffer\";\n    }\n    req.onload = function() {\n        if (req.status == 200 || req.status == 304) {\n            if (HAS_TYPED_ARRAYS) {\n                cont(new Uint8Array(req.response));\n            } else {\n                cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n            }\n        } else {\n            error();\n        }\n    };\n    req.onerror = error;\n    req.send(null);\n}\n\nfunction loadFont(url, cont) {\n    var font = FONT_CACHE[url];\n    if (font) {\n        cont(font);\n    } else {\n        loadBinary(url, function(data){\n            if (data == null) {\n                throw new Error(\"Cannot load font from \" + url);\n            } else {\n                var font = new TTFFont(data);\n                FONT_CACHE[url] = font;\n                cont(font);\n            }\n        });\n    }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n    IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont) {\n    var img = IMAGE_CACHE[url], bloburl, blob;\n    if (img) {\n        cont(img);\n    } else {\n        img = new Image();\n        if (!(/^data:/i.test(url))) {\n            img.crossOrigin = \"Anonymous\";\n        }\n        if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n            // IE10 fails to load images from another domain even when the server sends the\n            // proper CORS headers.  a XHR, however, will be able to load the data.\n            // http://stackoverflow.com/a/19734516/154985\n            //\n            // On the other hand, it's worth doing it this way for all browsers which support\n            // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n            // mime type and if it's a JPEG (very common case) we can save a lot of time in\n            // _load below.\n            var xhr = new XMLHttpRequest();\n            xhr.onload = function() {\n                blob = xhr.response;\n                bloburl = URL.createObjectURL(blob);\n                _load(bloburl);\n            };\n            xhr.onerror = _onerror;\n            xhr.open(\"GET\", url, true);\n            xhr.responseType = \"blob\";\n            xhr.send();\n        } else {\n            _load(url);\n        }\n    }\n\n    function _load(url) {\n        img.src = url;\n        if (img.complete && !browser.msie) {\n            // IE, bless it's little heart, says img.complete == true even though the image is\n            // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n            _onload();\n        } else {\n            img.onload = _onload;\n            img.onerror = _onerror;\n        }\n    }\n\n    function _trycanvas() {\n        if (!size) {\n            size = { width: img.width, height: img.height };\n        }\n\n        var canvas = document.createElement(\"canvas\");\n        canvas.width = size.width;\n        canvas.height = size.height;\n\n        var ctx = canvas.getContext(\"2d\");\n        ctx.drawImage(img, 0, 0, size.width, size.height);\n\n        var imgdata;\n        try {\n            imgdata = ctx.getImageData(0, 0, size.width, size.height);\n        } catch (ex) {\n            // it tainted the canvas -- can't draw it.\n            _onerror();\n            return;\n        } finally {\n            if (bloburl) {\n                URL.revokeObjectURL(bloburl);\n            }\n        }\n\n        // in case it contains transparency, we must separate rgb data from the alpha\n        // channel and create a PDFRawImage image with opacity.  otherwise we can use a\n        // PDFJpegImage.\n        //\n        // to do this in one step, we create the rgb and alpha streams anyway, even if\n        // we might end up not using them if hasAlpha remains false.\n\n        var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n        var rawbytes = imgdata.data;\n        var i = 0;\n        while (i < rawbytes.length) {\n            rgb.writeByte(rawbytes[i++]);\n            rgb.writeByte(rawbytes[i++]);\n            rgb.writeByte(rawbytes[i++]);\n            var a = rawbytes[i++];\n            if (a < 255) {\n                hasAlpha = true;\n            }\n            alpha.writeByte(a);\n        }\n\n        if (hasAlpha) {\n            img = new PDFRawImage(size.width, size.height, rgb, alpha);\n        } else {\n            // no transparency, encode as JPEG.\n            var data = canvas.toDataURL(\"image/jpeg\");\n            data = data.substr(data.indexOf(\";base64,\") + 8);\n\n            var stream = BinaryStream();\n            stream.writeBase64(data);\n            img = new PDFJpegImage(stream);\n        }\n\n        cont(IMAGE_CACHE[url] = img);\n    }\n\n    function _onerror() {\n        cont(IMAGE_CACHE[url] = \"ERROR\");\n    }\n\n    function _onload() {\n        if (size) {\n            // but if requested size is bigger than the image, just use the original image.\n            if (size.width >= img.width || size.height >= img.height) {\n                size = null;\n            }\n        }\n        if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n            // If we know we got a JPEG, we can skip the process of rendering it to a\n            // canvas, getting the pixel data, searching for transparency we know we won't\n            // find, getting back a data URI and then decoding the BASE64 to finally get the\n            // binary we already have.  Also, we avoid downgrading the image quality, with\n            // the possible drawback of making a bigger PDF; still, seems legit.\n            //\n            // Besides saving a lot of work, this also reuses the buffer memory\n            // (BinaryStream does not create a copy), potentially saving some GC cycles.\n            var reader = new FileReader();\n            reader.onload = function() {\n                try {\n                    var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n                    URL.revokeObjectURL(bloburl);\n                    cont(IMAGE_CACHE[url] = img);\n                } catch (ex) {\n                    // if there's an error parsing the JPEG stream, it could be due to a\n                    // misconfigured server (improper content-type:\n                    // https://github.com/telerik/kendo-ui-core/issues/4184).  If that's the case,\n                    // the canvas will still be able to draw it.\n                    _trycanvas();\n                }\n            };\n            reader.readAsArrayBuffer(blob);\n        } else {\n            _trycanvas();\n        }\n    }\n}\n\nfunction manyLoader(loadOne) {\n    return function(urls, callback) {\n        var n = urls.length, i = n;\n        if (n === 0) {\n            return callback();\n        }\n        function next() {\n            if (--n === 0) {\n                callback();\n            }\n        }\n        while (i-- > 0) {\n            loadOne(urls[i], next);\n        }\n    };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback) {\n    var urls = Object.keys(images), n = urls.length;\n    if (n === 0) {\n        return callback();\n    }\n    function next() {\n        if (--n === 0) {\n            callback();\n        }\n    }\n    urls.forEach(function(url){\n        loadImage(url, images[url], next);\n    });\n};\n\nPDFDocument.prototype = {\n    loadFonts: loadFonts,\n    loadImages: loadImages,\n\n    getFont: function(url) {\n        var font = this.FONTS[url];\n        if (!font) {\n            font = FONT_CACHE[url];\n            if (!font) {\n                throw new Error(\"Font \" + url + \" has not been loaded\");\n            }\n            if (font === true) {\n                font = this.attach(new PDFStandardFont(url));\n            } else {\n                font = this.attach(new PDFFont(this, font));\n            }\n            this.FONTS[url] = font;\n        }\n        return font;\n    },\n\n    getImage: function(url) {\n        var img = this.IMAGES[url];\n        if (!img) {\n            img = IMAGE_CACHE[url];\n            if (!img) {\n                throw new Error(\"Image \" + url + \" has not been loaded\");\n            }\n            if (img === \"ERROR\") {\n                return null;\n            }\n            img = this.IMAGES[url] = this.attach(img.asStream(this));\n        }\n        return img;\n    },\n\n    getOpacityGS: function(opacity, forStroke) {\n        var id = parseFloat(opacity).toFixed(3);\n        opacity = parseFloat(id);\n        id += forStroke ? \"S\" : \"F\";\n        var cache = this._opacityGSCache || (this._opacityGSCache = {});\n        var gs = cache[id];\n        if (!gs) {\n            var props = {\n                Type: _(\"ExtGState\")\n            };\n            if (forStroke) {\n                props.CA = opacity;\n            } else {\n                props.ca = opacity;\n            }\n            gs = this.attach(new PDFDictionary(props));\n            gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n            cache[id] = gs;\n        }\n        return gs;\n    },\n\n    dict: function(props) {\n        return new PDFDictionary(props);\n    },\n\n    name: function(str) {\n        return _(str);\n    },\n\n    stream: function(props, content) {\n        return new PDFStream(content, props);\n    }\n};\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n    while (str.length < len) {\n        str = ch + str;\n    }\n    return str;\n}\n\nfunction zeropad(n, len) {\n    return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n    return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n    return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n    out(\"[\");\n    if (a.length > 0) {\n        out.withIndent(function(){\n            for (var i = 0; i < a.length; ++i) {\n                if (i > 0 && i % 8 === 0) {\n                    out.indent(a[i]);\n                } else {\n                    out(\" \", a[i]);\n                }\n            }\n        });\n        //out.indent();\n    }\n    out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n    out(\"(D:\",\n        zeropad(date.getUTCFullYear(), 4),\n        zeropad(date.getUTCMonth() + 1, 2),\n        zeropad(date.getUTCDate(), 2),\n        zeropad(date.getUTCHours(), 2),\n        zeropad(date.getUTCMinutes(), 2),\n        zeropad(date.getUTCSeconds(), 2),\n        \"Z)\");\n}\n\nfunction mm2pt(mm) {\n    return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n    return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch)  {\n    return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n    if (typeof x == \"number\") {\n        return x;\n    }\n    if (typeof x == \"string\") {\n        var m;\n        m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n        if (m) {\n            var num = parseFloat(m[1]);\n            if (!isNaN(num)) {\n                if (m[2] == \"pt\") {\n                    return num;\n                }\n                return {\n                    \"mm\": mm2pt,\n                    \"cm\": cm2pt,\n                    \"in\": in2pt\n                }[m[2]](num);\n            }\n        }\n    }\n    if (def != null) {\n        return def;\n    }\n    throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nfunction PDFValue(){}\n\nPDFValue.prototype.beforeRender = function(){};\n\nfunction defclass(Ctor, proto, Base) {\n    if (!Base) {\n        Base = PDFValue;\n    }\n    Ctor.prototype = new Base();\n    for (var i in proto) {\n        if (hasOwnProperty(proto, i)) {\n            Ctor.prototype[i] = proto[i];\n        }\n    }\n    return Ctor;\n}\n\nvar PDFString = defclass(function PDFString(value, utf16be){\n    this.value = value;\n    this.utf16be = Boolean(utf16be);\n}, {\n    render: function(out) {\n        var txt = this.value;\n        if (txt.length > 0) {\n            txt = this.value.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n\n            if (this.utf16be) {\n                txt = BOM + encodeUTF16BE(txt);\n            }\n        }\n\n        out(\"(\", txt, \")\");\n    },\n    toString: function() {\n        return this.value;\n    }\n});\n\nvar PDFHexString = defclass(function PDFHexString(value){\n    this.value = value;\n}, {\n    render: function(out) {\n        var this$1 = this;\n\n        out(\"<\");\n        for (var i = 0; i < this.value.length; ++i) {\n            out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n        }\n        out(\">\");\n    }\n}, PDFString);\n\n/// names\n\nvar PDFName = defclass(function PDFName(name) {\n    this.name = name;\n}, {\n    render: function(out) {\n        out(\"/\" + this.escape());\n    },\n    escape: function() {\n        return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n            return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n        });\n    },\n    toString: function() {\n        return this.name;\n    }\n});\n\nvar PDFName_cache = {};\nPDFName.get = _;\n\nfunction _(name) {\n    if (hasOwnProperty(PDFName_cache, name)) {\n        return PDFName_cache[name];\n    }\n    return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nvar PDFDictionary = defclass(function PDFDictionary(props) {\n    this.props = props;\n}, {\n    render: function(out) {\n        var props = this.props, empty = true;\n        out(\"<<\");\n        out.withIndent(function(){\n            for (var i in props) {\n                if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n                    empty = false;\n                    out.indent(_(i), \" \", props[i]);\n                }\n            }\n        });\n        if (!empty) {\n            out.indent();\n        }\n        out(\">>\");\n    }\n});\n\n/// streams\n\nvar PDFStream = defclass(function PDFStream(data, props, compress) {\n    if (typeof data == \"string\") {\n        var tmp = BinaryStream();\n        tmp.write(data);\n        data = tmp;\n    }\n    this.data = data;\n    this.props = props || {};\n    this.compress = compress;\n}, {\n    render: function(out) {\n        var data = this.data.get(), props = this.props;\n        if (this.compress && supportsDeflate()) {\n            if (!props.Filter) {\n                props.Filter = [];\n            } else if (!(props.Filter instanceof Array)) {\n                props.Filter = [ props.Filter ];\n            }\n            props.Filter.unshift(_(\"FlateDecode\"));\n            data = deflate(data);\n        }\n        props.Length = data.length;\n        out(new PDFDictionary(props), \" stream\", NL);\n        out.writeData(data);\n        out(NL, \"endstream\");\n    }\n});\n\n/// catalog\n\nvar PDFCatalog = defclass(function PDFCatalog(){\n    this.props = {\n        Type: _(\"Catalog\")\n    };\n}, {\n    setPages: function(pagesObj) {\n        this.props.Pages = pagesObj;\n    }\n}, PDFDictionary);\n\n/// page tree\n\nvar PDFPageTree = defclass(function PDFPageTree(){\n    this.props = {\n        Type  : _(\"Pages\"),\n        Kids  : [],\n        Count : 0\n    };\n}, {\n    addPage: function(pageObj) {\n        this.props.Kids.push(pageObj);\n        this.props.Count++;\n    }\n}, PDFDictionary);\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nfunction PDFJpegImage(data) {\n    // we must determine the correct color space.  we'll parse a bit\n    // of the JPEG stream for this, it's still better than going\n    // through the canvas.\n    // https://github.com/telerik/kendo-ui-core/issues/2845\n    data.offset(0);\n    var width, height, colorSpace, bitsPerComponent;\n    var soi = data.readShort();\n    if (soi != 0xFFD8) {\n        // XXX: do we have some better options here?\n        throw new Error(\"Invalid JPEG image\");\n    }\n    while (!data.eof()) {\n        var ff = data.readByte();\n        if (ff != 0xFF) {\n            throw new Error(\"Invalid JPEG image\");\n        }\n        var marker = data.readByte();\n        var length = data.readShort();\n        if (SOF_CODES.indexOf(marker) >= 0) {\n            // \"start of frame\" marker\n            bitsPerComponent = data.readByte();\n            height = data.readShort();\n            width = data.readShort();\n            colorSpace = data.readByte();\n            break;\n        }\n        data.skip(length - 2);\n    }\n\n    if (colorSpace == null) {\n        throw new Error(\"Invalid JPEG image\");\n    }\n\n    var props = {\n        Type             : _(\"XObject\"),\n        Subtype          : _(\"Image\"),\n        Width            : width,\n        Height           : height,\n        BitsPerComponent : bitsPerComponent,\n        Filter           : _(\"DCTDecode\")\n    };\n\n    switch (colorSpace) {\n      case 1:\n        props.ColorSpace = _(\"DeviceGray\");\n        break;\n      case 3:\n        props.ColorSpace = _(\"DeviceRGB\");\n        break;\n      case 4:\n        props.ColorSpace = _(\"DeviceCMYK\");\n        props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n        break;\n    }\n\n    this.asStream = function() {\n        data.offset(0);\n        var stream = new PDFStream(data, props);\n        stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n        return stream;\n    };\n}\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nfunction PDFRawImage(width, height, rgb, alpha) {\n    this.asStream = function(pdf) {\n        var mask = new PDFStream(alpha, {\n            Type             : _(\"XObject\"),\n            Subtype          : _(\"Image\"),\n            Width            : width,\n            Height           : height,\n            BitsPerComponent : 8,\n            ColorSpace       : _(\"DeviceGray\")\n        }, true);\n        var stream = new PDFStream(rgb, {\n            Type             : _(\"XObject\"),\n            Subtype          : _(\"Image\"),\n            Width            : width,\n            Height           : height,\n            BitsPerComponent : 8,\n            ColorSpace       : _(\"DeviceRGB\"),\n            SMask            : pdf.attach(mask)\n        }, true);\n        stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n        return stream;\n    };\n}\n\n/// standard fonts\n\nvar PDFStandardFont = defclass(function PDFStandardFont(name){\n    this.props = {\n        Type     : _(\"Font\"),\n        Subtype  : _(\"Type1\"),\n        BaseFont : _(name)\n    };\n    this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n}, {\n    encodeText: function(str) {\n        return new PDFString(String(str));\n    }\n}, PDFDictionary);\n\n/// TTF fonts\n\nvar PDFFont = defclass(function PDFFont(pdf, font, props){\n    props = this.props = props || {};\n    props.Type = _(\"Font\");\n    props.Subtype = _(\"Type0\");\n    props.Encoding = _(\"Identity-H\");\n\n    this._pdf = pdf;\n    this._font = font;\n    this._sub = font.makeSubset();\n    this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n    var head = font.head;\n\n    this.name = font.psName;\n    var scale = this.scale = font.scale;\n    this.bbox = [\n        head.xMin * scale,\n        head.yMin * scale,\n        head.xMax * scale,\n        head.yMax * scale\n    ];\n\n    this.italicAngle = font.post.italicAngle;\n    this.ascent = font.ascent * scale;\n    this.descent = font.descent * scale;\n    this.lineGap = font.lineGap * scale;\n    this.capHeight = font.os2.capHeight || this.ascent;\n    this.xHeight = font.os2.xHeight || 0;\n    this.stemV = 0;\n\n    this.familyClass = (font.os2.familyClass || 0) >> 8;\n    this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n    this.isScript = this.familyClass == 10;\n\n    this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n                  (this.isSerif ? 1 << 1 : 0) |\n                  (this.isScript ? 1 << 3 : 0) |\n                  (this.italicAngle !== 0 ? 1 << 6 : 0) |\n                  (1 << 5));\n}, {\n    encodeText: function(text) {\n        return new PDFHexString(this._sub.encodeText(String(text)));\n    },\n    getTextWidth: function(fontSize, text) {\n        var this$1 = this;\n\n        var width = 0, codeMap = this._font.cmap.codeMap;\n        for (var i = 0; i < text.length; ++i) {\n            var glyphId = codeMap[text.charCodeAt(i)];\n            width += this$1._font.widthOfGlyph(glyphId || 0);\n        }\n        return width * fontSize / 1000;\n    },\n    beforeRender: function() {\n        var self = this;\n        var sub = self._sub;\n\n        // write the TTF data\n        var data = sub.render();\n        var fontStream = new PDFStream(BinaryStream(data), {\n            Length1: data.length\n        }, true);\n\n        var descriptor = self._pdf.attach(new PDFDictionary({\n            Type         : _(\"FontDescriptor\"),\n            FontName     : _(self._sub.psName),\n            FontBBox     : self.bbox,\n            Flags        : self.flags,\n            StemV        : self.stemV,\n            ItalicAngle  : self.italicAngle,\n            Ascent       : self.ascent,\n            Descent      : self.descent,\n            CapHeight    : self.capHeight,\n            XHeight      : self.xHeight,\n            FontFile2    : self._pdf.attach(fontStream)\n        }));\n\n        var cmap = sub.ncid2ogid;\n        var firstChar = sub.firstChar;\n        var lastChar = sub.lastChar;\n        var charWidths = [];\n        (function loop(i, chunk){\n            if (i <= lastChar) {\n                var gid = cmap[i];\n                if (gid == null) {\n                    loop(i + 1);\n                } else {\n                    if (!chunk) {\n                        charWidths.push(i, chunk = []);\n                    }\n                    chunk.push(self._font.widthOfGlyph(gid));\n                    loop(i + 1, chunk);\n                }\n            }\n        })(firstChar);\n\n        // As if two dictionaries weren't enough, we need another\n        // one, the \"descendant font\".  Only that one can be of\n        // Subtype CIDFontType2.  PDF is the X11 of document\n        // formats: portable but full of legacy that nobody cares\n        // about anymore.\n\n        var descendant = new PDFDictionary({\n            Type: _(\"Font\"),\n            Subtype: _(\"CIDFontType2\"),\n            BaseFont: _(self._sub.psName),\n            CIDSystemInfo: new PDFDictionary({\n                Registry   : new PDFString(\"Adobe\"),\n                Ordering   : new PDFString(\"Identity\"),\n                Supplement : 0\n            }),\n            FontDescriptor: descriptor,\n            FirstChar: firstChar,\n            LastChar: lastChar,\n            DW: Math.round(self._font.widthOfGlyph(0)),\n            W: charWidths,\n            CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n        });\n\n        var dict = self.props;\n        dict.BaseFont = _(self._sub.psName);\n        dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n        // Compute the ToUnicode map so that apps can extract\n        // meaningful text from the PDF.\n        var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n        var unimapStream = new PDFStream(makeOutput(), null, true);\n        unimapStream.data(unimap);\n        dict.ToUnicode = self._pdf.attach(unimapStream);\n    },\n    _makeCidToGidMap: function() {\n        return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n    }\n}, PDFDictionary);\n\nvar PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map){\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n    this.map = map;\n}, {\n    render: function(out) {\n        out.indent(\"/CIDInit /ProcSet findresource begin\");\n        out.indent(\"12 dict begin\");\n        out.indent(\"begincmap\");\n        out.indent(\"/CIDSystemInfo <<\");\n        out.indent(\"  /Registry (Adobe)\");\n        out.indent(\"  /Ordering (UCS)\");\n        out.indent(\"  /Supplement 0\");\n        out.indent(\">> def\");\n        out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n        out.indent(\"/CMapType 2 def\");\n        out.indent(\"1 begincodespacerange\");\n        out.indent(\"  <0000><ffff>\");\n        out.indent(\"endcodespacerange\");\n\n        var self = this;\n        out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n        out.withIndent(function(){\n            for (var code = self.firstChar; code <= self.lastChar; ++code) {\n                var unicode = self.map[code];\n                var str = ucs2encode([ unicode ]);\n                out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n                for (var i = 0; i < str.length; ++i) {\n                    out(zeropad(str.charCodeAt(i).toString(16), 4));\n                }\n                out(\">\");\n            }\n        });\n        out.indent(\"endbfchar\");\n\n        out.indent(\"endcmap\");\n        out.indent(\"CMapName currentdict /CMap defineresource pop\");\n        out.indent(\"end\");\n        out.indent(\"end\");\n    }\n});\n\n/// gradients\n\nfunction makeHash(a) {\n    return a.map(function(x){\n        return isArray(x) ? makeHash(x)\n            : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n            : x;\n    }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n    var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n    var func = pdf.GRAD_COL_FUNCTIONS[hash];\n    if (!func) {\n        func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n            FunctionType: 2,\n            Domain: [ 0, 1 ],\n            Range: [ 0, 1, 0, 1, 0, 1 ],\n            N: 1,\n            C0: [ r1 , g1 , b1 ],\n            C1: [ r2 , g2 , b2 ]\n        }));\n    }\n    return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n    var hash = makeHash([ a1, a2 ]);\n    var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n    if (!func) {\n        func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n            FunctionType: 2,\n            Domain: [ 0, 1 ],\n            Range: [ 0, 1 ],\n            N: 1,\n            C0: [ a1 ],\n            C1: [ a2 ]\n        }));\n    }\n    return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n    var hasAlpha = false;\n    var opacities = [];\n    var colors = [];\n    var offsets = [];\n    var encode = [];\n    var i, prev, cur, prevColor, curColor;\n    for (i = 1; i < stops.length; ++i) {\n        prev = stops[i - 1];\n        cur = stops[i];\n        prevColor = prev.color;\n        curColor = cur.color;\n        colors.push(cacheColorGradientFunction(\n            pdf,\n            prevColor.r, prevColor.g, prevColor.b,\n            curColor.r,  curColor.g,  curColor.b\n        ));\n        if (prevColor.a < 1 || curColor.a < 1) {\n            hasAlpha = true;\n        }\n        offsets.push(cur.offset);\n        encode.push(0, 1);\n    }\n    if (hasAlpha) {\n        for (i = 1; i < stops.length; ++i) {\n            prev = stops[i - 1];\n            cur = stops[i];\n            prevColor = prev.color;\n            curColor = cur.color;\n            opacities.push(cacheOpacityGradientFunction(\n                pdf, prevColor.a, curColor.a\n            ));\n        }\n    }\n    offsets.pop();\n    return {\n        hasAlpha  : hasAlpha,\n        colors    : assemble(colors),\n        opacities : hasAlpha ? assemble(opacities) : null\n    };\n    function assemble(funcs) {\n        if (funcs.length == 1) {\n            return funcs[0];\n        }\n        return {\n            FunctionType: 3,\n            Functions: funcs,\n            Domain: [ 0, 1 ],\n            Bounds: offsets,\n            Encode: encode\n        };\n    }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n    var shading, hash;\n    // if box is given then we have user-space coordinates, which\n    // means the gradient is designed for a certain position/size\n    // on page.  caching won't do any good.\n    if (!box) {\n        var a = [ isRadial ].concat(coords);\n        stops.forEach(function(x){\n            a.push(x.offset, x.color.r, x.color.g, x.color.b);\n        });\n        hash = makeHash(a);\n        shading = pdf.GRAD_COL[hash];\n    }\n    if (!shading) {\n        shading = new PDFDictionary({\n            Type: _(\"Shading\"),\n            ShadingType: isRadial ? 3 : 2,\n            ColorSpace: _(\"DeviceRGB\"),\n            Coords: coords,\n            Domain: [ 0, 1 ],\n            Function: funcs,\n            Extend: [ true, true ]\n        });\n        pdf.attach(shading);\n        shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n        if (hash) {\n            pdf.GRAD_COL[hash] = shading;\n        }\n    }\n    return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n    var opacity, hash;\n    // if box is given then we have user-space coordinates, which\n    // means the gradient is designed for a certain position/size\n    // on page.  caching won't do any good.\n    if (!box) {\n        var a = [ isRadial ].concat(coords);\n        stops.forEach(function(x){\n            a.push(x.offset, x.color.a);\n        });\n        hash = makeHash(a);\n        opacity = pdf.GRAD_OPC[hash];\n    }\n    if (!opacity) {\n        opacity = new PDFDictionary({\n            Type: _(\"ExtGState\"),\n            AIS: false,\n            CA: 1,\n            ca: 1,\n            SMask: {\n                Type: _(\"Mask\"),\n                S: _(\"Luminosity\"),\n                G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n                    Type: _(\"XObject\"),\n                    Subtype: _(\"Form\"),\n                    FormType: 1,\n                    BBox: (box ? [\n                        box.left, box.top + box.height, box.left + box.width, box.top\n                    ] : [ 0, 1, 1, 0 ]),\n                    Group: {\n                        Type: _(\"Group\"),\n                        S: _(\"Transparency\"),\n                        CS: _(\"DeviceGray\"),\n                        I: true\n                    },\n                    Resources: {\n                        ExtGState: {\n                            a0: { CA: 1, ca: 1 }\n                        },\n                        Shading: {\n                            s0: {\n                                ColorSpace: _(\"DeviceGray\"),\n                                Coords: coords,\n                                Domain: [ 0, 1 ],\n                                ShadingType: isRadial ? 3 : 2,\n                                Function: funcs,\n                                Extend: [ true, true ]\n                            }\n                        }\n                    }\n                }))\n            }\n        });\n        pdf.attach(opacity);\n        opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n        if (hash) {\n            pdf.GRAD_OPC[hash] = opacity;\n        }\n    }\n    return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n    var isRadial = gradient.type == \"radial\";\n    var funcs = makeGradientFunctions(pdf, gradient.stops);\n    var coords = isRadial ? [\n        gradient.start.x , gradient.start.y , gradient.start.r,\n        gradient.end.x   , gradient.end.y   , gradient.end.r\n    ] : [\n        gradient.start.x , gradient.start.y,\n        gradient.end.x   , gradient.end.y\n    ];\n    var shading = cacheColorGradient(\n        pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n    );\n    var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n        pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n    ) : null;\n    return {\n        hasAlpha: funcs.hasAlpha,\n        shading: shading,\n        opacity: opacity\n    };\n}\n\n/// page object\n\nvar PDFPage = defclass(function PDFPage(pdf, props){\n    this._pdf = pdf;\n    this._rcount = 0;\n    this._textMode = false;\n    this._fontResources = {};\n    this._gsResources = {};\n    this._xResources = {};\n    this._patResources = {};\n    this._shResources = {};\n    this._opacity = 1;\n    this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n    this._annotations = [];\n\n    this._font = null;\n    this._fontSize = null;\n\n    this._contextStack = [];\n\n    props = this.props = props || {};\n    props.Type = _(\"Page\");\n    props.ProcSet = [\n        _(\"PDF\"),\n        _(\"Text\"),\n        _(\"ImageB\"),\n        _(\"ImageC\"),\n        _(\"ImageI\")\n    ];\n    props.Resources = new PDFDictionary({\n        Font      : new PDFDictionary(this._fontResources),\n        ExtGState : new PDFDictionary(this._gsResources),\n        XObject   : new PDFDictionary(this._xResources),\n        Pattern   : new PDFDictionary(this._patResources),\n        Shading   : new PDFDictionary(this._shResources)\n    });\n    props.Annots = this._annotations;\n}, {\n    _out: function() {\n        this._content.data.apply(null, arguments);\n    },\n    transform: function(a, b, c, d, e, f) {\n        if (!isIdentityMatrix(arguments)) {\n            this._matrix = mmul(arguments, this._matrix);\n            this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n            // XXX: debug\n            // this._out(\" % current matrix: \", this._matrix);\n            this._out(NL);\n        }\n    },\n    translate: function(dx, dy) {\n        this.transform(1, 0, 0, 1, dx, dy);\n    },\n    scale: function(sx, sy) {\n        this.transform(sx, 0, 0, sy, 0, 0);\n    },\n    rotate: function(angle) {\n        var cos = Math.cos(angle), sin = Math.sin(angle);\n        this.transform(cos, sin, -sin, cos, 0, 0);\n    },\n    beginText: function() {\n        this._textMode = true;\n        this._out(\"BT\", NL);\n    },\n    endText: function() {\n        this._textMode = false;\n        this._out(\"ET\", NL);\n    },\n    _requireTextMode: function() {\n        if (!this._textMode) {\n            throw new Error(\"Text mode required; call page.beginText() first\");\n        }\n    },\n    _requireFont: function() {\n        if (!this._font) {\n            throw new Error(\"No font selected; call page.setFont() first\");\n        }\n    },\n    setFont: function(font, size) {\n        this._requireTextMode();\n        if (font == null) {\n            font = this._font;\n        } else if (!(font instanceof PDFFont)) {\n            font = this._pdf.getFont(font);\n        }\n        if (size == null) {\n            size = this._fontSize;\n        }\n        this._fontResources[font._resourceName] = font;\n        this._font = font;\n        this._fontSize = size;\n        this._out(font._resourceName, \" \", size, \" Tf\", NL);\n    },\n    setTextLeading: function(size) {\n        this._requireTextMode();\n        this._out(size, \" TL\", NL);\n    },\n    setTextRenderingMode: function(mode) {\n        this._requireTextMode();\n        this._out(mode, \" Tr\", NL);\n    },\n    showText: function(text, requestedWidth) {\n        this._requireFont();\n        if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n            var outputWidth = this._font.getTextWidth(this._fontSize, text);\n            var scale = requestedWidth / outputWidth * 100;\n            this._out(scale, \" Tz \");\n        }\n        this._out(this._font.encodeText(text), \" Tj\", NL);\n    },\n    showTextNL: function(text) {\n        this._requireFont();\n        this._out(this._font.encodeText(text), \" '\", NL);\n    },\n    addLink: function(uri, box) {\n        var ll = this._toPage({ x: box.left, y: box.bottom });\n        var ur = this._toPage({ x: box.right, y: box.top });\n        this._annotations.push(new PDFDictionary({\n            Type    : _(\"Annot\"),\n            Subtype : _(\"Link\"),\n            Rect    : [ ll.x, ll.y, ur.x, ur.y ],\n            Border  : [ 0, 0, 0 ],\n            A       : new PDFDictionary({\n                Type : _(\"Action\"),\n                S    : _(\"URI\"),\n                URI  : new PDFString(uri)\n            })\n        }));\n    },\n    setStrokeColor: function(r, g, b) {\n        this._out(r, \" \", g, \" \", b, \" RG\", NL);\n    },\n    setOpacity: function(opacity) {\n        this.setFillOpacity(opacity);\n        this.setStrokeOpacity(opacity);\n        this._opacity *= opacity;\n    },\n    setStrokeOpacity: function(opacity) {\n        if (opacity < 1) {\n            var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n            this._gsResources[gs._resourceName] = gs;\n            this._out(gs._resourceName, \" gs\", NL);\n        }\n    },\n    setFillColor: function(r, g, b) {\n        this._out(r, \" \", g, \" \", b, \" rg\", NL);\n    },\n    setFillOpacity: function(opacity) {\n        if (opacity < 1) {\n            var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n            this._gsResources[gs._resourceName] = gs;\n            this._out(gs._resourceName, \" gs\", NL);\n        }\n    },\n    gradient: function(gradient, box) {\n        this.save();\n        this.rect(box.left, box.top, box.width, box.height);\n        this.clip();\n        if (!gradient.userSpace) {\n            this.transform(box.width, 0, 0, box.height, box.left, box.top);\n        }\n        var g = cacheGradient(this._pdf, gradient, box);\n        var sname = g.shading._resourceName, oname;\n        this._shResources[sname] = g.shading;\n        if (g.hasAlpha) {\n            oname = g.opacity._resourceName;\n            this._gsResources[oname] = g.opacity;\n            this._out(\"/\" + oname + \" gs \");\n        }\n        this._out(\"/\" + sname + \" sh\", NL);\n        this.restore();\n    },\n    setDashPattern: function(dashArray, dashPhase) {\n        this._out(dashArray, \" \", dashPhase, \" d\", NL);\n    },\n    setLineWidth: function(width) {\n        this._out(width, \" w\", NL);\n    },\n    setLineCap: function(lineCap) {\n        this._out(lineCap, \" J\", NL);\n    },\n    setLineJoin: function(lineJoin) {\n        this._out(lineJoin, \" j\", NL);\n    },\n    setMitterLimit: function(mitterLimit) {\n        this._out(mitterLimit, \" M\", NL);\n    },\n    save: function() {\n        this._contextStack.push(this._context());\n        this._out(\"q\", NL);\n    },\n    restore: function() {\n        this._out(\"Q\", NL);\n        this._context(this._contextStack.pop());\n    },\n\n    // paths\n    moveTo: function(x, y) {\n        this._out(x, \" \", y, \" m\", NL);\n    },\n    lineTo: function(x, y) {\n        this._out(x, \" \", y, \" l\", NL);\n    },\n    bezier: function(x1, y1, x2, y2, x3, y3) {\n        this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n    },\n    bezier1: function(x1, y1, x3, y3) {\n        this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n    },\n    bezier2: function(x2, y2, x3, y3) {\n        this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n    },\n    close: function() {\n        this._out(\"h\", NL);\n    },\n    rect: function(x, y, w, h) {\n        this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n    },\n    ellipse: function(x, y, rx, ry) {\n        function _X(v) { return x + v; }\n        function _Y(v) { return y + v; }\n\n        // how to get to the \"magic number\" is explained here:\n        // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n        var k = 0.5522847498307936;\n\n        this.moveTo(_X(0), _Y(ry));\n        this.bezier(\n            _X(rx * k) , _Y(ry),\n            _X(rx)     , _Y(ry * k),\n            _X(rx)     , _Y(0)\n        );\n        this.bezier(\n            _X(rx)     , _Y(-ry * k),\n            _X(rx * k) , _Y(-ry),\n            _X(0)      , _Y(-ry)\n        );\n        this.bezier(\n            _X(-rx * k) , _Y(-ry),\n            _X(-rx)     , _Y(-ry * k),\n            _X(-rx)     , _Y(0)\n        );\n        this.bezier(\n            _X(-rx)     , _Y(ry * k),\n            _X(-rx * k) , _Y(ry),\n            _X(0)       , _Y(ry)\n        );\n    },\n    circle: function(x, y, r) {\n        this.ellipse(x, y, r, r);\n    },\n    stroke: function() {\n        this._out(\"S\", NL);\n    },\n    nop: function() {\n        this._out(\"n\", NL);\n    },\n    clip: function() {\n        this._out(\"W n\", NL);\n    },\n    clipStroke: function() {\n        this._out(\"W S\", NL);\n    },\n    closeStroke: function() {\n        this._out(\"s\", NL);\n    },\n    fill: function() {\n        this._out(\"f\", NL);\n    },\n    fillStroke: function() {\n        this._out(\"B\", NL);\n    },\n    drawImage: function(url) {\n        var img = this._pdf.getImage(url);\n        if (img) { // the result can be null for a cross-domain image\n            this._xResources[img._resourceName] = img;\n            this._out(img._resourceName, \" Do\", NL);\n        }\n    },\n    comment: function(txt) {\n        var self = this;\n        txt.split(/\\r?\\n/g).forEach(function(line){\n            self._out(\"% \", line, NL);\n        });\n    },\n\n    // internal\n    _context: function(val) {\n        if (val != null) {\n            this._opacity = val.opacity;\n            this._matrix = val.matrix;\n        } else {\n            return {\n                opacity: this._opacity,\n                matrix: this._matrix\n            };\n        }\n    },\n\n    _toPage: function(p) {\n        var m = this._matrix;\n        var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n        return {\n            x: a*p.x + c*p.y + e,\n            y: b*p.x + d*p.y + f\n        };\n    }\n}, PDFDictionary);\n\nfunction unquote(str) {\n    return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n    // XXX: this is very crude for now and buggy.  Proper parsing is quite involved.\n    var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n    var m = rx.exec(fontdef);\n    if (!m) {\n        return { fontSize: 12, fontFamily: \"sans-serif\" };\n    }\n    var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n    return {\n        italic     : m[2] && m[2].toLowerCase() == \"italic\",\n        variant    : m[4],\n        bold       : m[6] && /bold|700/i.test(m[6]),\n        fontSize   : fontSize,\n        lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n        fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n    };\n}\n\nfunction getFontURL(style) {\n    function mkFamily(name) {\n        if (style.bold) {\n            name += \"|bold\";\n        }\n        if (style.italic) {\n            name += \"|italic\";\n        }\n        return name.toLowerCase();\n    }\n    var fontFamily = style.fontFamily;\n    var name, url;\n    if (fontFamily instanceof Array) {\n        for (var i = 0; i < fontFamily.length; ++i) {\n            name = mkFamily(fontFamily[i]);\n            url = FONT_MAPPINGS[name];\n            if (url) {\n                break;\n            }\n        }\n    } else {\n        url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n    }\n    while (typeof url == \"function\") {\n        url = url();\n    }\n    if (!url) {\n        url = \"Times-Roman\";\n    }\n    return url;\n}\n\nvar FONT_MAPPINGS = {\n    \"serif\"                    : \"Times-Roman\",\n    \"serif|bold\"               : \"Times-Bold\",\n    \"serif|italic\"             : \"Times-Italic\",\n    \"serif|bold|italic\"        : \"Times-BoldItalic\",\n    \"sans-serif\"               : \"Helvetica\",\n    \"sans-serif|bold\"          : \"Helvetica-Bold\",\n    \"sans-serif|italic\"        : \"Helvetica-Oblique\",\n    \"sans-serif|bold|italic\"   : \"Helvetica-BoldOblique\",\n    \"monospace\"                : \"Courier\",\n    \"monospace|bold\"           : \"Courier-Bold\",\n    \"monospace|italic\"         : \"Courier-Oblique\",\n    \"monospace|bold|italic\"    : \"Courier-BoldOblique\",\n    \"zapfdingbats\"             : \"ZapfDingbats\",\n    \"zapfdingbats|bold\"        : \"ZapfDingbats\",\n    \"zapfdingbats|italic\"      : \"ZapfDingbats\",\n    \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n    alias = alias.toLowerCase();\n    FONT_MAPPINGS[alias] = function() {\n        return FONT_MAPPINGS[name];\n    };\n    FONT_MAPPINGS[alias + \"|bold\"] = function() {\n        return FONT_MAPPINGS[name + \"|bold\"];\n    };\n    FONT_MAPPINGS[alias + \"|italic\"] = function() {\n        return FONT_MAPPINGS[name + \"|italic\"];\n    };\n    FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n        return FONT_MAPPINGS[name + \"|bold|italic\"];\n    };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\"     , \"monospace\");\nfontAlias(\"Arial\"           , \"sans-serif\");\nfontAlias(\"Helvetica\"       , \"sans-serif\");\nfontAlias(\"Verdana\"         , \"sans-serif\");\nfontAlias(\"Tahoma\"          , \"sans-serif\");\nfontAlias(\"Georgia\"         , \"sans-serif\");\nfontAlias(\"Monaco\"          , \"monospace\");\nfontAlias(\"Andale Mono\"     , \"monospace\");\n\nfunction defineFont(name, url) {\n    if (arguments.length == 1) {\n        for (var i in name) {\n            if (hasOwnProperty(name, i)) {\n                defineFont(i, name[i]);\n            }\n        }\n    } else {\n        name = name.toLowerCase();\n        FONT_MAPPINGS[name] = url;\n\n        // special handling for DejaVu fonts: if they get defined,\n        // let them also replace the default families, for good\n        // Unicode support out of the box.\n        switch (name) {\n          case \"dejavu sans\"               : FONT_MAPPINGS[\"sans-serif\"]              = url; break;\n          case \"dejavu sans|bold\"          : FONT_MAPPINGS[\"sans-serif|bold\"]         = url; break;\n          case \"dejavu sans|italic\"        : FONT_MAPPINGS[\"sans-serif|italic\"]       = url; break;\n          case \"dejavu sans|bold|italic\"   : FONT_MAPPINGS[\"sans-serif|bold|italic\"]  = url; break;\n          case \"dejavu serif\"              : FONT_MAPPINGS[\"serif\"]                   = url; break;\n          case \"dejavu serif|bold\"         : FONT_MAPPINGS[\"serif|bold\"]              = url; break;\n          case \"dejavu serif|italic\"       : FONT_MAPPINGS[\"serif|italic\"]            = url; break;\n          case \"dejavu serif|bold|italic\"  : FONT_MAPPINGS[\"serif|bold|italic\"]       = url; break;\n          case \"dejavu mono\"               : FONT_MAPPINGS[\"monospace\"]               = url; break;\n          case \"dejavu mono|bold\"          : FONT_MAPPINGS[\"monospace|bold\"]          = url; break;\n          case \"dejavu mono|italic\"        : FONT_MAPPINGS[\"monospace|italic\"]        = url; break;\n          case \"dejavu mono|bold|italic\"   : FONT_MAPPINGS[\"monospace|bold|italic\"]   = url; break;\n        }\n    }\n}\n\nfunction mmul(a, b) {\n    var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n    var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n    return [\n        a1*a2 + b1*c2,          a1*b2 + b1*d2,\n        c1*a2 + d1*c2,          c1*b2 + d1*d2,\n        e1*a2 + f1*c2 + e2,     e1*b2 + f1*d2 + f2\n    ];\n}\n\nfunction isIdentityMatrix(m) {\n    return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n    fill           : 0,\n    stroke         : 1,\n    fillAndStroke  : 2,\n    invisible      : 3,\n    fillAndClip    : 4,\n    strokeAndClip  : 5,\n    fillStrokeClip : 6,\n    clip           : 7\n};\n\nexport {\n    PDFDocument as Document,\n    BinaryStream,\n    defineFont,\n    parseFontDef,\n    getFontURL,\n    loadFonts,\n    loadImages,\n    getPaperOptions,\n    clearImageCache,\n    TEXT_RENDERING_MODE\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\n\nvar browser = support.browser || {};\n/*\n\n  XXX: to test:\n\n  - cloneNodes function:\n    - drawing document containing canvas with page breaking\n    - drawing document with named radio <input>-s (should not clear selection)\n    - IE9/IE10 don't support el.dataset; do they copy user data?\n\n  - repeating table headers/footers on page breaking\n\n  - forceBreak, keepTogether\n\n  - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n    return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = (function (Text) {\n  function TextRect(str, rect, options) {\n        Text.call(this, str, rect.getOrigin(), options);\n        this._pdfRect = rect;\n    }\n\n  if ( Text ) TextRect.__proto__ = Text;\n  TextRect.prototype = Object.create( Text && Text.prototype );\n  TextRect.prototype.constructor = TextRect;\n    TextRect.prototype.rect = function rect () {\n        // this is the crux of it: we can avoid a call to\n        // measure(), which is what the base class does, since we\n        // already know the rect.  measure() is s-l-o-w.\n        return this._pdfRect;\n    };\n    TextRect.prototype.rawBBox = function rawBBox () {\n        // also let's avoid creating a new rectangle.\n        return this._pdfRect;\n    };\n\n  return TextRect;\n}(Text));\n\nfunction addClass(el, cls) {\n    if (el.classList) {\n        el.classList.add(cls);\n    } else {\n        el.className += \" \" + cls;\n    }\n}\n\nfunction removeClass(el, cls) {\n    if (el.classList) {\n        el.classList.remove(cls);\n    } else {\n        el.className = el.className.split(/\\s+/).reduce(function(a, word){\n            if (word != cls) {\n                a.push(word);\n            }\n            return a;\n        }, []).join(\" \");\n    }\n}\n\nfunction setCSS(el, styles) {\n    Object.keys(styles).forEach(function(key){\n        el.style[key] = styles[key];\n    });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n    if (p.matches) {\n        return function(el, selector) { return el.matches(selector); };\n    }\n    if (p.webkitMatchesSelector) {\n        return function(el, selector) { return el.webkitMatchesSelector(selector); };\n    }\n    if (p.mozMatchesSelector) {\n        return function(el, selector) { return el.mozMatchesSelector(selector); };\n    }\n    if (p.msMatchesSelector) {\n        return function(el, selector) { return el.msMatchesSelector(selector); };\n    }\n    return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n    };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n    if (el.closest) {\n        return el.closest(selector);\n    }\n    // IE: stringifying rather than simply comparing with `document`,\n    // which is not iframe-proof and fails in editor export —\n    // https://github.com/telerik/kendo/issues/6721\n    while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n        if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n            return el;\n        }\n        el = el.parentNode;\n    }\n}\n\n// clone nodes ourselves, so that we redraw <canvas> (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n    if ($) {\n        // if we have Kendo and jQuery, use this version as it will\n        // maintain proper links between cloned element and Kendo\n        // widgets (i.e. it clones jQuery data(), which isn't the same\n        // as element's data attributes).\n        // https://github.com/telerik/kendo-ui-core/issues/2750\n        return function cloneNodes(el) {\n            var clone = el.cloneNode(false);\n            if (el.nodeType == 1 /* Element */) {\n                var $el = $(el), $clone = $(clone), i;\n                var data = $el.data();\n                for (i in data) {\n                    $clone.data(i, data[i]);\n                }\n                if (/^canvas$/i.test(el.tagName)) {\n                    clone.getContext(\"2d\").drawImage(el, 0, 0);\n                } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n                    // drop the name attributes so that we don't affect the selection of the\n                    // original nodes (i.e. checked status of radio buttons) when we insert our copy\n                    // into the DOM.  https://github.com/telerik/kendo/issues/5409\n                    clone.removeAttribute(\"id\");\n                    clone.removeAttribute(\"name\");\n                    if (!/^textarea$/i.test(el.tagName)) {\n                        clone.value = el.value;\n                    }\n                    clone.checked = el.checked;\n                    clone.selected = el.selected;\n                }\n                for (i = el.firstChild; i; i = i.nextSibling) {\n                    clone.appendChild(cloneNodes(i));\n                }\n            }\n            return clone;\n        };\n    } else {\n        // the no-jQuery version\n        return function cloneNodes(el) {\n            var clone = (function dive(node){\n                var clone = node.cloneNode(false);\n                if (node._kendoExportVisual) {\n                    clone._kendoExportVisual = node._kendoExportVisual;\n                }\n                for (var i = node.firstChild; i; i = i.nextSibling) {\n                    clone.appendChild(dive(i));\n                }\n                return clone;\n            })(el);\n\n            // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n            var canvases = el.querySelectorAll(\"canvas\");\n            if (canvases.length) {\n                slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n                    canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n                });\n            }\n\n            // remove \"name\" attributes from <input> elements -\n            // https://github.com/telerik/kendo/issues/5409\n            var orig = el.querySelectorAll(\"input, select, textarea, option\");\n            slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n                el.removeAttribute(\"id\");\n                el.removeAttribute(\"name\");\n                if (!/^textarea$/i.test(el.tagName)) {\n                    el.value = orig[i].value;\n                }\n                el.checked = orig[i].checked;\n                el.selected = orig[i].selected;\n            });\n\n            return clone;\n        };\n    }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n    if (typeof thing == \"number\") {\n        return { x: thing, y: thing };\n    }\n    if (Array.isArray(thing)) {\n        return { x: thing[0], y: thing[1] };\n    }\n    return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n    if (!options) {\n        options = {};\n    }\n    var promise = createPromise();\n\n    if (!element) {\n        return promise.reject(\"No element to export\");\n    }\n\n    if (typeof window.getComputedStyle != \"function\") {\n        throw new Error(\"window.getComputedStyle is missing.  You are using an unsupported browser, or running in IE8 compatibility mode.  Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n    }\n\n    PDF.defineFont(getFontFaces(element.ownerDocument));\n\n    var scale = getXY(options.scale || 1);\n\n    function doOne(element) {\n        var group = new Group();\n\n        // translate to start of page\n        var pos = element.getBoundingClientRect();\n        setTransform(group, [\n            scale.x,\n            0,\n            0,\n            scale.y,\n            (-pos.left * scale.x),\n            (-pos.top * scale.y)\n        ]);\n\n        nodeInfo._clipbox = false;\n        nodeInfo._matrix = geo.Matrix.unit();\n        nodeInfo._stackingContext = {\n            element: element,\n            group: group\n        };\n\n        if (options.avoidLinks === true) {\n            nodeInfo._avoidLinks = \"a\";\n        } else {\n            nodeInfo._avoidLinks = options.avoidLinks;\n        }\n\n        addClass(element, \"k-pdf-export\");\n        renderElement(element, group);\n        removeClass(element, \"k-pdf-export\");\n\n        return group;\n    }\n\n    cacheImages(element, function(){\n        var forceBreak = options && options.forcePageBreak;\n        var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n        var paperOptions = PDF.getPaperOptions(function(key, def){\n            if (key == \"paperSize\") {\n                // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n                // still be interested in margins.\n                return hasPaperSize ? options[key] : \"A4\";\n            }\n            return key in options ? options[key] : def;\n        });\n        var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n        var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n        var margin = options.margin && paperOptions.margin;\n        var hasMargin = Boolean(margin);\n        if (forceBreak || pageHeight) {\n            if (!margin) {\n                margin = { left: 0, top: 0, right: 0, bottom: 0 };\n            }\n\n            // we want paper size and margin to be unaffected by\n            // scaling in the output, so we have to reverse-scale\n            // before our calculations begin.\n            if (pageWidth)  { pageWidth  /= scale.x; }\n            if (pageHeight) { pageHeight /= scale.y; }\n            margin.left   /= scale.x;\n            margin.right  /= scale.x;\n            margin.top    /= scale.y;\n            margin.bottom /= scale.y;\n\n            var group = new Group({\n                pdf: {\n                    multiPage     : true,\n                    paperSize     : hasPaperSize ? paperOptions.paperSize : \"auto\",\n                    _ignoreMargin : hasMargin // HACK!  see exportPDF in pdf/drawing.js\n                }\n            });\n            handlePageBreaks(\n                function(x) {\n                    if (options.progress) {\n                        var canceled = false, pageNum = 0;\n                        (function next(){\n                            if (pageNum < x.pages.length) {\n                                var page = doOne(x.pages[pageNum]);\n                                group.append(page);\n                                options.progress({\n                                    page: page,\n                                    pageNum: ++pageNum,\n                                    totalPages: x.pages.length,\n                                    cancel: function() {\n                                        canceled = true;\n                                    }\n                                });\n                                if (!canceled) {\n                                    setTimeout(next);\n                                } else {\n                                    // XXX: should we also fail() the deferred object?\n                                    x.container.parentNode.removeChild(x.container);\n                                }\n                            } else {\n                                x.container.parentNode.removeChild(x.container);\n                                promise.resolve(group);\n                            }\n                        })();\n                    } else {\n                        x.pages.forEach(function(page){\n                            group.append(doOne(page));\n                        });\n                        x.container.parentNode.removeChild(x.container);\n                        promise.resolve(group);\n                    }\n                },\n                element,\n                forceBreak,\n                pageWidth ? pageWidth - margin.left - margin.right : null,\n                pageHeight ? pageHeight - margin.top - margin.bottom : null,\n                margin,\n                options\n            );\n        } else {\n            promise.resolve(doOne(element));\n        }\n    });\n\n    function makeTemplate(template) {\n        if (template != null) {\n            if (typeof template == \"string\") {\n                template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n            }\n            if (typeof template == \"function\") {\n                return function(data) {\n                    var el = template(data);\n                    if (el && typeof el == \"string\") {\n                        var div = document.createElement(\"div\");\n                        div.innerHTML = el;\n                        el = div.firstElementChild;\n                    }\n                    return el;\n                };\n            }\n            // assumed DOM element\n            return function() {\n                return template.cloneNode(true);\n            };\n        }\n    }\n\n    function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n        var template = makeTemplate(options.template);\n        var doc = element.ownerDocument;\n        var pages = [];\n        var copy = options._destructive ? element : cloneNodes(element);\n        var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n        var adjust = 0;\n\n        // make sure <tfoot> elements are at the end (Grid widget\n        // places TFOOT before TBODY, tricking our algorithm to\n        // insert a page break right after the header).\n        // https://github.com/telerik/kendo/issues/4699\n        slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n            tfoot.parentNode.appendChild(tfoot);\n        });\n\n        // remember the index of each LI from an ordered list.\n        // we'll use it to reconstruct the proper numbering.\n        slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n            slice(ol.children).forEach(function(li, index){\n                li.setAttribute(\"kendo-split-index\", index);\n            });\n        });\n\n        setCSS(container, {\n            display   : \"block\",\n            position  : \"absolute\",\n            boxSizing : \"content-box\",\n            left      : \"-10000px\",\n            top       : \"-10000px\"\n        });\n\n        if (pageWidth) {\n            // subtle: if we don't set the width *and* margins here, the layout in this\n            // container will be different from the one in our final page elements, and we'll\n            // split at the wrong places.\n            setCSS(container, {\n                width        : pageWidth + \"px\",\n                paddingLeft  : margin.left + \"px\",\n                paddingRight : margin.right + \"px\"\n            });\n\n            // when the first element has a margin-top (i.e. a <h1>) the page will be\n            // inadvertently enlarged by that number (the browser will report the container's\n            // bounding box top to start at the element's top, rather than including its\n            // margin).  Adding overflow: hidden seems to fix it.\n            //\n            // to understand the difference, try the following snippets in your browser:\n            //\n            // 1. <div style=\"background: yellow\">\n            //      <h1 style=\"margin: 3em\">Foo</h1>\n            //    </div>\n            //\n            // 2. <div style=\"background: yellow; overflow: hidden\">\n            //      <h1 style=\"margin: 3em\">Foo</h1>\n            //    </div>\n            //\n            // this detail is not important when automatic page breaking is not requested, hence\n            // doing it only if pageWidth is defined.\n            setCSS(copy, { overflow: \"hidden\" });\n        }\n\n        element.parentNode.insertBefore(container, element);\n        container.appendChild(copy);\n\n        // we need the timeouts here, so that images dimensions are\n        // properly computed in DOM when we start our thing.\n        if (options.beforePageBreak) {\n            setTimeout(function(){\n                options.beforePageBreak(container, doPageBreak);\n            }, 15);\n        } else {\n            setTimeout(doPageBreak, 15);\n        }\n\n        function doPageBreak() {\n            if (forceBreak != \"-\" || pageHeight) {\n                splitElement(copy);\n            }\n\n            {\n                var page = makePage();\n                copy.parentNode.insertBefore(page, copy);\n                page.appendChild(copy);\n            }\n\n            if (template) {\n                pages.forEach(function(page, i){\n                    var el = template({\n                        element    : page,\n                        pageNum    : i + 1,\n                        totalPages : pages.length\n                    });\n                    if (el) {\n                        page.appendChild(el);\n                    }\n                });\n            }\n\n            cacheImages(pages, function() {\n                // Even though we already cached images, they simply won't be available\n                // immediately in the newly created DOM.  Previously we'd allow a 10ms timeout,\n                // but that's arbitrary and clearly not working in all cases\n                // (https://github.com/telerik/kendo/issues/5399), so this function will wait\n                // for their .complete attribute.\n                whenImagesAreActuallyLoaded(pages, function(){\n                    callback({ pages: pages, container: container });\n                });\n            });\n        }\n\n        function keepTogether(el) {\n            if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n                return true;\n            }\n\n            var tag = el.tagName;\n            if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n                return false;\n            }\n\n            return (el.getAttribute(\"data-kendo-chart\") ||\n                    /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n        }\n\n        function splitElement(element) {\n            if (element.tagName == \"TABLE\") {\n                setCSS(element, { tableLayout: \"fixed\" });\n            }\n            if (keepTogether(element)) {\n                return;\n            }\n            var style = getComputedStyle(element);\n            var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n            var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n            var saveAdjust = adjust;\n            adjust += bottomPadding + bottomBorder;\n            var isFirst = true;\n            for (var el = element.firstChild; el; el = el.nextSibling) {\n                if (el.nodeType == 1 /* Element */) {\n                    isFirst = false;\n                    if (matches(el, forceBreak)) {\n                        breakAtElement(el);\n                        continue;\n                    }\n                    if (!pageHeight) {\n                        // we're in \"manual breaks mode\"\n                        splitElement(el);\n                        continue;\n                    }\n                    if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n                        continue;\n                    }\n                    var fall = fallsOnMargin(el);\n                    if (fall == 1) {\n                        // element starts on next page, break before anyway.\n                        breakAtElement(el);\n                    }\n                    else if (fall) {\n                        // elements ends up on next page, or possibly doesn't fit on a page at\n                        // all.  break before it anyway if it's an <img> or <tr>, otherwise\n                        // attempt to split.\n                        if (keepTogether(el)) {\n                            breakAtElement(el);\n                        } else {\n                            splitElement(el);\n                        }\n                    }\n                    else {\n                        splitElement(el);\n                    }\n                }\n                else if (el.nodeType == 3 /* Text */ && pageHeight) {\n                    splitText(el, isFirst);\n                    isFirst = false;\n                }\n            }\n            adjust = saveAdjust;\n        }\n\n        function firstInParent(el) {\n            var p = el.parentNode, first = p.firstChild;\n            if (el === first) {\n                return true;\n            }\n            if (el === p.children[0]) {\n                if (first.nodeType == 7 /* comment */ ||\n                    first.nodeType == 8 /* processing instruction */) {\n                    return true;\n                }\n                if (first.nodeType == 3 /* text */) {\n                    // if whitespace only we can probably consider it's first\n                    return !/\\S/.test(first.data);\n                }\n            }\n            return false;\n        }\n\n        function breakAtElement(el) {\n            if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n                return breakAtElement(el.parentNode);\n            }\n            var table, colgroup, thead, grid, gridHead;\n            table = closest(el, \"table\");\n            colgroup = table && table.querySelector(\"colgroup\");\n            if (options.repeatHeaders) {\n                thead = table && table.querySelector(\"thead\");\n\n                // If we break page in a Kendo Grid, repeat its header.  This ugly hack is\n                // necessary because a scrollable grid will keep the header in a separate\n                // <table> element from its content.\n                //\n                // XXX: This is likely to break as soon as the widget HTML is modified.\n                grid = closest(el, \".k-grid.k-widget\");\n                if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n                    gridHead = grid.querySelector(\".k-grid-header\");\n                }\n            }\n            var page = makePage();\n            var range = doc.createRange();\n            range.setStartBefore(copy);\n            range.setEndBefore(el);\n            page.appendChild(range.extractContents());\n            copy.parentNode.insertBefore(page, copy);\n            preventBulletOnListItem(el.parentNode);\n            if (table) {\n                table = closest(el, \"table\"); // that's the <table> on next page!\n                if (options.repeatHeaders && thead) {\n                    table.insertBefore(thead.cloneNode(true), table.firstChild);\n                }\n                if (colgroup) {\n                    table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n                }\n            }\n            if (options.repeatHeaders && gridHead) {\n                grid = closest(el, \".k-grid.k-widget\");\n                grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n            }\n        }\n\n        function makePage() {\n            var page = doc.createElement(\"KENDO-PDF-PAGE\");\n            setCSS(page, {\n                display  : \"block\",\n                boxSizing: \"content-box\",\n                width    : pageWidth ? (pageWidth + \"px\") : \"auto\",\n                padding  : (margin.top + \"px \" +\n                            margin.right + \"px \" +\n                            margin.bottom + \"px \" +\n                            margin.left + \"px\"),\n\n                // allow absolutely positioned elements to be relative to current page\n                position : \"relative\",\n\n                // without the following we might affect layout of subsequent pages\n                height   : pageHeight ? (pageHeight + \"px\") : \"auto\",\n                overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n                clear    : \"both\"\n            });\n\n            // debug\n            // $(\"<div>\").css({\n            //     position  : \"absolute\",\n            //     left      : margin.left,\n            //     top       : margin.top,\n            //     width     : pageWidth,\n            //     height    : pageHeight,\n            //     boxSizing : \"border-box\",\n            //     background: \"rgba(255, 255, 0, 0.5)\"\n            //     //border    : \"1px solid red\"\n            // }).appendTo(page);\n\n            if (options && options.pageClassName) {\n                page.className = options.pageClassName;\n            }\n            pages.push(page);\n            return page;\n        }\n\n        function fallsOnMargin(thing) {\n            var box = thing.getBoundingClientRect();\n            if (box.width === 0 || box.height === 0) {\n                // I'd say an element with dimensions zero fits on current page.\n                return 0;\n            }\n            var top = copy.getBoundingClientRect().top;\n            var available = pageHeight - adjust;\n            return (box.height > available) ? 3\n                : (box.top - top > available) ? 1\n                : (box.bottom - top > available) ? 2\n                : 0;\n        }\n\n        function splitText(node, isFirst) {\n            if (!/\\S/.test(node.data)) {\n                return;\n            }\n\n            var len = node.data.length;\n            var range = doc.createRange();\n            range.selectNodeContents(node);\n            var fall = fallsOnMargin(range);\n            if (!fall) {\n                return;     // the whole text fits on current page\n            }\n\n            var nextnode = node;\n            if (fall == 1) {\n                // starts on next page, break before anyway.\n                if (isFirst) {\n                    // avoid leaving an empty <p>, <li>, etc. on previous page.\n                    breakAtElement(node.parentNode);\n                } else {\n                    breakAtElement(node);\n                }\n            }\n            else {\n                (function findEOP(min, pos, max) {\n                    range.setEnd(node, pos);\n                    if (min == pos || pos == max) {\n                        return pos;\n                    }\n                    if (fallsOnMargin(range)) {\n                        return findEOP(min, (min + pos) >> 1, pos);\n                    } else {\n                        return findEOP(pos, (pos + max) >> 1, max);\n                    }\n                })(0, len >> 1, len);\n\n                if (!/\\S/.test(range.toString()) && isFirst) {\n                    // avoid leaving an empty <p>, <li>, etc. on previous page.\n                    breakAtElement(node.parentNode);\n                } else {\n                    // This is only needed for IE, but it feels cleaner to do it anyway.  Without\n                    // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n                    nextnode = node.splitText(range.endOffset);\n\n                    var page = makePage();\n                    range.setStartBefore(copy);\n                    page.appendChild(range.extractContents());\n                    copy.parentNode.insertBefore(page, copy);\n                    preventBulletOnListItem(nextnode.parentNode);\n                }\n            }\n\n            splitText(nextnode);\n        }\n\n        function preventBulletOnListItem(el) {\n            // set a hint on continued LI elements, to tell the\n            // renderer not to draw the bullet again.\n            // https://github.com/telerik/kendo-ui-core/issues/2732\n            var li = closest(el, \"li\");\n            if (li) {\n                li.setAttribute(\"kendo-no-bullet\", \"1\");\n                preventBulletOnListItem(li.parentNode);\n            }\n        }\n    }\n\n    return promise;\n}\n\ndrawDOM.getFontFaces = getFontFaces;\n\n// This is needed for the Spreadsheet print functionality.  Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\ndrawDOM.drawText = function(element) {\n    var group = new Group();\n    nodeInfo._clipbox = false;\n    nodeInfo._matrix = geo.Matrix.unit();\n    nodeInfo._stackingContext = {\n        element: element,\n        group: group\n    };\n    pushNodeInfo(element, getComputedStyle(element), group);\n    if (element.firstChild.nodeType == 3 /* Text */) {\n        // avoid the penalty of renderElement\n        renderText(element, element.firstChild, group);\n    } else {\n        _renderElement(element, group);\n    }\n    popNodeInfo();\n    return group;\n};\n\nvar parseBackgroundImage = (function(){\n    var tok_linear_gradient  = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n    //var tok_radial_gradient  = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n    var tok_percent          = /^([-0-9.]+%)/;\n    var tok_length           = /^([-0-9.]+px)/;\n    var tok_keyword          = /^(left|right|top|bottom|to|center)\\W/;\n    var tok_angle            = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n    var tok_whitespace       = /^(\\s+)/;\n    var tok_popen            = /^(\\()/;\n    var tok_pclose           = /^(\\))/;\n    var tok_comma            = /^(,)/;\n    var tok_url              = /^(url)\\(/;\n    var tok_content          = /^(.*?)\\)/;\n\n    var cache1 = {}, cache2 = {};\n\n    function parse(input) {\n        var orig = input;\n        if (hasOwnProperty(cache1, orig)) {\n            return cache1[orig];\n        }\n        function skip_ws() {\n            var m = tok_whitespace.exec(input);\n            if (m) {\n                input = input.substr(m[1].length);\n            }\n        }\n        function read(token) {\n            skip_ws();\n            var m = token.exec(input);\n            if (m) {\n                input = input.substr(m[1].length);\n                return m[1];\n            }\n        }\n\n        function read_stop() {\n            var color = utils_parseColor(input, true);\n            var length, percent;\n            if (color) {\n                var match =\n                    /^#[0-9a-f]+/i.exec(input) ||\n                    /^rgba?\\(.*?\\)/i.exec(input) ||\n                    /^..*?\\b/.exec(input); // maybe named color\n                input = input.substr(match[0].length);\n                color = color.toRGB();\n                if (!(length = read(tok_length))) {\n                    percent = read(tok_percent);\n                }\n                return { color: color, length: length, percent: percent };\n            }\n        }\n\n        function read_linear_gradient(propName) {\n            var angle;\n            var to1, to2;\n            var stops = [];\n            var reverse = false;\n\n            if (read(tok_popen)) {\n                // 1. [ <angle> || to <side-or-corner>, ]?\n                angle = read(tok_angle);\n                if (angle == \"0\") {\n                    angle = \"0deg\"; // Edge\n                }\n                if (angle) {\n                    angle = parseAngle(angle);\n                    read(tok_comma);\n                }\n                else {\n                    to1 = read(tok_keyword);\n                    if (to1 == \"to\") {\n                        to1 = read(tok_keyword);\n                    } else if (to1 && /^-/.test(propName)) {\n                        reverse = true;\n                    }\n                    to2 = read(tok_keyword);\n                    read(tok_comma);\n                }\n\n                if (/-moz-/.test(propName) && angle == null && to1 == null) {\n                    var x = read(tok_percent), y = read(tok_percent);\n                    reverse = true;\n                    if (x == \"0%\") {\n                        to1 = \"left\";\n                    } else if (x == \"100%\") {\n                        to1 = \"right\";\n                    }\n                    if (y == \"0%\") {\n                        to2 = \"top\";\n                    } else if (y == \"100%\") {\n                        to2 = \"bottom\";\n                    }\n                    read(tok_comma);\n                }\n\n                // 2. color stops\n                while (input && !read(tok_pclose)) {\n                    var stop = read_stop();\n                    if (!stop) {\n                        break;\n                    }\n                    stops.push(stop);\n                    read(tok_comma);\n                }\n\n                return {\n                    type    : \"linear\",\n                    angle   : angle,\n                    to      : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n                    stops   : stops,\n                    reverse : reverse\n                };\n            }\n        }\n\n        function read_url() {\n            if (read(tok_popen)) {\n                var url = read(tok_content);\n                url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n                read(tok_pclose);\n                return { type: \"url\", url: url };\n            }\n        }\n\n        var tok;\n\n        if ((tok = read(tok_linear_gradient))) {\n            tok = read_linear_gradient(tok);\n        }\n        else if ((tok = read(tok_url))) {\n            tok = read_url();\n        }\n\n        return (cache1[orig] = tok || { type: \"none\" });\n    }\n\n    return function(input) {\n        if (hasOwnProperty(cache2, input)) {\n            return cache2[input];\n        }\n        return (cache2[input] = splitProperty(input).map(parse));\n    };\n})();\n\nvar splitProperty = (function(){\n    var cache = {};\n    return function(input, separator) {\n        if (!separator) {\n            separator = /^\\s*,\\s*/;\n        }\n\n        var cacheKey = input + separator;\n\n        if (hasOwnProperty(cache, cacheKey)) {\n            return cache[cacheKey];\n        }\n\n        var ret = [];\n        var last = 0, pos = 0;\n        var in_paren = 0;\n        var in_string = false;\n        var m;\n\n        function looking_at(rx) {\n            return (m = rx.exec(input.substr(pos)));\n        }\n\n        function trim(str) {\n            return str.replace(/^\\s+|\\s+$/g, \"\");\n        }\n\n        while (pos < input.length) {\n            if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n                in_paren++;\n                pos++;\n            }\n            else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n                in_paren--;\n                pos++;\n            }\n            else if (!in_string && looking_at(/^[\\\"\\']/)) {\n                in_string = m[0];\n                pos++;\n            }\n            else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n                pos += 2;\n            }\n            else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n                pos += 2;\n            }\n            else if (in_string == \"'\" && looking_at(/^\\'/)) {\n                in_string = false;\n                pos++;\n            }\n            else if (in_string == '\"' && looking_at(/^\\\"/)) {\n                in_string = false;\n                pos++;\n            }\n            else if (looking_at(separator)) {\n                if (!in_string && !in_paren && pos > last) {\n                    ret.push(trim(input.substring(last, pos)));\n                    last = pos + m[0].length;\n                }\n                pos += m[0].length;\n            }\n            else {\n                pos++;\n            }\n        }\n        if (last < pos) {\n            ret.push(trim(input.substring(last, pos)));\n        }\n        return (cache[cacheKey] = ret);\n    };\n})();\n\nvar getFontURL = (function(cache){\n    return function(el){\n        // XXX: for IE we get here the whole cssText of the rule,\n        // because the computedStyle.src is empty.  Next time we need\n        // to fix these regexps we better write a CSS parser. :-\\\n        var url = cache[el];\n        if (!url) {\n            var m;\n            if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n                url = cache[el] = m[2];\n            } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n                url = cache[el] = m[2];\n            }\n        }\n        return url;\n    };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n    return function(font) {\n        var height = cache[font];\n        if (height == null) {\n            height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n        }\n        return height;\n    };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n    if (doc == null) {\n        doc = document;\n    }\n    var result = {};\n    for (var i = 0; i < doc.styleSheets.length; ++i) {\n        doStylesheet(doc.styleSheets[i]);\n    }\n    return result;\n    function doStylesheet(ss) {\n        if (ss) {\n            var rules = null;\n            try {\n                rules = ss.cssRules;\n            } catch (ex) {}\n            if (rules) {\n                addRules(ss, rules);\n            }\n        }\n    }\n    function findFonts(rule) {\n        var src = getPropertyValue(rule.style, \"src\");\n        if (src) {\n            return splitProperty(src).reduce(function(a, el){\n                var font = getFontURL(el);\n                if (font) {\n                    a.push(font);\n                }\n                return a;\n            }, []);\n        } else {\n            // Internet Explorer\n            // XXX: this is gross.  should work though for valid CSS.\n            var font = getFontURL(rule.cssText);\n            return font ? [ font ] : [];\n        }\n    }\n    function addRules(styleSheet, rules) {\n        for (var i = 0; i < rules.length; ++i) {\n            var r = rules[i];\n            switch (r.type) {\n              case 3:       // CSSImportRule\n                doStylesheet(r.styleSheet);\n                break;\n              case 5:       // CSSFontFaceRule\n                var style  = r.style;\n                var family = splitProperty(getPropertyValue(style, \"font-family\"));\n                var bold   = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n                var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n                var src    = findFonts(r);\n                if (src.length > 0) {\n                    addRule(styleSheet, family, bold, italic, src[0]);\n                }\n            }\n        }\n    }\n    function addRule(styleSheet, names, bold, italic, url) {\n        // We get full resolved absolute URLs in Chrome, but sadly\n        // not in Firefox.\n        if (!(/^data:/i.test(url))) {\n            if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n                url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n            }\n        }\n        names.forEach(function(name){\n            name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n            if (bold) {\n                name += \"|bold\";\n            }\n            if (italic) {\n                name += \"|italic\";\n            }\n            result[name] = url;\n        });\n    }\n}\n\nfunction hasOwnProperty(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n    name = \"_counter_\" + name;\n    return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n    var values = [], p = nodeInfo;\n    name = \"_counter_\" + name;\n    while (p) {\n        if (hasOwnProperty(p, name)) {\n            values.push(p[name]);\n        }\n        p = Object.getPrototypeOf(p);\n    }\n    return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n    var p = nodeInfo;\n    name = \"_counter_\" + name;\n    while (p && !hasOwnProperty(p, name)) {\n        p = Object.getPrototypeOf(p);\n    }\n    if (!p) {\n        p = nodeInfo._root;\n    }\n    p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n    name = \"_counter_\" + name;\n    nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n    for (var i = 0; i < a.length;) {\n        var name = a[i++];\n        var val = parseFloat(a[i]);\n        if (isNaN(val)) {\n            f(name, def);\n        } else {\n            f(name, val);\n            ++i;\n        }\n    }\n}\n\nfunction updateCounters(style) {\n    var counterReset = getPropertyValue(style, \"counter-reset\");\n    if (counterReset) {\n        doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n    }\n    var counterIncrement = getPropertyValue(style, \"counter-increment\");\n    if (counterIncrement) {\n        doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n    }\n}\n\nfunction parseColor(str, css) {\n    var color = utils_parseColor(str, true);\n    if (color) {\n        color = color.toRGB();\n        if (css) {\n            color = color.toCssRgba();\n        } else if (color.a === 0) {\n            color = null;\n        }\n    }\n    return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n    var pending = 0;\n    elements.forEach(function(el){\n        var images = el.querySelectorAll(\"img\");\n        for (var i = 0; i < images.length; ++i) {\n            var img = images[i];\n            if (!img.complete) {\n                pending++;\n                img.onload = img.onerror = next;\n            }\n        }\n    });\n    if (!pending) {\n        next();\n    }\n    function next() {\n        if (--pending <= 0) {\n            callback();\n        }\n    }\n}\n\nfunction cacheImages(element, callback) {\n    var urls = [];\n    function add(url) {\n        if (!IMAGE_CACHE[url]) {\n            IMAGE_CACHE[url] = true;\n            urls.push(url);\n        }\n    }\n    function dive(element){\n        if (/^img$/i.test(element.tagName)) {\n            add(element.src);\n        }\n        parseBackgroundImage(\n            getPropertyValue(\n                getComputedStyle(element), \"background-image\"\n            )\n        ).forEach(function(bg){\n            if (bg.type == \"url\") {\n                add(bg.url);\n            }\n        });\n\n        if (element.children) {\n            slice(element.children).forEach(dive);\n        }\n    }\n\n    if (Array.isArray(element)) {\n        element.forEach(dive);\n    } else {\n        dive(element);\n    }\n\n    var count = urls.length;\n    function next() {\n        if (--count <= 0) {\n            callback();\n        }\n    }\n    if (count === 0) {\n        next();\n    }\n    urls.forEach(function(url){\n        var img = IMAGE_CACHE[url] = new window.Image();\n        if (!(/^data:/i.test(url))) {\n            img.crossOrigin = \"Anonymous\";\n        }\n        img.src = url;\n        if (img.complete) {\n            next();\n        } else {\n            img.onload = next;\n            img.onerror = function() {\n                IMAGE_CACHE[url] = null;\n                next();\n            };\n        }\n    });\n}\n\nfunction alphaNumeral(n) {\n    var result = \"\";\n    do {\n        var r = n % 26;\n        result = String.fromCharCode(97 + r) + result;\n        n = Math.floor(n / 26);\n    } while (n > 0);\n    return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n    nodeInfo = Object.create(nodeInfo);\n    nodeInfo[element.tagName.toLowerCase()] = {\n        element: element,\n        style: style\n    };\n    var decoration = getPropertyValue(style, \"text-decoration\");\n    if (decoration && decoration != \"none\") {\n        var color = getPropertyValue(style, \"color\");\n        decoration.split(/\\s+/g).forEach(function(name){\n            if (!nodeInfo[name]) {\n                nodeInfo[name] = color;\n            }\n        });\n    }\n\n    if (createsStackingContext(style)) {\n        nodeInfo._stackingContext = {\n            element: element,\n            group: group\n        };\n    }\n}\n\nfunction popNodeInfo() {\n    nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n    if (nodeInfo._clipbox != null) {\n        var box = path.bbox(nodeInfo._matrix);\n        if (nodeInfo._clipbox) {\n            nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n        } else {\n            nodeInfo._clipbox = box;\n        }\n    }\n}\n\nfunction emptyClipbox() {\n    var cb = nodeInfo._clipbox;\n    if (cb == null) {\n        return true;\n    }\n    if (cb) {\n        return cb.width() === 0 || cb.height() === 0;\n    }\n}\n\nfunction createsStackingContext(style) {\n    function prop(name) { return getPropertyValue(style, name); }\n    if (prop(\"transform\") != \"none\" ||\n        prop(\"position\") != \"static\" ||\n        prop(\"z-index\") != \"auto\" ||\n        prop(\"opacity\") < 1) {\n        return true;\n    }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n    return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n    var val = style.getPropertyValue(prop);\n    if (val == null || val === \"\") {\n        if (browser.webkit) {\n            val = style.getPropertyValue(\"-webkit-\" + prop );\n        } else if (browser.mozilla) {\n            val = style.getPropertyValue(\"-moz-\" + prop );\n        } else if (browser.opera) {\n            val = style.getPropertyValue(\"-o-\" + prop);\n        } else if (microsoft) {\n            val = style.getPropertyValue(\"-ms-\" + prop);\n        }\n    }\n    if (arguments.length > 2 && (val == null || val === \"\")) {\n        return defa;\n    } else {\n        return val;\n    }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n    style.setProperty(prop, value, important);\n    if (browser.webkit) {\n        style.setProperty(\"-webkit-\" + prop, value, important);\n    } else if (browser.mozilla) {\n        style.setProperty(\"-moz-\" + prop, value, important);\n    } else if (browser.opera) {\n        style.setProperty(\"-o-\" + prop, value, important);\n    } else if (microsoft) {\n        style.setProperty(\"-ms-\" + prop, value, important);\n        prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n            return p1 + p2.toUpperCase();\n        });\n        style[prop] = value;\n    }\n}\n\nfunction getBorder(style, side) {\n    side = \"border-\" + side;\n    return {\n        width: parseFloat(getPropertyValue(style, side + \"-width\")),\n        style: getPropertyValue(style, side + \"-style\"),\n        color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n    };\n}\n\nfunction saveStyle(element, func) {\n    var prev = element.style.cssText;\n    var result = func();\n    element.style.cssText = prev;\n    return result;\n}\n\nfunction getBorderRadius(style, side) {\n    var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n    if (r.length == 1) {\n        r.push(r[0]);\n    }\n    return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n    var box = element.getBoundingClientRect();\n    box = innerBox(box, \"border-*-width\", element);\n    box = innerBox(box, \"padding-*\", element);\n    return box;\n}\n\nfunction innerBox(box, prop, element) {\n    var style, wt, wr, wb, wl;\n    if (typeof prop == \"string\") {\n        style = getComputedStyle(element);\n        wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n        wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n        wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n        wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n    }\n    else if (typeof prop == \"number\") {\n        wt = wr = wb = wl = prop;\n    }\n    return {\n        top    : box.top + wt,\n        right  : box.right - wr,\n        bottom : box.bottom - wb,\n        left   : box.left + wl,\n        width  : box.right - box.left - wr - wl,\n        height : box.bottom - box.top - wb - wt\n    };\n}\n\nfunction getTransform(style) {\n    var transform = getPropertyValue(style, \"transform\");\n    if (transform == \"none\") {\n        return null;\n    }\n    var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n    if (matrix) {\n        var origin = getPropertyValue(style, \"transform-origin\");\n        matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n        origin = origin.split(/\\s+/g).map(parseFloat);\n        return {\n            matrix: matrix,\n            origin: origin\n        };\n    }\n}\n\nfunction radiansToDegrees(radians) {\n    return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n    var num = parseFloat(angle);\n    if (/grad$/.test(angle)) {\n        return Math.PI * num / 200;\n    }\n    else if (/rad$/.test(angle)) {\n        return num;\n    }\n    else if (/turn$/.test(angle)) {\n        return Math.PI * num * 2;\n    }\n    else if (/deg$/.test(angle)) {\n        return Math.PI * num / 180;\n    }\n}\n\nfunction setTransform(shape, m) {\n    m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n    shape.transform(m);\n    return m;\n}\n\nfunction setClipping(shape, clipPath) {\n    shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n    var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n    while (i < points.length) {\n        path.curveTo(points[i++], points[i++], points[i++]);\n    }\n}\n\nfunction sanitizeRadius(r) {\n    if (r.x <= 0 || r.y <= 0) {\n        r.x = r.y = 0;\n    }\n    return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n    // adjust border radiuses such that the sum of adjacent\n    // radiuses is not bigger than the length of the side.\n    // seems the correct algorithm is variant (3) from here:\n    // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n    var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n    var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n    var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n    var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n    var f = Math.min(\n        box.width / (tl_x + tr_x),\n        box.height / (tr_y + br_y),\n        box.width / (br_x + bl_x),\n        box.height / (bl_y + tl_y)\n    );\n\n    if (f < 1) {\n        tl_x *= f; tl_y *= f;\n        tr_x *= f; tr_y *= f;\n        br_x *= f; br_y *= f;\n        bl_x *= f; bl_y *= f;\n    }\n\n    return {\n        tl: { x: tl_x, y: tl_y },\n        tr: { x: tr_x, y: tr_y },\n        br: { x: br_x, y: br_y },\n        bl: { x: bl_x, y: bl_y }\n    };\n}\n\nfunction elementRoundBox(element, box, type) {\n    var style = getComputedStyle(element);\n\n    var rTL = getBorderRadius(style, \"top-left\");\n    var rTR = getBorderRadius(style, \"top-right\");\n    var rBL = getBorderRadius(style, \"bottom-left\");\n    var rBR = getBorderRadius(style, \"bottom-right\");\n\n    if (type == \"padding\" || type == \"content\") {\n        var bt = getBorder(style, \"top\");\n        var br = getBorder(style, \"right\");\n        var bb = getBorder(style, \"bottom\");\n        var bl = getBorder(style, \"left\");\n        rTL.x -= bl.width; rTL.y -= bt.width;\n        rTR.x -= br.width; rTR.y -= bt.width;\n        rBR.x -= br.width; rBR.y -= bb.width;\n        rBL.x -= bl.width; rBL.y -= bb.width;\n        if (type == \"content\") {\n            var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n            var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n            var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n            var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n            rTL.x -= pl; rTL.y -= pt;\n            rTR.x -= pr; rTR.y -= pt;\n            rBR.x -= pr; rBR.y -= pb;\n            rBL.x -= pl; rBL.y -= pb;\n        }\n    }\n\n    if (typeof type == \"number\") {\n        rTL.x -= type; rTL.y -= type;\n        rTR.x -= type; rTR.y -= type;\n        rBR.x -= type; rBR.y -= type;\n        rBL.x -= type; rBL.y -= type;\n    }\n\n    return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle.  Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left).  The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n    var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n    var rTL = tmp.tl;\n    var rTR = tmp.tr;\n    var rBR = tmp.br;\n    var rBL = tmp.bl;\n    var path = new Path({ fill: null, stroke: null });\n    path.moveTo(box.left, box.top + rTL.y);\n    if (rTL.x) {\n        addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n            startAngle: -180,\n            endAngle: -90,\n            radiusX: rTL.x,\n            radiusY: rTL.y\n        });\n    }\n    path.lineTo(box.right - rTR.x, box.top);\n    if (rTR.x) {\n        addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n            startAngle: -90,\n            endAngle: 0,\n            radiusX: rTR.x,\n            radiusY: rTR.y\n        });\n    }\n    path.lineTo(box.right, box.bottom - rBR.y);\n    if (rBR.x) {\n        addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n            startAngle: 0,\n            endAngle: 90,\n            radiusX: rBR.x,\n            radiusY: rBR.y\n        });\n    }\n    path.lineTo(box.left + rBL.x, box.bottom);\n    if (rBL.x) {\n        addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n            startAngle: 90,\n            endAngle: 180,\n            radiusX: rBL.x,\n            radiusY: rBL.y\n        });\n    }\n    return path.close();\n}\n\nfunction formatCounter(val, style) {\n    var str = String(parseFloat(val));\n    switch (style) {\n      case \"decimal-leading-zero\":\n        if (str.length < 2) {\n            str = \"0\" + str;\n        }\n        return str;\n      case \"lower-roman\":\n        return arabicToRoman(val).toLowerCase();\n      case \"upper-roman\":\n        return arabicToRoman(val).toUpperCase();\n      case \"lower-latin\":\n      case \"lower-alpha\":\n        return alphaNumeral(val - 1);\n      case \"upper-latin\":\n      case \"upper-alpha\":\n        return alphaNumeral(val - 1).toUpperCase();\n      default:\n        return str;\n    }\n}\n\nfunction evalPseudoElementContent(element, content) {\n    function displayCounter(name, style, separator) {\n        if (!separator) {\n            return formatCounter(getCounter(name) || 0, style);\n        }\n        separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n        return getAllCounters(name).map(function(val){\n            return formatCounter(val, style);\n        }).join(separator);\n    }\n    var a = splitProperty(content, /^\\s+/);\n    var result = [], m;\n    a.forEach(function(el){\n        var tmp;\n        if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n            result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n                return String.fromCharCode(parseInt(p, 16));\n            }));\n        }\n        else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n            tmp = splitProperty(m[1]);\n            result.push(displayCounter(tmp[0], tmp[1]));\n        }\n        else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n            tmp = splitProperty(m[1]);\n            result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n        }\n        else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n            result.push(element.getAttribute(m[1]) || \"\");\n        }\n        else {\n            result.push(el);\n        }\n    });\n    return result.join(\"\");\n}\n\nfunction getCssText(style) {\n    if (style.cssText) {\n        return style.cssText;\n    }\n    // Status: NEW.  Report year: 2002.  Current year: 2014.\n    // Nice played, Mozillians.\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n    var result = [];\n    for (var i = 0; i < style.length; ++i) {\n        result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n    }\n    return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n    if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n        _renderElement(element, group);\n        return;\n    }\n    var fake = [];\n    function pseudo(kind, place) {\n        var style = getComputedStyle(element, kind), content = style.content;\n        updateCounters(style);\n        if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n            var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n            psel.style.cssText = getCssText(style);\n            psel.textContent = evalPseudoElementContent(element, content);\n            element.insertBefore(psel, place);\n            fake.push(psel);\n        }\n    }\n    pseudo(\":before\", element.firstChild);\n    pseudo(\":after\", null);\n    if (fake.length > 0) {\n        var saveClass = element.className;\n        element.className += \" kendo-pdf-hide-pseudo-elements\";\n        _renderElement(element, group);\n        element.className = saveClass;\n        fake.forEach(function(el){ element.removeChild(el); });\n    } else {\n        _renderElement(element, group);\n    }\n}\n\nfunction _renderElement(element, group) {\n    var style = getComputedStyle(element);\n\n    var top = getBorder(style, \"top\");\n    var right = getBorder(style, \"right\");\n    var bottom = getBorder(style, \"bottom\");\n    var left = getBorder(style, \"left\");\n\n    var rTL0 = getBorderRadius(style, \"top-left\");\n    var rTR0 = getBorderRadius(style, \"top-right\");\n    var rBL0 = getBorderRadius(style, \"bottom-left\");\n    var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n    var dir = getPropertyValue(style, \"direction\");\n\n    var backgroundColor = getPropertyValue(style, \"background-color\");\n    backgroundColor = parseColor(backgroundColor);\n\n    var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n    var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n    var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n    var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n    var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n    // IE shrinks the text with text-overflow: ellipsis,\n    // apparently because the returned bounding box for the range\n    // is limited to the visible area minus space for the dots,\n    // instead of being the full width of the text.\n    //\n    // https://github.com/telerik/kendo/issues/5232\n    // https://github.com/telerik/kendo-ui-core/issues/1868\n    //\n    // We have to test it here rather than in renderText because\n    // text-overflow: ellipsis could be set on a parent element (not\n    // necessarily the one containing the text); in this case,\n    // getComputedStyle(elementWithTheText) will return \"clip\", not\n    // \"ellipsis\" (which is probably a bug, but oh well...)\n    var textOverflow, saveTextOverflow;\n    if (microsoft) {\n        textOverflow = style.textOverflow;             // computed style\n        if (textOverflow == \"ellipsis\") {\n            saveTextOverflow = element.style.textOverflow; // own style.\n            element.style.textOverflow = \"clip\";\n        }\n    }\n\n    if (browser.msie && browser.version < 10) {\n        // IE9 hacks.  getPropertyValue won't return the correct\n        // value.  Sucks that we have to do it here, I'd prefer to\n        // move it in getPropertyValue, but we don't have the\n        // element.\n        backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n    }\n\n    var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n    // CSS \"clip\" property - if present, replace the group with a\n    // new one which is clipped.  This must happen before drawing\n    // the borders and background.\n    (function(){\n        var clip = getPropertyValue(style, \"clip\");\n        var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n        if (m) {\n            var a = m[1].split(/[ ,]+/g);\n            var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n            var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n            var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n            var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n            var tmp = new Group();\n            var clipPath = new Path()\n                .moveTo(left, top)\n                .lineTo(right, top)\n                .lineTo(right, bottom)\n                .lineTo(left, bottom)\n                .close();\n            setClipping(tmp, clipPath);\n            group.append(tmp);\n            group = tmp;\n            updateClipbox(clipPath);\n        }\n    })();\n\n    var boxes, i, cells;\n    var display = getPropertyValue(style, \"display\");\n\n    if (display == \"table-row\") {\n        // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n        // box given by its getBoundingClientRect, because if we do we risk overwritting a\n        // previously rendered cell.  https://github.com/telerik/kendo/issues/4881\n        boxes = [];\n        for (i = 0, cells = element.children; i < cells.length; ++i) {\n            boxes.push(cells[i].getBoundingClientRect());\n        }\n    } else {\n        boxes = element.getClientRects();\n        if (boxes.length == 1) {\n            // Workaround the missing borders in Chrome!  getClientRects() boxes contains values\n            // rounded to integer.  getBoundingClientRect() appears to work fine.  We still need\n            // getClientRects() to support cases where there are more boxes (continued inline\n            // elements that might have border/background).\n            boxes = [ element.getBoundingClientRect() ];\n        }\n    }\n\n    // This function workarounds another Chrome bug, where boxes returned for a table with\n    // border-collapse: collapse will overlap the table border.  Our rendering is not perfect in\n    // such case anyway, but with this is better than without it.\n    boxes = adjustBoxes(boxes);\n\n    for (i = 0; i < boxes.length; ++i) {\n        drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n    }\n\n    // Render links as separate groups.  We can't use boxes returned by element's getClientRects\n    // because if display type is \"inline\" (default for <a>), boxes will not include the height of\n    // images inside.  https://github.com/telerik/kendo-ui-core/issues/3359\n    if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n        if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n            var r = document.createRange();\n            r.selectNodeContents(element);\n            slice(r.getClientRects()).forEach(function(box){\n                var g = new Group();\n                g._pdfLink = {\n                    url    : element.href,\n                    top    : box.top,\n                    right  : box.right,\n                    bottom : box.bottom,\n                    left   : box.left\n                };\n                group.append(g);\n            });\n        }\n    }\n\n    if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n        drawBullet(boxes[0]);\n    }\n\n    // overflow: hidden/auto - if present, replace the group with\n    // a new one clipped by the inner box.\n    (function(){\n        function clipit() {\n            var clipPath = elementRoundBox(element, innerbox, \"padding\");\n            var tmp = new Group();\n            setClipping(tmp, clipPath);\n            group.append(tmp);\n            group = tmp;\n            updateClipbox(clipPath);\n        }\n        if (isFormField(element)) {\n            clipit();\n        } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n            clipit();\n        } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n            clipit();\n        } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n            clipit();\n        }\n    })();\n\n    if (!maybeRenderWidget(element, group)) {\n        renderContents(element, group);\n    }\n\n    if (microsoft && textOverflow == \"ellipsis\") {\n        element.style.textOverflow = saveTextOverflow;\n    }\n\n    return group; // only utility functions after this line.\n\n    function adjustBoxes(boxes) {\n        if (/^td$/i.test(element.tagName)) {\n            var table = nodeInfo.table;\n            if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n                var tableBorderLeft = getBorder(table.style, \"left\").width;\n                var tableBorderTop = getBorder(table.style, \"top\").width;\n                // check if we need to adjust\n                if (tableBorderLeft === 0 && tableBorderTop === 0) {\n                    return boxes; // nope\n                }\n                var tableBox = table.element.getBoundingClientRect();\n                var firstCell = table.element.rows[0].cells[0];\n                var firstCellBox = firstCell.getBoundingClientRect();\n                if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n                    return slice(boxes).map(function(box){\n                        return {\n                            left   : box.left + tableBorderLeft,\n                            top    : box.top + tableBorderTop,\n                            right  : box.right + tableBorderLeft,\n                            bottom : box.bottom + tableBorderTop,\n                            height : box.height,\n                            width  : box.width\n                        };\n                    });\n                }\n            }\n        }\n        return boxes;\n    }\n\n    // this function will be called to draw each border.  it\n    // draws starting at origin and the resulted path must be\n    // translated/rotated to be placed in the proper position.\n    //\n    // arguments are named as if it draws the top border:\n    //\n    //    - `len` the length of the edge\n    //    - `Wtop` the width of the edge (i.e. border-top-width)\n    //    - `Wleft` the width of the left edge (border-left-width)\n    //    - `Wright` the width of the right edge\n    //    - `rl` and `rl` -- the border radius on the left and right\n    //      (objects containing x and y, for horiz/vertical radius)\n    //    - `transform` -- transformation to apply\n    //\n    function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n        if (Wtop <= 0) {\n            return;\n        }\n\n        var path, edge = new Group();\n        setTransform(edge, transform);\n        group.append(edge);\n\n        sanitizeRadius(rl);\n        sanitizeRadius(rr);\n\n        // draw main border.  this is the area without the rounded corners\n        path = new Path({\n            fill: { color: color },\n            stroke: null\n        });\n        edge.append(path);\n        path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n            .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n            .lineTo(len - Math.max(rr.x, Wright), Wtop)\n            .lineTo(Math.max(rl.x, Wleft), Wtop)\n            .close();\n\n        if (rl.x) {\n            drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n        }\n\n        if (rr.x) {\n            drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n        }\n\n        // draws one round corner, starting at origin (needs to be\n        // translated/rotated to be placed properly).\n        function drawRoundCorner(Wright, r, transform) {\n            var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n            // not sanitizing this one, because negative values\n            // are useful to fill the box correctly.\n            var ri = {\n                x: r.x - Wright,\n                y: r.y - Wtop\n            };\n\n            var path = new Path({\n                fill: { color: color },\n                stroke: null\n            }).moveTo(0, 0);\n\n            setTransform(path, transform);\n\n            addArcToPath(path, 0, r.y, {\n                startAngle: -90,\n                endAngle: -radiansToDegrees(angle),\n                radiusX: r.x,\n                radiusY: r.y\n            });\n\n            if (ri.x > 0 && ri.y > 0) {\n                path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n                addArcToPath(path, 0, r.y, {\n                    startAngle: -radiansToDegrees(angle),\n                    endAngle: -90,\n                    radiusX: ri.x,\n                    radiusY: ri.y,\n                    anticlockwise: true\n                });\n            }\n            else if (ri.x > 0) {\n                path.lineTo(ri.x, Wtop)\n                    .lineTo(0, Wtop);\n            }\n            else {\n                path.lineTo(ri.x, Wtop)\n                    .lineTo(ri.x, 0);\n            }\n\n            edge.append(path.close());\n        }\n    }\n\n    function drawBackground(box) {\n        var background = new Group();\n        setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n        group.append(background);\n\n        if (backgroundColor) {\n            var path = new Path({\n                fill: { color: backgroundColor.toCssRgba() },\n                stroke: null\n            });\n            path.moveTo(box.left, box.top)\n                .lineTo(box.right, box.top)\n                .lineTo(box.right, box.bottom)\n                .lineTo(box.left, box.bottom)\n                .close();\n            background.append(path);\n        }\n\n        for (var i = backgroundImage.length; --i >= 0;) {\n            drawOneBackground(\n                background, box,\n                backgroundImage[i],\n                backgroundRepeat[i % backgroundRepeat.length],\n                backgroundPosition[i % backgroundPosition.length],\n                backgroundOrigin[i % backgroundOrigin.length],\n                backgroundSize[i % backgroundSize.length]\n            );\n        }\n    }\n\n    function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n        if (!background || (background == \"none\")) {\n            return;\n        }\n\n        if (background.type == \"url\") {\n            // SVG taints the canvas, can't draw it.\n            if (/^url\\(\\\"data:image\\/svg/i.test(background.url)) {\n                return;\n            }\n            var img = IMAGE_CACHE[background.url];\n            if (img && img.width > 0 && img.height > 0) {\n                drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n                    group.append(new Image(background.url, rect));\n                });\n            }\n        } else if (background.type == \"linear\") {\n            drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n        } else {\n            return;\n        }\n\n        function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n            var aspect_ratio = img_width / img_height, f;\n\n            // for background-origin: border-box the box is already appropriate\n            var orgBox = box;\n            if (backgroundOrigin == \"content-box\") {\n                orgBox = innerBox(orgBox, \"border-*-width\", element);\n                orgBox = innerBox(orgBox, \"padding-*\", element);\n            } else if (backgroundOrigin == \"padding-box\") {\n                orgBox = innerBox(orgBox, \"border-*-width\", element);\n            }\n\n            if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n                if (backgroundSize == \"contain\") {\n                    f = Math.min(orgBox.width / img_width,\n                                 orgBox.height / img_height);\n                    img_width *= f;\n                    img_height *= f;\n                }\n                else if (backgroundSize == \"cover\") {\n                    f = Math.max(orgBox.width / img_width,\n                                 orgBox.height / img_height);\n                    img_width *= f;\n                    img_height *= f;\n                }\n                else {\n                    var size = backgroundSize.split(/\\s+/g);\n                    // compute width\n                    if (/%$/.test(size[0])) {\n                        img_width = orgBox.width * parseFloat(size[0]) / 100;\n                    } else {\n                        img_width = parseFloat(size[0]);\n                    }\n                    // compute height\n                    if (size.length == 1 || size[1] == \"auto\") {\n                        img_height = img_width / aspect_ratio;\n                    } else if (/%$/.test(size[1])) {\n                        img_height = orgBox.height * parseFloat(size[1]) / 100;\n                    } else {\n                        img_height = parseFloat(size[1]);\n                    }\n                }\n            }\n\n            var pos = String(backgroundPosition);\n\n            // IE sometimes reports single-word positions\n            // https://github.com/telerik/kendo-ui-core/issues/2786\n            //\n            // it seems to switch to percentages when the horizontal\n            // position is not \"center\", therefore we don't handle\n            // multi-word cases here.  All other browsers return\n            // percentages or pixels instead of keywords.  At least\n            // for now...\n            switch (pos) {\n              case \"bottom\" : pos = \"50% 100%\"; break;\n              case \"top\"    : pos = \"50% 0\"; break;\n              case \"left\"   : pos = \"0 50%\"; break;\n              case \"right\"  : pos = \"100% 50%\"; break;\n              case \"center\" : pos = \"50% 50%\"; break;\n            }\n\n            pos = pos.split(/\\s+/);\n            if (pos.length == 1) {\n                pos[1] = \"50%\";\n            }\n\n            if (/%$/.test(pos[0])) {\n                pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n            } else {\n                pos[0] = parseFloat(pos[0]);\n            }\n            if (/%$/.test(pos[1])) {\n                pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n            } else {\n                pos[1] = parseFloat(pos[1]);\n            }\n\n            var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n            // XXX: background-repeat could be implemented more\n            //      efficiently as a fill pattern (at least for PDF\n            //      output, probably SVG too).\n\n            function rewX() {\n                while (rect.origin.x > box.left) {\n                    rect.origin.x -= img_width;\n                }\n            }\n\n            function rewY() {\n                while (rect.origin.y > box.top) {\n                    rect.origin.y -= img_height;\n                }\n            }\n\n            function repeatX() {\n                while (rect.origin.x < box.right) {\n                    renderBG(group, rect.clone());\n                    rect.origin.x += img_width;\n                }\n            }\n\n            if (backgroundRepeat == \"no-repeat\") {\n                renderBG(group, rect);\n            }\n            else if (backgroundRepeat == \"repeat-x\") {\n                rewX();\n                repeatX();\n            }\n            else if (backgroundRepeat == \"repeat-y\") {\n                rewY();\n                while (rect.origin.y < box.bottom) {\n                    renderBG(group, rect.clone());\n                    rect.origin.y += img_height;\n                }\n            }\n            else if (backgroundRepeat == \"repeat\") {\n                rewX();\n                rewY();\n                var origin = rect.origin.clone();\n                while (rect.origin.y < box.bottom) {\n                    rect.origin.x = origin.x;\n                    repeatX();\n                    rect.origin.y += img_height;\n                }\n            }\n        }\n    }\n\n    function drawBullet() {\n        var listStyleType = getPropertyValue(style, \"list-style-type\");\n        if (listStyleType == \"none\") {\n            return;\n        }\n        var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n        function _drawBullet(f) {\n            saveStyle(element, function(){\n                element.style.position = \"relative\";\n                var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n                bullet.style.position = \"absolute\";\n                bullet.style.boxSizing = \"border-box\";\n                if (listStylePosition == \"outside\") {\n                    bullet.style.width = \"6em\";\n                    bullet.style.left = \"-6.8em\";\n                    bullet.style.textAlign = \"right\";\n                } else {\n                    bullet.style.left = \"0px\";\n                }\n                f(bullet);\n                element.insertBefore(bullet, element.firstChild);\n                renderElement(bullet, group);\n                element.removeChild(bullet);\n            });\n        }\n\n        function elementIndex(f) {\n            var a = element.parentNode.children;\n            var k = element.getAttribute(\"kendo-split-index\");\n            if (k != null) {\n                return f(k|0, a.length);\n            }\n            for (var i = 0; i < a.length; ++i) {\n                if (a[i] === element) {\n                    return f(i, a.length);\n                }\n            }\n        }\n\n        switch (listStyleType) {\n          case \"circle\":\n          case \"disc\":\n          case \"square\":\n            _drawBullet(function(bullet){\n                // XXX: the science behind these values is called \"trial and error\".\n                bullet.style.fontSize = \"60%\";\n                bullet.style.lineHeight = \"200%\";\n                bullet.style.paddingRight = \"0.5em\";\n                bullet.style.fontFamily = \"DejaVu Serif\";\n                bullet.innerHTML = {\n                    \"disc\"   : \"\\u25cf\",\n                    \"circle\" : \"\\u25ef\",\n                    \"square\" : \"\\u25a0\"\n                }[listStyleType];\n            });\n            break;\n\n          case \"decimal\":\n          case \"decimal-leading-zero\":\n            _drawBullet(function(bullet){\n                elementIndex(function(idx){\n                    ++idx;\n                    if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n                        idx = \"0\" + idx;\n                    }\n                    bullet.innerHTML = idx + \".\";\n                });\n            });\n            break;\n\n          case \"lower-roman\":\n          case \"upper-roman\":\n            _drawBullet(function(bullet){\n                elementIndex(function(idx){\n                    idx = arabicToRoman(idx + 1);\n                    if (listStyleType == \"upper-roman\") {\n                        idx = idx.toUpperCase();\n                    }\n                    bullet.innerHTML = idx + \".\";\n                });\n            });\n            break;\n\n          case \"lower-latin\":\n          case \"lower-alpha\":\n          case \"upper-latin\":\n          case \"upper-alpha\":\n            _drawBullet(function(bullet){\n                elementIndex(function(idx){\n                    idx = alphaNumeral(idx);\n                    if (/^upper/i.test(listStyleType)) {\n                        idx = idx.toUpperCase();\n                    }\n                    bullet.innerHTML = idx + \".\";\n                });\n            });\n            break;\n        }\n    }\n\n    // draws a single border box\n    function drawOneBox(box, isFirst, isLast) {\n        if (box.width === 0 || box.height === 0) {\n            return;\n        }\n\n        drawBackground(box);\n\n        var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n        var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n        // The most general case is that the 4 borders have different widths and border\n        // radiuses.  The way that is handled is by drawing 3 Paths for each border: the\n        // straight line, and two round corners which represent half of the entire rounded\n        // corner.  To simplify code those shapes are drawed at origin (by the drawEdge\n        // function), then translated/rotated into the right position.\n        //\n        // However, this leads to poor results due to rounding in the simpler cases where\n        // borders are straight lines.  Therefore we handle a few such cases separately with\n        // straight lines. C^wC^wC^w -- nope, scratch that.  poor rendering was because of a bug\n        // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n        // web dev is still a ghetto.)\n\n        // first, just in case there is no border...\n        if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n            return;\n        }\n\n        // START paint borders\n        // if all borders have equal colors...\n        if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n            // if same widths too, we can draw the whole border by stroking a single path.\n            if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n            {\n                if (shouldDrawLeft && shouldDrawRight) {\n                    // reduce box by half the border width, so we can draw it by stroking.\n                    box = innerBox(box, top.width/2);\n\n                    // adjust the border radiuses, again by top.width/2, and make the path element.\n                    var path = elementRoundBox(element, box, top.width/2);\n                    path.options.stroke = {\n                        color: top.color,\n                        width: top.width\n                    };\n                    group.append(path);\n                    return;\n                }\n            }\n        }\n\n        // if border radiuses are zero and widths are at most one pixel, we can again use simple\n        // paths.\n        if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n            // alright, 1.9px will do as well.  the difference in color blending should not be\n            // noticeable.\n            if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n                // top border\n                if (top.width > 0) {\n                    group.append(\n                        new Path({\n                            stroke: { width: top.width, color: top.color }\n                        })\n                            .moveTo(box.left, box.top + top.width/2)\n                            .lineTo(box.right, box.top + top.width/2)\n                    );\n                }\n\n                // bottom border\n                if (bottom.width > 0) {\n                    group.append(\n                        new Path({\n                            stroke: { width: bottom.width, color: bottom.color }\n                        })\n                            .moveTo(box.left, box.bottom - bottom.width/2)\n                            .lineTo(box.right, box.bottom - bottom.width/2)\n                    );\n                }\n\n                // left border\n                if (shouldDrawLeft) {\n                    group.append(\n                        new Path({\n                            stroke: { width: left.width, color: left.color }\n                        })\n                            .moveTo(box.left + left.width/2, box.top)\n                            .lineTo(box.left + left.width/2, box.bottom)\n                    );\n                }\n\n                // right border\n                if (shouldDrawRight) {\n                    group.append(\n                        new Path({\n                            stroke: { width: right.width, color: right.color }\n                        })\n                            .moveTo(box.right - right.width/2, box.top)\n                            .lineTo(box.right - right.width/2, box.bottom)\n                    );\n                }\n\n                return;\n            }\n        }\n        // END paint borders\n\n        var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n        var rTL = tmp.tl;\n        var rTR = tmp.tr;\n        var rBR = tmp.br;\n        var rBL = tmp.bl;\n\n        // top border\n        drawEdge(top.color,\n                 box.width, top.width, left.width, right.width,\n                 rTL, rTR,\n                 [ 1, 0, 0, 1, box.left, box.top ]);\n\n        // bottom border\n        drawEdge(bottom.color,\n                 box.width, bottom.width, right.width, left.width,\n                 rBR, rBL,\n                 [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n        // for left/right borders we need to invert the border-radiuses\n        function inv(p) {\n            return { x: p.y, y: p.x };\n        }\n\n        // left border\n        drawEdge(left.color,\n                 box.height, left.width, bottom.width, top.width,\n                 inv(rBL), inv(rTL),\n                 [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n        // right border\n        drawEdge(right.color,\n                 box.height, right.width, top.width, bottom.width,\n                 inv(rTR), inv(rBR),\n                 [ 0, 1, -1, 0, box.right, box.top ]);\n    }\n}\n\nfunction gradientRenderer(gradient) {\n    return function(group, rect) {\n        var width = rect.width(), height = rect.height();\n\n        switch (gradient.type) {\n          case \"linear\":\n\n            // figure out the angle.\n            var angle = gradient.angle != null ? gradient.angle : Math.PI;\n            switch (gradient.to) {\n              case \"top\":\n                angle = 0;\n                break;\n              case \"left\":\n                angle = -Math.PI / 2;\n                break;\n              case \"bottom\":\n                angle = Math.PI;\n                break;\n              case \"right\":\n                angle = Math.PI / 2;\n                break;\n              case \"top left\": case \"left top\":\n                angle = -Math.atan2(height, width);\n                break;\n              case \"top right\": case \"right top\":\n                angle = Math.atan2(height, width);\n                break;\n              case \"bottom left\": case \"left bottom\":\n                angle = Math.PI + Math.atan2(height, width);\n                break;\n              case \"bottom right\": case \"right bottom\":\n                angle = Math.PI - Math.atan2(height, width);\n                break;\n            }\n\n            if (gradient.reverse) {\n                angle -= Math.PI;\n            }\n\n            // limit the angle between 0..2PI\n            angle %= 2 * Math.PI;\n            if (angle < 0) {\n                angle += 2 * Math.PI;\n            }\n\n            // compute gradient's start/end points.  here len is the length of the gradient line\n            // and x,y is the end point relative to the center of the rectangle in conventional\n            // (math) axis direction.\n\n            // this is the original (unscaled) length of the gradient line.  needed to deal with\n            // absolutely positioned color stops.  formula from the CSS spec:\n            // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n            var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n            // The math below is pretty simple, but it took a while to figure out.  We compute x\n            // and y, the *end* of the gradient line.  However, we want to transform them into\n            // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\").  That means,\n            // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n            // bottom edge.\n            //\n            // A naive approach would use the original angle for these calculations.  Say we'd\n            // like to draw a gradient angled at 45deg in a 100x400 box.  When we use\n            // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n            // scale that to the desired dimensions.  The 45deg angle will look more like 70deg\n            // after scaling.  SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n            // the following:\n            //\n            //     When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n            //     identity matrix, the normal of the linear gradient is perpendicular to the\n            //     gradient vector in object bounding box space (i.e., the abstract coordinate\n            //     system where (0,0) is at the top/left of the object bounding box and (1,1) is\n            //     at the bottom/right of the object bounding box). When the object's bounding\n            //     box is not square, the gradient normal which is initially perpendicular to\n            //     the gradient vector within object bounding box space may render\n            //     non-perpendicular relative to the gradient vector in user space. If the\n            //     gradient vector is parallel to one of the axes of the bounding box, the\n            //     gradient normal will remain perpendicular. This transformation is due to\n            //     application of the non-uniform scaling transformation from bounding box space\n            //     to user space.\n            //\n            // which is an extremely long and confusing way to tell what I just said above.\n            //\n            // For this reason we need to apply the reverse scaling to the original angle, so\n            // that when it'll finally be rendered it'll actually be at the desired slope.  Now\n            // I'll let you figure out the math yourself.\n\n            var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n            var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n            var len = Math.abs(sin) + Math.abs(cos);\n            var x = len/2 * sin;\n            var y = len/2 * cos;\n\n            // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n            // losing the intended direction of the gradient.  The following fixes it.\n            if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n                x = -x;\n                y = -y;\n            }\n\n            // compute the color stops.\n            var implicit = [], right = 0;\n            var stops = gradient.stops.map(function(s, i){\n                var offset = s.percent;\n                if (offset) {\n                    offset = parseFloat(offset) / 100;\n                } else if (s.length) {\n                    offset = parseFloat(s.length) / pxlen;\n                } else if (i === 0) {\n                    offset = 0;\n                } else if (i == gradient.stops.length - 1) {\n                    offset = 1;\n                }\n                var stop = {\n                    color: s.color.toCssRgba(),\n                    offset: offset\n                };\n                if (offset != null) {\n                    right = offset;\n                    // fix implicit offsets\n                    implicit.forEach(function(s, i){\n                        var stop = s.stop;\n                        stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n                    });\n                    implicit = [];\n                } else {\n                    implicit.push({ left: right, stop: stop });\n                }\n                return stop;\n            });\n\n            var start = [ 0.5 - x, 0.5 + y ];\n            var end = [ 0.5 + x, 0.5 - y ];\n\n            // finally, draw it.\n            group.append(\n                Path.fromRect(rect)\n                    .stroke(null)\n                    .fill(new LinearGradient({\n                        start     : start,\n                        end       : end,\n                        stops     : stops,\n                        userSpace : false\n                    }))\n            );\n            break;\n          case \"radial\":\n            // XXX:\n            if (window.console && window.console.log) {\n                window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n            }\n            break;\n        }\n    };\n}\n\nfunction maybeRenderWidget(element, group) {\n    var visual;\n\n    if (element._kendoExportVisual) {\n        visual = element._kendoExportVisual();\n    } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n        var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n        if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n            if (widget.exportDOMVisual) {\n                visual = widget.exportDOMVisual();\n            } else {\n                visual = widget.exportVisual();\n            }\n        }\n    }\n\n    if (!visual) {\n        return false;\n    }\n\n    var wrap = new Group();\n    wrap.children.push(visual);\n\n    var bbox = element.getBoundingClientRect();\n    wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n    group.append(wrap);\n\n    return true;\n}\n\nfunction renderImage(element, url, group) {\n    var box = getContentBox(element);\n    var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n    var image = new Image(url, rect);\n    setClipping(image, elementRoundBox(element, box, \"content\"));\n    group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n    var sa = getComputedStyle(a);\n    var sb = getComputedStyle(b);\n    var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n    var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n    var pa = getPropertyValue(sa, \"position\");\n    var pb = getPropertyValue(sb, \"position\");\n    if (isNaN(za) && isNaN(zb)) {\n        if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n            return 0;\n        }\n        if (pa == \"static\") {\n            return -1;\n        }\n        if (pb == \"static\") {\n            return 1;\n        }\n        return 0;\n    }\n    if (isNaN(za)) {\n        return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n    }\n    if (isNaN(zb)) {\n        return za === 0 ? 0 : za > 0 ? 1 : -1;\n    }\n    return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n    return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n    if (element.selectedOptions && element.selectedOptions.length > 0) {\n        return element.selectedOptions[0];\n    }\n    return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n    var style = getComputedStyle(element);\n    var color = getPropertyValue(style, \"color\");\n    var box = element.getBoundingClientRect();\n    if (element.type == \"checkbox\") {\n        group.append(\n            Path.fromRect(\n                new geo.Rect([ box.left+1, box.top+1 ],\n                             [ box.width-2, box.height-2 ])\n            ).stroke(color, 1)\n        );\n        if (element.checked) {\n            // fill a rectangle inside?  looks kinda ugly.\n            // group.append(\n            //     Path.fromRect(\n            //         new geo.Rect([ box.left+4, box.top+4 ],\n            //                      [ box.width-8, box.height-8])\n            //     ).fill(color).stroke(null)\n            // );\n\n            // let's draw a checkmark instead.  artistic, eh?\n            group.append(\n                new Path()\n                    .stroke(color, 1.2)\n                    .moveTo(box.left + 0.22 * box.width,\n                            box.top + 0.55 * box.height)\n                    .lineTo(box.left + 0.45 * box.width,\n                            box.top + 0.75 * box.height)\n                    .lineTo(box.left + 0.78 * box.width,\n                            box.top + 0.22 * box.width)\n            );\n        }\n    } else {\n        group.append(\n            new Circle(\n                new geo.Circle([\n                    (box.left + box.right) / 2,\n                    (box.top + box.bottom) / 2\n                ], Math.min(box.width-2, box.height-2) / 2)\n            ).stroke(color, 1)\n        );\n        if (element.checked) {\n            group.append(\n                new Circle(\n                    new geo.Circle([\n                        (box.left + box.right) / 2,\n                        (box.top + box.bottom) / 2\n                    ], Math.min(box.width-8, box.height-8) / 2)\n                ).fill(color).stroke(null)\n            );\n        }\n    }\n}\n\nfunction renderFormField(element, group) {\n    var tag = element.tagName.toLowerCase();\n    if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n        return renderCheckbox(element, group);\n    }\n    var p = element.parentNode;\n    var doc = element.ownerDocument;\n    var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n    var option;\n    el.style.cssText = getCssText(getComputedStyle(element));\n    if (tag == \"input\") {\n        el.style.whiteSpace = \"pre\";\n    }\n    if (tag == \"select\" || tag == \"textarea\") {\n        el.style.overflow = \"auto\";\n    }\n    if (tag == \"select\") {\n        if (element.multiple) {\n            for (var i = 0; i < element.options.length; ++i) {\n                option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n                option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n                option.style.display = \"block\"; // IE9 messes up without this\n                option.textContent = element.options[i].textContent;\n                el.appendChild(option);\n            }\n        } else {\n            option = getSelectedOption(element);\n            if (option) {\n                el.textContent = option.textContent;\n            }\n        }\n    } else {\n        el.textContent = element.value;\n    }\n    p.insertBefore(el, element);\n    el.scrollLeft = element.scrollLeft;\n    el.scrollTop = element.scrollTop;\n\n    // must temporarily hide the original element, otherwise it\n    // may affect layout of the fake element we want to render.\n    element.style.display = \"none\";\n\n    renderContents(el, group);\n    element.style.display = \"\";\n    p.removeChild(el);\n}\n\nfunction renderContents(element, group) {\n    if (nodeInfo._stackingContext.element === element) {\n        // the group that was set in pushNodeInfo might have\n        // changed due to clipping/transforms, update it here.\n        nodeInfo._stackingContext.group = group;\n    }\n    switch (element.tagName.toLowerCase()) {\n      case \"img\":\n        renderImage(element, element.src, group);\n        break;\n\n      case \"canvas\":\n        try {\n            renderImage(element, element.toDataURL(\"image/png\"), group);\n        } catch (ex) {\n            // tainted; can't draw it, ignore.\n        }\n        break;\n\n      case \"textarea\":\n      case \"input\":\n      case \"select\":\n        renderFormField(element, group);\n        break;\n\n      default:\n        var children = [], floats = [], positioned = [];\n        for (var i = element.firstChild; i; i = i.nextSibling) {\n            switch (i.nodeType) {\n              case 3:         // Text\n                if (/\\S/.test(i.data)) {\n                    renderText(element, i, group);\n                }\n                break;\n              case 1:         // Element\n                var style = getComputedStyle(i);\n                var floating = getPropertyValue(style, \"float\");\n                var position = getPropertyValue(style, \"position\");\n                if (position != \"static\") {\n                    positioned.push(i);\n                }\n                else if (floating != \"none\") {\n                    floats.push(i);\n                } else {\n                    children.push(i);\n                }\n                break;\n            }\n        }\n\n        mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n        mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n        mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n    }\n}\n\nfunction renderText(element, node, group) {\n    if (emptyClipbox()) {\n        return;\n    }\n    var style = getComputedStyle(element);\n\n    if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n        // assume it should not be displayed.  the slider's\n        // draggable handle displays a Drag text for some reason,\n        // having text-indent: -3333px.\n        return;\n    }\n\n    var text = node.data;\n    var start = 0;\n    var end = text.search(/\\S\\s*$/) + 1;\n\n    if (!end) {\n        return; // whitespace-only node\n    }\n\n    var fontSize = getPropertyValue(style, \"font-size\");\n    var lineHeight = getPropertyValue(style, \"line-height\");\n\n    // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n    var font = [\n        getPropertyValue(style, \"font-style\"),\n        getPropertyValue(style, \"font-variant\"),\n        getPropertyValue(style, \"font-weight\"),\n        fontSize, // no need for line height here; it breaks layout in FF\n        getPropertyValue(style, \"font-family\")\n    ].join(\" \");\n\n    fontSize = parseFloat(fontSize);\n    lineHeight = parseFloat(lineHeight);\n\n    if (fontSize === 0) {\n        return;\n    }\n\n    var color = getPropertyValue(style, \"color\");\n    var range = element.ownerDocument.createRange();\n    var align = getPropertyValue(style, \"text-align\");\n    var isJustified = align == \"justify\";\n    var columnCount = getPropertyValue(style, \"column-count\", 1);\n    var whiteSpace = getPropertyValue(style, \"white-space\");\n    var textTransform = getPropertyValue(style, \"text-transform\");\n\n    // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n    // err, we'd like to guess a bigger number rather than a smaller one.  Multiplying by 5\n    // seems to be a good option.\n    var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n    if (estimateLineLength === 0) {\n        estimateLineLength = 500;\n    }\n\n    // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n    // https://github.com/telerik/kendo/issues/5740\n    var prevLineBottom = null;\n\n    var underline = nodeInfo[\"underline\"];\n    var lineThrough = nodeInfo[\"line-through\"];\n    var overline = nodeInfo[\"overline\"];\n    var hasDecoration = underline || lineThrough || overline;\n\n    // doChunk returns true when all text has been rendered\n    while (!doChunk()) {}\n\n    if (hasDecoration) {\n        range.selectNode(node);\n        slice(range.getClientRects()).forEach(decorate);\n    }\n\n    return;                 // only function declarations after this line\n\n    function actuallyGetRangeBoundingRect(range) {\n        // XXX: to be revised when this Chrome bug is fixed:\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n        if (microsoft || browser.chrome) {\n            // Workaround browser bugs: IE and Chrome would sometimes\n            // return 0 or 1-width rectangles before or after the main\n            // one.  https://github.com/telerik/kendo/issues/4674\n\n            // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n            // full character, making it hard to tell whether it's a bogus rectangle or valid\n            // selection location.  The workaround is to ignore rectangles that fall on the\n            // previous line.  https://github.com/telerik/kendo/issues/5740\n            var rectangles = range.getClientRects(), box = {\n                top    :  Infinity,\n                right  : -Infinity,\n                bottom : -Infinity,\n                left   :  Infinity\n            }, done = false;\n            for (var i = 0; i < rectangles.length; ++i) {\n                var b = rectangles[i];\n                if (b.width <= 1 || b.bottom === prevLineBottom) {\n                    continue;   // bogus rectangle\n                }\n                box.left   = Math.min(b.left   , box.left);\n                box.top    = Math.min(b.top    , box.top);\n                box.right  = Math.max(b.right  , box.right);\n                box.bottom = Math.max(b.bottom , box.bottom);\n                done = true;\n            }\n            if (!done) {\n                return range.getBoundingClientRect();\n            }\n            box.width = box.right - box.left;\n            box.height = box.bottom - box.top;\n            return box;\n        }\n        return range.getBoundingClientRect();\n    }\n\n    // Render a chunk of text, typically one line (but for justified text we render each word as\n    // a separate Text object, because spacing is variable).  Returns true when it finished the\n    // current node.  After each chunk it updates `start` to just after the last rendered\n    // character.\n    function doChunk() {\n        var origStart = start;\n        var box, pos = text.substr(start).search(/\\S/);\n        start += pos;\n        if (pos < 0 || start >= end) {\n            return true;\n        }\n\n        // Select a single character to determine the height of a line of text.  The box.bottom\n        // will be essential for us to figure out where the next line begins.\n        range.setStart(node, start);\n        range.setEnd(node, start + 1);\n        box = actuallyGetRangeBoundingRect(range);\n\n        // for justified text we must split at each space, because space has variable width.\n        var found = false;\n        if (isJustified || columnCount > 1) {\n            pos = text.substr(start).search(/\\s/);\n            if (pos >= 0) {\n                // we can only split there if it's on the same line, otherwise we'll fall back\n                // to the default mechanism (see findEOL below).\n                range.setEnd(node, start + pos);\n                var r = actuallyGetRangeBoundingRect(range);\n                if (r.bottom == box.bottom) {\n                    box = r;\n                    found = true;\n                    start += pos;\n                }\n            }\n        }\n\n        if (!found) {\n            // This code does three things: (1) it selects one line of text in `range`, (2) it\n            // leaves the bounding rect of that line in `box` and (3) it returns the position\n            // just after the EOL.  We know where the line starts (`start`) but we don't know\n            // where it ends.  To figure this out, we select a piece of text and look at the\n            // bottom of the bounding box.  If it changes, we have more than one line selected\n            // and should retry with a smaller selection.\n            //\n            // To speed things up, we first try to select all text in the node (`start` ->\n            // `end`).  If there's more than one line there, then select only half of it.  And\n            // so on.  When we find a value for `end` that fits in one line, we try increasing\n            // it (also in halves) until we get to the next line.  The algorithm stops when the\n            // right side of the bounding box does not change.\n            //\n            // One more thing to note is that everything happens in a single Text DOM node.\n            // There's no other tags inside it, therefore the left/top coordinates of the\n            // bounding box will not change.\n            pos = (function findEOL(min, eol, max){\n                range.setEnd(node, eol);\n                var r = actuallyGetRangeBoundingRect(range);\n                if (r.bottom != box.bottom && min < eol) {\n                    return findEOL(min, (min + eol) >> 1, eol);\n                } else if (r.right != box.right) {\n                    box = r;\n                    if (eol < max) {\n                        return findEOL(eol, (eol + max) >> 1, max);\n                    } else {\n                        return eol;\n                    }\n                } else {\n                    return eol;\n                }\n            })(start, Math.min(end, start + estimateLineLength), end);\n\n            if (pos == start) {\n                // if EOL is at the start, then no more text fits on this line.  Skip the\n                // remainder of this node entirely to avoid a stack overflow.\n                return true;\n            }\n            start = pos;\n\n            pos = range.toString().search(/\\s+$/);\n            if (pos === 0) {\n                return false; // whitespace only; we should not get here.\n            }\n            if (pos > 0) {\n                // eliminate trailing whitespace\n                range.setEnd(node, range.startOffset + pos);\n                box = actuallyGetRangeBoundingRect(range);\n            }\n        }\n\n        // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n        // elements.  Calling getClientRects() and using the *first* rect appears to give us the correct location.\n        // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n        if (microsoft) {\n            box = range.getClientRects()[0];\n        }\n\n        var str = range.toString();\n        if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n            // node with non-significant space -- collapse whitespace.\n            str = str.replace(/\\s+/g, \" \");\n        }\n        else if (/\\t/.test(str)) {\n            // with significant whitespace we need to do something about literal TAB characters.\n            // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n            // and the whole text will stretch to fill the original width.  The core PDF lib\n            // does not have sufficient context to deal with it.\n\n            // calculate the starting column here, since we initially discarded any whitespace.\n            var cc = 0;\n            for (pos = origStart; pos < range.startOffset; ++pos) {\n                var code = text.charCodeAt(pos);\n                if (code == 9) {\n                    // when we meet a TAB we must round up to the next tab stop.\n                    // in all browsers TABs seem to be 8 characters.\n                    cc += 8 - cc % 8;\n                } else if (code == 10 || code == 13) {\n                    // just in case we meet a newline we must restart.\n                    cc = 0;\n                } else {\n                    // ordinary character --> advance one column\n                    cc++;\n                }\n            }\n\n            // based on starting column, replace any TAB characters in the string we actually\n            // have to display with spaces so that they align to columns multiple of 8.\n            while ((pos = str.search(\"\\t\")) >= 0) {\n                var indent = \"        \".substr(0, 8 - (cc + pos) % 8);\n                str = str.substr(0, pos) + indent + str.substr(pos + 1);\n            }\n        }\n\n        if (!found) {\n            prevLineBottom = box.bottom;\n        }\n        drawText(str, box);\n    }\n\n    function drawText(str, box) {\n        // In IE the box height will be approximately lineHeight, while in\n        // other browsers it'll (correctly) be the height of the bounding\n        // box for the current text/font.  Which is to say, IE sucks again.\n        // The only good solution I can think of is to measure the text\n        // ourselves and center the bounding box.\n        if (microsoft && !isNaN(lineHeight)) {\n            var height = getFontHeight(font);\n            var top = (box.top + box.bottom - height) / 2;\n            box = {\n                top    : top,\n                right  : box.right,\n                bottom : top + height,\n                left   : box.left,\n                height : height,\n                width  : box.right - box.left\n            };\n        }\n\n        // var path = new Path({ stroke: { color: \"red\" }});\n        // path.moveTo(box.left, box.top)\n        //     .lineTo(box.right, box.top)\n        //     .lineTo(box.right, box.bottom)\n        //     .lineTo(box.left, box.bottom)\n        //     .close();\n        // group.append(path);\n\n        switch (textTransform) {\n          case \"uppercase\":\n            str = str.toUpperCase();\n            break;\n          case \"lowercase\":\n            str = str.toLowerCase();\n            break;\n          case \"capitalize\":\n            str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n            break;\n        }\n\n        var text = new TextRect(\n            str, new geo.Rect([ box.left, box.top ],\n                              [ box.width, box.height ]),\n            {\n                font: font,\n                fill: { color: color }\n            }\n        );\n        group.append(text);\n    }\n\n    function decorate(box) {\n        line(underline, box.bottom);\n        line(lineThrough, box.bottom - box.height / 2.7);\n        line(overline, box.top);\n        function line(color, ypos) {\n            if (color) {\n                var width = fontSize / 12;\n                var path = new Path({ stroke: {\n                    width: width,\n                    color: color\n                }});\n\n                ypos -= width;\n                path.moveTo(box.left, ypos)\n                    .lineTo(box.right, ypos);\n                group.append(path);\n            }\n        }\n    }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n    var main;\n    if (zIndex != \"auto\") {\n        // use the current stacking context\n        main = nodeInfo._stackingContext.group;\n        zIndex = parseFloat(zIndex);\n    } else {\n        // normal flow — use given container.  we still have to\n        // figure out where should we insert this element with the\n        // assumption that its z-index is zero, as the group might\n        // already contain elements with higher z-index.\n        main = group;\n        zIndex = 0;\n    }\n    var a = main.children;\n    for (var i = 0; i < a.length; ++i) {\n        if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n            break;\n        }\n    }\n\n    var tmp = new Group();\n    main.insert(i, tmp);\n    tmp._dom_zIndex = zIndex;\n\n    if (main !== group) {\n        // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n        // console.log(a.slice(i+1));\n\n        // if (nodeInfo._matrix) {\n        //     tmp.transform(nodeInfo._matrix);\n        // }\n        if (nodeInfo._clipbox) {\n            var m = nodeInfo._matrix.invert();\n            var r = nodeInfo._clipbox.transformCopy(m);\n            setClipping(tmp, Path.fromRect(r));\n            // console.log(r);\n            // tmp.append(Path.fromRect(r));\n            // tmp.append(new Text(element.className || element.id, r.topLeft()));\n        }\n    }\n\n    return tmp;\n}\n\nfunction renderElement(element, container) {\n    var style = getComputedStyle(element);\n\n    updateCounters(style);\n\n    if (/^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(element.tagName)) {\n        return;\n    }\n\n    if (nodeInfo._clipbox == null) {\n        return;\n    }\n\n    var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n    var visibility = getPropertyValue(style, \"visibility\");\n    var display = getPropertyValue(style, \"display\");\n\n    if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n        return;\n    }\n\n    var tr = getTransform(style);\n    var group;\n\n    var zIndex = getPropertyValue(style, \"z-index\");\n    if ((tr || opacity < 1) && zIndex == \"auto\") {\n        zIndex = 0;\n    }\n    group = groupInStackingContext(element, container, zIndex);\n\n    // XXX: remove at some point\n    // group._pdfElement = element;\n    // group.options._pdfDebug = \"\";\n    // if (element.id) {\n    //     group.options._pdfDebug = \"#\" + element.id;\n    // }\n    // if (element.className) {\n    //     group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n    // }\n\n    if (opacity < 1) {\n        group.opacity(opacity * group.opacity());\n    }\n\n    pushNodeInfo(element, style, group);\n\n    if (!tr) {\n        _renderWithPseudoElements(element, group);\n    }\n    else {\n        saveStyle(element, function(){\n            // must clear transform, so getBoundingClientRect returns correct values.\n            pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n            // must also clear transitions, so correct values are returned *immediately*\n            pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n            // the presence of any transform makes it behave like it had position: relative,\n            // because why not.\n            // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n            if (getPropertyValue(style, \"position\") == \"static\") {\n                // but only if it's not already positioned. :-/\n                pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n            }\n\n            // must translate to origin before applying the CSS\n            // transformation, then translate back.\n            var bbox = element.getBoundingClientRect();\n            var x = bbox.left + tr.origin[0];\n            var y = bbox.top + tr.origin[1];\n            var m = [ 1, 0, 0, 1, -x, -y ];\n            m = mmul(m, tr.matrix);\n            m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n            m = setTransform(group, m);\n\n            nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n            _renderWithPseudoElements(element, group);\n        });\n    }\n\n    popNodeInfo();\n\n    //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n//     var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n//     if (color) {\n//         path.stroke(color);\n//     }\n//     group.append(path);\n// }\n\n// function dumpTextNode(node) {\n//     var txt = node.data.replace(/^\\s+/, \"\");\n//     if (txt.length < 100) {\n//         console.log(node.data.length + \": |\" + txt);\n//     } else {\n//         console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n//     }\n// }\n\nfunction mmul(a, b) {\n    var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n    var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n    return [\n        a1*a2 + b1*c2,          a1*b2 + b1*d2,\n        c1*a2 + d1*c2,          c1*b2 + d1*d2,\n        e1*a2 + f1*c2 + e2,     e1*b2 + f1*d2 + f2\n    ];\n}\n\nexport { drawDOM };\n\n","export default function template() {\n    // XXX: no template engine for now\n    throw new Error(\"String template not yet supported.  Pass a function and use your preferred template engine.\");\n}","import { parseColor as parse, Color } from '@progress/kendo-drawing';\nimport { isPresent, fitIntoBounds } from './misc';\n/**\n * @hidden\n *\n * Returns the hex or RGBA string representation of the color.\n */\nexport var parseColor = function (value, format, safe) {\n    if (safe === void 0) { safe = true; }\n    var allowedFormats = ['hex', 'rgba']; // TODO: constant?\n    // Angular supports third type: name : const allowedFormats: Array<string> = ['hex', 'rgba', 'name'];\n    if (allowedFormats.indexOf(format) === -1) {\n        throw new Error(\"Unsupported color output format '\" + format + \"'. The available options are 'hex' or 'rgba'.\");\n    }\n    if (!isPresent(value)) {\n        return;\n    }\n    var parsedColor = parse(value.trim(), safe);\n    if (!isPresent(parsedColor)) {\n        return;\n    }\n    return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nexport var getHSV = function (value, safe) {\n    if (safe === void 0) { safe = true; }\n    var parsed = parse(value, safe);\n    if (!isPresent(parsed)) {\n        return {};\n    }\n    return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nexport var getRGBA = function (value, safe) {\n    if (safe === void 0) { safe = true; }\n    var parsed = parse(value, safe);\n    if (!isPresent(parsed)) {\n        return {};\n    }\n    return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromHSV = function (hsva) {\n    var hue = fitIntoBounds(hsva.h, 0, 359.9);\n    var saturation = fitIntoBounds(hsva.s, 0, 1);\n    var value = fitIntoBounds(hsva.v, 0, 1);\n    var alpha = fitIntoBounds(hsva.a, 0, 1);\n    return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue` and\n * assuming the `value`, `saturation`, and `alpha` have a value of `1`.\n */\nexport var getColorFromHue = function (hue) {\n    return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromRGBA = function (rgba) {\n    var red = fitIntoBounds(rgba.r, 0, 255);\n    var green = fitIntoBounds(rgba.g, 0, 255);\n    var blue = fitIntoBounds(rgba.b, 0, 255);\n    var alpha = fitIntoBounds(rgba.a, 0, 1);\n    return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n//# sourceMappingURL=color-parser.js.map","var cache = {};\n/**\n * @hidden\n */\nexport function cacheHsva(componentGuid, value, hsva) {\n    cache[componentGuid] = { value: value, hsva: hsva };\n}\n/**\n * @hidden\n */\nexport function cacheRgba(componentGuid, value, rgba) {\n    cache[componentGuid] = { value: value, rgba: rgba };\n}\n/**\n * @hidden\n */\nexport function cacheHex(componentGuid, value, hex) {\n    cache[componentGuid] = { value: value, hex: hex };\n}\n/**\n * @hidden\n */\nexport function removeCachedColor(componentGuid) {\n    delete cache[componentGuid];\n}\n/**\n * @hidden\n */\nexport function getCachedHex(componentGuid, value) {\n    if (componentGuid) {\n        var cachedColor = cache[componentGuid];\n        return cachedColor && cachedColor.value === value ? cachedColor.hex : undefined;\n    }\n    else {\n        return undefined;\n    }\n}\n/**\n * @hidden\n */\nexport function getCachedHsva(componentGuid, value) {\n    if (componentGuid) {\n        var cachedColor = cache[componentGuid];\n        return cachedColor && cachedColor.value === value ? cachedColor.hsva : undefined;\n    }\n    else {\n        return undefined;\n    }\n}\n/**\n * @hidden\n */\nexport function getCachedRgba(componentGuid, value) {\n    if (componentGuid) {\n        var cachedColor = cache[componentGuid];\n        return cachedColor && cachedColor.value === value ? cachedColor.rgba : undefined;\n    }\n    else {\n        return undefined;\n    }\n}\n//# sourceMappingURL=color-cache.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { parseColor } from './utils/color-parser';\nimport { isPresent } from './utils/misc';\n/**\n * @hidden\n */\nvar HexInput = /** @class */ (function (_super) {\n    __extends(HexInput, _super);\n    function HexInput(props) {\n        var _this = _super.call(this, props) || this;\n        _this.onChange = function (event) {\n            var hex = event.target.value;\n            var value = parseColor(hex, 'rgba');\n            _this.setState({ hex: hex });\n            if (isPresent(value)) {\n                _this.props.onHexChange(hex, value, event);\n            }\n        };\n        _this.onBlur = function () {\n            if (!isPresent(parseColor(_this.state.hex, 'rgba'))) {\n                _this.setState({ hex: _this.state.originalHex });\n            }\n        };\n        _this.state = { hex: _this.props.hex, originalHex: _this.props.hex };\n        return _this;\n    }\n    HexInput.prototype.render = function () {\n        return (React.createElement(\"input\", { value: this.state.hex, className: \"k-textbox k-hex-value\", onChange: this.onChange, onBlur: this.onBlur, disabled: this.props.disabled }));\n    };\n    HexInput.getDerivedStateFromProps = function (props, state) {\n        if (props.hex !== state.originalHex) {\n            return { hex: props.hex, originalHex: props.hex };\n        }\n        return null;\n    };\n    return HexInput;\n}(React.Component));\nexport default HexInput;\n//# sourceMappingURL=HexInput.js.map","var _a;\n/**\n * @hidden\n */\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\nexport var checkboxValidation = 'checkbox.validation';\n/**\n * @hidden\n */\nexport var radioButtonValidation = 'radioButton.validation';\n/**\n * @hidden\n */\nexport var switchValidation = 'switch.validation';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[numericIncreaseValue] = 'Increase value',\n    _a[numericDecreaseValue] = 'Decrease value',\n    _a[sliderIncreaseValue] = 'Increase',\n    _a[sliderDecreaseValue] = 'Decrease',\n    _a[sliderDragTitle] = 'Drag',\n    _a[colorGradientR] = 'r',\n    _a[colorGradientG] = 'g',\n    _a[colorGradientB] = 'b',\n    _a[colorGradientA] = 'a',\n    _a[colorGradientHex] = 'hex',\n    _a[checkboxValidation] = 'Please check this box if you want to proceed!',\n    _a[radioButtonValidation] = 'Please select option if you want to proceed!',\n    _a[switchValidation] = 'Please turn on if you want to proceed!',\n    _a);\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { NumericTextBox } from '../main';\nimport HexInput from './HexInput';\nimport { registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientR, colorGradientHex, colorGradientA, colorGradientB, colorGradientG } from '../messages';\n/**\n * @hidden\n */\nvar ColorInput = /** @class */ (function (_super) {\n    __extends(ColorInput, _super);\n    function ColorInput() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onRgbaRChange = function (event) {\n            _this.dispatchRgbaChange({ r: event.value }, event);\n        };\n        _this.onRgbaGChange = function (event) {\n            _this.dispatchRgbaChange({ g: event.value }, event);\n        };\n        _this.onRgbaBChange = function (event) {\n            _this.dispatchRgbaChange({ b: event.value }, event);\n        };\n        _this.onRgbaAChange = function (event) {\n            _this.dispatchRgbaChange({ a: event.value }, event);\n        };\n        return _this;\n    }\n    ColorInput.prototype.render = function () {\n        var localizationService = provideLocalizationService(this);\n        var hexMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientHex]);\n        var rMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientR]);\n        var gMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientG]);\n        var bMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientB]);\n        var aMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientA]);\n        return (React.createElement(\"div\", null,\n            React.createElement(\"div\", { className: \"k-hbox k-gradient-values\" },\n                React.createElement(HexInput, { hex: this.props.hex, onHexChange: this.props.onHexChange, disabled: this.props.disabled }),\n                React.createElement(NumericTextBox, { value: this.props.rgba.r, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaRChange, disabled: this.props.disabled }),\n                React.createElement(NumericTextBox, { value: this.props.rgba.g, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaGChange, disabled: this.props.disabled }),\n                React.createElement(NumericTextBox, { value: this.props.rgba.b, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaBChange, disabled: this.props.disabled }),\n                this.props.opacity && React.createElement(NumericTextBox, { value: this.props.rgba.a, min: 0, max: 1, step: 0.01, spinners: false, format: \"n2\", onChange: this.onRgbaAChange, disabled: this.props.disabled })),\n            React.createElement(\"div\", { className: \"k-hbox k-gradient-values\" },\n                React.createElement(\"div\", { className: \"k-hex-value\" }, hexMessage),\n                React.createElement(\"div\", null, rMessage),\n                React.createElement(\"div\", null, gMessage),\n                React.createElement(\"div\", null, bMessage),\n                this.props.opacity && (React.createElement(\"div\", null, aMessage)))));\n    };\n    ColorInput.prototype.dispatchRgbaChange = function (newValue, event) {\n        var rgba = __assign({}, this.props.rgba);\n        if (newValue.r !== undefined) {\n            rgba.r = newValue.r;\n        }\n        if (newValue.g !== undefined) {\n            rgba.g = newValue.g;\n        }\n        if (newValue.b !== undefined) {\n            rgba.b = newValue.b;\n        }\n        if (newValue.a !== undefined) {\n            rgba.a = newValue.a;\n        }\n        this.props.onRgbaChange(rgba, event);\n    };\n    return ColorInput;\n}(React.Component));\nexport default ColorInput;\nregisterForIntl(ColorInput);\nregisterForLocalization(ColorInput);\n//# sourceMappingURL=ColorInput.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Draggable, guid, classNames, focusFirstFocusableChild, getTabIndex } from '@progress/kendo-react-common';\nimport { Slider } from './../main';\nimport { fitIntoBounds, isPresent } from './utils/misc';\nimport { getColorFromHue, parseColor, getHSV, getColorFromHSV, getRGBA, getColorFromRGBA } from './utils/color-parser';\nimport { cacheHsva, removeCachedColor, getCachedHsva, getCachedRgba, getCachedHex, cacheRgba, cacheHex } from './utils/color-cache';\nimport ColorInput from './ColorInput';\nvar FORMAT = 'rgba';\nvar DEFAULT_SELECTED_COLOR = 'rgba(255, 255, 255, 1)';\n/**\n * Represents the [KendoReact ColorGradient component]({% slug overview_colorgradient %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return <ColorGradient />;\n *     }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar ColorGradient = /** @class */ (function (_super) {\n    __extends(ColorGradient, _super);\n    function ColorGradient(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.onHexChange = function (hex, value, event) {\n            if (_this.isUncontrolled) {\n                var hsva = getHSV(value);\n                _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n            }\n            else {\n                cacheHex(_this.state.guid, value, hex);\n            }\n            _this.dispatchChangeEvent(value, event, event.nativeEvent);\n        };\n        /**\n         * @hidden\n         */\n        _this.onRgbaChange = function (rgba, event) {\n            var value = getColorFromRGBA(rgba);\n            if (_this.isUncontrolled) {\n                var hsva = getHSV(value);\n                var hex = parseColor(value, 'hex');\n                _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex });\n            }\n            else {\n                cacheRgba(_this.state.guid, value, rgba);\n            }\n            _this.dispatchChangeEvent(value, event.syntheticEvent, event.nativeEvent);\n        };\n        /**\n         * @hidden\n         */\n        _this.onAlphaSliderChange = function (event) {\n            _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { a: event.value / 100 }), event.syntheticEvent, event.nativeEvent);\n        };\n        /**\n         * @hidden\n         */\n        _this.onHueSliderChange = function (event) {\n            _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { h: event.value }), event.syntheticEvent, event.nativeEvent);\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (e) {\n            _this.gradientWrapper.classList.add('k-dragging');\n            _this.changePosition(e.event);\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function () {\n            _this.gradientWrapper.classList.remove('k-dragging');\n        };\n        /**\n         * @hidden\n         */\n        _this.onGradientWrapperClick = function (event) {\n            _this.changePosition(event);\n        };\n        /**\n         * @hidden\n         */\n        _this.changePosition = function (event) {\n            var gradientRectMetrics = _this.getGradientRectMetrics();\n            var deltaX = event.clientX - gradientRectMetrics.left;\n            var deltaY = event.clientY - gradientRectMetrics.top;\n            var left = fitIntoBounds(deltaX, 0, gradientRectMetrics.width);\n            var top = fitIntoBounds(deltaY, 0, gradientRectMetrics.height);\n            var hsva = Object.assign({}, _this.state.hsva, { s: left / gradientRectMetrics.width, v: 1 - top / gradientRectMetrics.height });\n            _this.handleHsvaChange(hsva, event, event.nativeEvent);\n        };\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            focusFirstFocusableChild(_this.wrapper);\n        };\n        var value = props.value || props.defaultValue || parseColor(DEFAULT_SELECTED_COLOR, FORMAT);\n        _this.state = Object.assign({}, ColorGradient.getStateFromValue(value), { isFirstRender: true, guid: guid() });\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    ColorGradient.getDerivedStateFromProps = function (props, state) {\n        if (props.value && !state.isFirstRender) {\n            // The component is in controlled mode.\n            return ColorGradient.getStateFromValue(props.value, state.guid);\n        }\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.componentDidMount = function () {\n        this.setAlphaSliderBackground(this.state.backgroundColor);\n        if (this.state.isFirstRender) {\n            this.setState({ isFirstRender: false });\n        }\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.componentWillUnmount = function () {\n        removeCachedColor(this.state.guid);\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.componentDidUpdate = function (_, prevState) {\n        if (prevState.backgroundColor !== this.state.backgroundColor) {\n            this.setAlphaSliderBackground(this.state.backgroundColor);\n        }\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.renderRectangleDragHandle = function () {\n        var style = {};\n        if (!this.state.isFirstRender) {\n            var gradientRectMetrics = this.getGradientRectMetrics();\n            var top_1 = (1 - this.state.hsva.v) * gradientRectMetrics.height;\n            var left = this.state.hsva.s * gradientRectMetrics.width;\n            style.top = top_1 + \"px\";\n            style.left = left + \"px\";\n        }\n        return React.createElement(\"div\", { className: \"k-draghandle\", style: style });\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.handleHsvaChange = function (hsva, syntheticEvent, nativeEvent) {\n        var value = getColorFromHSV(hsva);\n        if (this.isUncontrolled) {\n            var hex = parseColor(value, 'hex');\n            this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n        }\n        else {\n            cacheHsva(this.state.guid, value, hsva);\n        }\n        this.dispatchChangeEvent(value, syntheticEvent, nativeEvent);\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.dispatchChangeEvent = function (value, syntheticEvent, nativeEvent) {\n        if (this.props.onChange) {\n            this.props.onChange.call(undefined, { syntheticEvent: syntheticEvent, nativeEvent: nativeEvent, target: this, value: value });\n        }\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.getStateFromValue = function (value, componentGuid) {\n        if (!isPresent(parseColor(value, 'hex'))) {\n            // Validate/sanitize the input.\n            value = DEFAULT_SELECTED_COLOR;\n        }\n        var hsva = getCachedHsva(componentGuid, value) || getHSV(value);\n        var rgba = getCachedRgba(componentGuid, value) || getRGBA(value);\n        var hex = getCachedHex(componentGuid, value) || parseColor(value, 'hex');\n        return { hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex };\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.setAlphaSliderBackground = function (backgroundColor) {\n        if (this.props.opacity && this.alphaSlider && this.alphaSlider.sliderTrack) {\n            this.alphaSlider.sliderTrack.style.background = \"linear-gradient(to top, transparent, \" + backgroundColor + \")\";\n        }\n    };\n    Object.defineProperty(ColorGradient.prototype, \"isUncontrolled\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.value === undefined;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.getGradientRectMetrics = function () {\n        return this.gradientWrapper.getBoundingClientRect();\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.prototype.render = function () {\n        var _this = this;\n        var className = classNames('k-widget k-flatcolorpicker', { 'k-state-disabled': this.props.disabled });\n        return (React.createElement(\"div\", { id: this.props.id, className: className, \"aria-disabled\": this.props.disabled ? 'true' : undefined, style: this.props.style, ref: function (el) { return _this.wrapper = el; }, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy },\n            React.createElement(\"div\", { className: \"k-hbox k-hsv-wrap\" },\n                React.createElement(\"div\", { className: \"k-hsv-rectangle\", style: { background: this.state.backgroundColor } },\n                    React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (el) { return _this.gradientWrapper = el ? el.element : undefined; } },\n                        React.createElement(\"div\", { className: \"k-hsv-gradient\", style: { touchAction: 'none' }, onClick: this.onGradientWrapperClick }, this.renderRectangleDragHandle()))),\n                React.createElement(\"div\", { className: \"k-hbox k-sliders-wrap\" },\n                    React.createElement(Slider, { value: this.state.hsva.h, buttons: false, vertical: true, min: 0, max: 360, step: 5, onChange: this.onHueSliderChange, className: \"k-hue-slider\", disabled: this.props.disabled }),\n                    this.props.opacity && React.createElement(Slider, { value: isPresent(this.state.hsva.a) ? this.state.hsva.a * 100 : 100, buttons: false, vertical: true, min: 0, max: 100, step: 1, onChange: this.onAlphaSliderChange, className: \"k-alpha-slider\", disabled: this.props.disabled, ref: function (el) { return _this.alphaSlider = el; } }))),\n            React.createElement(ColorInput, { rgba: this.state.rgba, onRgbaChange: this.onRgbaChange, hex: this.state.hex, onHexChange: this.onHexChange, opacity: this.props.opacity, disabled: this.props.disabled })));\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.propTypes = {\n        defaultValue: PropTypes.string,\n        value: PropTypes.string,\n        onChange: PropTypes.func,\n        opacity: PropTypes.bool,\n        disabled: PropTypes.bool,\n        style: PropTypes.any,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    ColorGradient.defaultProps = {\n        opacity: true\n    };\n    return ColorGradient;\n}(React.Component));\nexport { ColorGradient };\n//# sourceMappingURL=ColorGradient.js.map","import { isPresent } from './misc';\nimport { parseColor } from '@progress/kendo-drawing';\n/**\n * @hidden\n */\nvar ColorPaletteService = /** @class */ (function () {\n    function ColorPaletteService() {\n        this.colorRows = [];\n    }\n    ColorPaletteService.prototype.setColorMatrix = function (palette, columns) {\n        this.colorRows = [];\n        if (!(isPresent(palette) && palette.length)) {\n            return;\n        }\n        columns = columns || palette.length;\n        for (var start = 0; start < palette.length; start += columns) {\n            var row = palette.slice(start, columns + start);\n            this.colorRows.push(row);\n        }\n    };\n    ColorPaletteService.prototype.getCellCoordsFor = function (color) {\n        var _this = this;\n        if (!isPresent(color)) {\n            return;\n        }\n        var parsedColor = color ? parseColor(color, true) : color;\n        var colors = [color];\n        if (isPresent(parsedColor)) {\n            colors.push(parsedColor.toCss(), parsedColor.toCssRgba());\n        }\n        var _loop_1 = function (row) {\n            var _loop_2 = function (col) {\n                if (colors.some(function (c) { return c === _this.colorRows[row][col]; })) {\n                    return { value: { row: row, col: col } };\n                }\n            };\n            for (var col = 0; col < this_1.colorRows[row].length; col++) {\n                var state_2 = _loop_2(col);\n                if (typeof state_2 === \"object\")\n                    return state_2;\n            }\n        };\n        var this_1 = this;\n        for (var row = 0; row < this.colorRows.length; row++) {\n            var state_1 = _loop_1(row);\n            if (typeof state_1 === \"object\")\n                return state_1.value;\n        }\n    };\n    ColorPaletteService.prototype.getColorAt = function (cellCoords) {\n        if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n            return;\n        }\n        return this.colorRows[cellCoords.row][cellCoords.col];\n    };\n    ColorPaletteService.prototype.getNextCell = function (current, horizontalStep, verticalStep) {\n        if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n            return { row: 0, col: 0 };\n        }\n        var row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n        var col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n        return { row: row, col: col };\n    };\n    ColorPaletteService.prototype.clampIndex = function (index, max) {\n        var minArrayIndex = 0;\n        if (index < minArrayIndex) {\n            return minArrayIndex;\n        }\n        if (index > max) {\n            return max;\n        }\n        return index;\n    };\n    return ColorPaletteService;\n}());\nexport { ColorPaletteService };\n//# sourceMappingURL=color-palette.service.js.map","// tslint:disable:max-line-length\n/**\n * @hidden\n */\nexport var PALETTEPRESETS = {\n    basic: {\n        colors: ['#000000', '#7f7f7f', '#880015', '#ed1c24', '#ff7f27', '#fff200', '#22b14c', '#00a2e8', '#3f48cc', '#a349a4', ' ffffff', '#c3c3c3', '#b97a57', '#ffaec9', '#ffc90e', '#efe4b0', '#b5e61d', '#99d9ea', '#7092be', '#c8bfe7'],\n        columns: 10\n    },\n    office: {\n        colors: ['#ffffff', '#000000', '#e6e6e6', '#435569', '#4371c4', '#ed7e32', '#a5a4a5', '#febf04', '#5a9bd5', '#71ae48', '#f2f2f3', '#7f7f7f', '#d1cece', '#d5dde3', '#dae1f4', '#fce5d4', '#deeded', '#fff2cc', '#deeaf6', '#e1efd9', '#d7d8d8', '#585959', '#aeabab', '#adbaca', '#b4c5e7', '#f6caac', '#dbdbdb', '#ffe498', '#bcd6ee', '#c5e0b2', '#bfbfc0', '#3f3f3f', '#767070', '#8595b1', '#8fabdb', '#f5b183', '#c9c8c9', '#fed965', '#9bc4e5', '#a8d08d', '#a5a5a6', '#262625', '#393939', '#334050', '#2e5496', '#c45a11', '#7b7b7a', '#bf9000', '#2f75b5', '#548235', '#7f7f7f', '#0b0c0c', '#161616', '#222a34', '#203764', '#843d0b', '#525252', '#7f6000', '#1d4d79', '#375623'],\n        columns: 10\n    },\n    apex: {\n        colors: ['#ffffff', '#000000', '#c9c2d1', '#69676d', '#ceb966', '#9cb084', '#6bb1c9', '#6585cf', '#7e6bc9', '#a379bb', '#f2f2f2', '#7f7f7f', '#f4f2f5', '#e0e0e2', '#f5f1e0', '#ebefe6', '#e1eff4', '#e0e6f5', '#e5e1f4', '#ece4f1', '#d8d8d8', '#595959', '#e9e6ec', '#c2c1c5', '#ebe3c1', '#d7dfcd', '#c3dfe9', '#c1ceeb', '#cbc3e9', '#dac9e3', '#bfbfbf', '#3f3f3f', '#dedae3', '#a4a3a8', '#e1d5a3', '#c3cfb5', '#a6d0de', '#a2b5e2', '#b1a6de', '#c7aed6', '#a5a5a5', '#262626', '#9688a5', '#4e4d51', '#ae9638', '#758c5a', '#3d8da9', '#365bb0', '#533da9', '#7d4d99', '#7f7f7f', '#0c0c0c', '#635672', '#343336', '#746425', '#4e5d3c', '#295e70', '#243c75', '#372970', '#533366'],\n        columns: 10\n    },\n    austin: {\n        colors: ['#ffffff', '#000000', '#caf278', '#3e3d2d', '#94c600', '#71685a', '#ff6700', '#909465', '#956b43', '#fea022', '#f2f2f2', '#7f7f7f', '#f4fce4', '#dddcd0', '#efffc0', '#e3e1dc', '#ffe0cb', '#e8e9df', '#ece1d6', '#feecd2', '#d8d8d8', '#595959', '#e9f9c9', '#bbb9a1', '#dfff82', '#c8c3ba', '#ffc299', '#d2d4c0', '#dac3ad', '#fed9a6', '#bfbfbf', '#3f3f3f', '#dff7ae', '#ada598', '#cfff43', '#ada598', '#ffa365', '#bcbfa1', '#c8a585', '#fec67a', '#a5a5a5', '#262626', '#a9ea25', '#2e2d21', '#6f9400', '#544e43', '#bf4d00', '#6c6f4b', '#6f5032', '#d77b00', '#7f7f7f', '#0c0c0c', '#74a50f', '#1f1e16', '#4a6300', '#38342d', '#7f3300', '#484a32', '#4a3521', '#8f5200'],\n        columns: 10\n    },\n    clarity: {\n        colors: ['#ffffff', '#292934', '#f3f2dc', '#d2533c', '#93a299', '#ad8f67', '#726056', '#4c5a6a', '#808da0', '#79463d', '#f2f2f2', '#e7e7ec', '#e7e5b9', '#f6dcd8', '#e9ecea', '#eee8e0', '#e4dedb', '#d8dde3', '#e5e8ec', '#e9d6d3', '#d8d8d8', '#c4c4d1', '#d5d185', '#edbab1', '#d3d9d6', '#ded2c2', '#c9beb8', '#b2bcc8', '#ccd1d9', '#d3aea7', '#bfbfbf', '#8a8aa3', '#aca73b', '#e4978a', '#bec7c1', '#cdbba3', '#af9e94', '#8c9bac', '#b2bac6', '#bd857c', '#a5a5a5', '#56566e', '#56531d', '#a43925', '#6b7c72', '#866b48', '#554840', '#39434f', '#5c697b', '#5a342d', '#7f7f7f', '#3b3b4b', '#22210b', '#6d2619', '#47534c', '#594730', '#39302b', '#262d35', '#3d4652', '#3c231e'],\n        columns: 10\n    },\n    slipstream: {\n        colors: ['#ffffff', '#000000', '#b4dcfa', '#212745', '#4e67c8', '#5eccf3', '#a7ea52', '#5dceaf', '#ff8021', '#f14124', '#f2f2f2', '#7f7f7f', '#8bc9f7', '#c7cce4', '#dbe0f4', '#def4fc', '#edfadc', '#def5ef', '#ffe5d2', '#fcd9d3', '#d8d8d8', '#595959', '#4facf3', '#909aca', '#b8c2e9', '#beeafa', '#dbf6b9', '#beebdf', '#ffcca6', '#f9b3a7', '#bfbfbf', '#3f3f3f', '#0d78c9', '#5967af', '#94a3de', '#9ee0f7', '#caf297', '#9de1cf', '#ffb279', '#f68d7b', '#a5a5a5', '#262626', '#063c64', '#181d33', '#31479f', '#11b2eb', '#81d319', '#34ac8b', '#d85c00', '#c3260c', '#7f7f7f', '#0c0c0c', '#021828', '#101322', '#202f6a', '#0b769c', '#568c11', '#22725c', '#903d00', '#821908'],\n        columns: 10\n    },\n    metro: {\n        colors: ['#ffffff', '#000000', '#d6ecff', '#4e5b6f', '#7fd13b', '#ea157a', '#feb80a', '#00addc', '#738ac8', '#1ab39f', '#f2f2f2', '#7f7f7f', '#a7d6ff', '#d9dde4', '#e5f5d7', '#fad0e4', '#fef0cd', '#c5f2ff', '#e2e7f4', '#c9f7f1', '#d8d8d8', '#595959', '#60b5ff', '#b3bcca', '#cbecb0', '#f6a1c9', '#fee29c', '#8be6ff', '#c7d0e9', '#94efe3', '#bfbfbf', '#3f3f3f', '#007dea', '#8d9baf', '#b2e389', '#f272af', '#fed46b', '#51d9ff', '#aab8de', '#5fe7d5', '#a5a5a5', '#262626', '#003e75', '#3a4453', '#5ea226', '#af0f5b', '#c58c00', '#0081a5', '#425ea9', '#138677', '#7f7f7f', '#0c0c0c', '#00192e', '#272d37', '#3f6c19', '#750a3d', '#835d00', '#00566e', '#2c3f71', '#0c594f'],\n        columns: 10\n    },\n    flow: {\n        colors: ['#ffffff', '#000000', '#dbf5f9', '#04617b', '#0f6fc6', '#009dd9', '#0bd0d9', '#10cf9b', '#7cca62', '#a5c249', '#f2f2f2', '#7f7f7f', '#b2e9f2', '#b4ecfc', '#c7e2fa', '#c4eeff', '#c9fafc', '#c9faed', '#e4f4df', '#edf2da', '#d8d8d8', '#595959', '#76d9e8', '#6adafa', '#90c6f6', '#89deff', '#93f5f9', '#94f6db', '#cae9c0', '#dbe6b6', '#bfbfbf', '#3f3f3f', '#21b2c8', '#20c8f7', '#59a9f2', '#4fceff', '#5df0f6', '#5ff2ca', '#b0dfa0', '#c9da91', '#a5a5a5', '#262626', '#105964', '#02485c', '#0b5394', '#0075a2', '#089ca2', '#0b9b74', '#54a838', '#7e9532', '#7f7f7f', '#0c0c0c', '#062328', '#01303d', '#073763', '#004e6c', '#05686c', '#07674d', '#387025', '#546321'],\n        columns: 10\n    },\n    hardcover: {\n        colors: ['#ffffff', '#000000', '#ece9c6', '#895d1d', '#873624', '#d6862d', '#d0be40', '#877f6c', '#972109', '#aeb795', '#f2f2f2', '#7f7f7f', '#e1dca5', '#f2e0c6', '#f0d0c9', '#f6e6d5', '#f5f2d8', '#e7e5e1', '#fbc7bc', '#eef0e9', '#d8d8d8', '#595959', '#d0c974', '#e6c28d', '#e2a293', '#eeceaa', '#ece5b2', '#cfccc3', '#f78f7a', '#dee2d4', '#bfbfbf', '#3f3f3f', '#a29a36', '#daa454', '#d4735e', '#e6b681', '#e2d88c', '#b7b2a5', '#f35838', '#ced3bf', '#a5a5a5', '#262626', '#514d1b', '#664515', '#65281a', '#a2641f', '#a39428', '#655f50', '#711806', '#879464', '#7f7f7f', '#0c0c0c', '#201e0a', '#442e0e', '#431b11', '#6c4315', '#6d621a', '#433f35', '#4b1004', '#5a6243'],\n        columns: 10\n    },\n    trek: {\n        colors: ['#ffffff', '#000000', '#fbeec9', '#4e3b30', '#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529', '#f2f2f2', '#7f7f7f', '#f7e09e', '#e1d6cf', '#fcecd5', '#eddfda', '#f0e7e5', '#f3eae1', '#ece9e3', '#f5e3d1', '#d8d8d8', '#595959', '#f3cc5f', '#c4ad9f', '#f9d9ab', '#dcc0b6', '#e1d0cc', '#e7d5c4', '#d9d4c7', '#ebc7a3', '#bfbfbf', '#3f3f3f', '#d29f0f', '#a78470', '#f6c781', '#cba092', '#d2b9b2', '#dbc1a7', '#c6bfab', '#e1ac76', '#a5a5a5', '#262626', '#694f07', '#3a2c24', '#c87d0e', '#7b4b3a', '#926255', '#a17242', '#7b7153', '#90571e', '#7f7f7f', '#0c0c0c', '#2a1f03', '#271d18', '#855309', '#523226', '#614138', '#6b4c2c', '#524b37', '#603a14'],\n        columns: 10\n    },\n    verve: {\n        colors: ['#ffffff', '#000000', '#d2d2d2', '#666666', '#ff388c', '#e40059', '#9c007f', '#68007f', '#005bd3', '#00349e', '#f2f2f2', '#7f7f7f', '#bdbdbd', '#e0e0e0', '#ffd7e8', '#ffc6dc', '#ffb8f1', '#f1b2ff', '#c3dcff', '#b8cfff', '#d8d8d8', '#595959', '#9d9d9d', '#c1c1c1', '#ffafd1', '#ff8eba', '#ff71e4', '#e365ff', '#87baff', '#72a0ff', '#bfbfbf', '#3f3f3f', '#696969', '#a3a3a3', '#ff87ba', '#ff5597', '#ff2ad7', '#d519ff', '#4b98ff', '#2b71ff', '#a5a5a5', '#262626', '#343434', '#4c4c4c', '#e90062', '#ab0042', '#75005f', '#4e005f', '#00449e', '#002676', '#7f7f7f', '#0c0c0c', '#151515', '#333333', '#9b0041', '#72002c', '#4e003f', '#34003f', '#002d69', '#00194f'],\n        columns: 10\n    },\n    monochrome: {\n        colors: ['#000000', '#1a1a1a', '#333333', '#4d4d4d', '#666666', '#808080', '#999999', '#b3b3b3', '#cccccc', '#e6e6e6', '#f2f2f2', '#ffffff'],\n        columns: 12\n    }\n};\n//# sourceMappingURL=palette-presets.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ColorPaletteService } from './utils/color-palette.service';\nimport { classNames, Keys, dispatchEvent, guid, getTabIndex } from '@progress/kendo-react-common';\nimport { PALETTEPRESETS } from './models/palette-presets';\nimport { isPresent } from './utils/misc';\nimport { parseColor } from './utils/color-parser';\n/**\n * @hidden\n */\nexport var DEFAULT_TILE_SIZE = 24;\n/**\n * @hidden\n */\nexport var DEFAULT_COLUMNS_COUNT = 10;\n/**\n * @hidden\n */\nexport var DEFAULT_PRESET = 'office';\n/**\n * Represents the [KendoReact ColorPalette component]({% slug overview_colorpalette %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return <ColorPalette palette='basic' />;\n *     }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar ColorPalette = /** @class */ (function (_super) {\n    __extends(ColorPalette, _super);\n    function ColorPalette(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.wrapper = null;\n        _this.guid = guid();\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this.wrapper) {\n                _this.wrapper.focus();\n            }\n        };\n        _this.onKeyDown = function (event) {\n            switch (event.keyCode) {\n                case Keys.down:\n                    _this.handleCellNavigation(0, 1);\n                    break;\n                case Keys.up:\n                    _this.handleCellNavigation(0, -1);\n                    break;\n                case Keys.right:\n                    _this.handleCellNavigation(1, 0);\n                    break;\n                case Keys.left:\n                    _this.handleCellNavigation(-1, 0);\n                    break;\n                case Keys.enter:\n                    _this.handleEnter(event);\n                    break;\n                default: return;\n            }\n            event.preventDefault();\n        };\n        _this.onColorClick = function (color, event) {\n            if (_this.isUncontrolled) {\n                _this.setState({ selectedColor: color, focusedColor: color });\n            }\n            else {\n                _this.setState({ focusedColor: color });\n            }\n            _this.dispatchChangeEvent(color, event);\n        };\n        _this.onFocus = function () {\n            _this.setState({ focusedColor: _this.state.selectedColor || _this.paletteService.colorRows[0][0] });\n        };\n        _this.onBlur = function () {\n            _this.setState({ focusedColor: undefined });\n        };\n        // The empty string for the `value` prop means no selection but controlled mode.\n        _this.state = {\n            selectedColor: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue,\n            isFirstRender: true\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    ColorPalette.prototype.render = function () {\n        var _this = this;\n        var paletteInfo = this.getPaletteInfo();\n        var svc = this.paletteService = new ColorPaletteService();\n        svc.setColorMatrix(paletteInfo.colors, paletteInfo.columns);\n        var selectedCellCoords = svc.getCellCoordsFor(this.state.selectedColor);\n        var focusedCellCoords = svc.getCellCoordsFor(this.state.focusedColor);\n        var className = classNames('k-widget k-colorpalette', { 'k-state-disabled': this.props.disabled });\n        if (paletteInfo.colors.length) {\n            return (React.createElement(\"div\", { id: this.props.id, className: className, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-activedescendant\": selectedCellCoords && this.createCellId(selectedCellCoords), \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), ref: function (el) { return _this.wrapper = el; } },\n                React.createElement(\"div\", { role: \"grid\" },\n                    React.createElement(\"table\", { className: \"k-palette k-reset\", role: \"presentation\" },\n                        React.createElement(\"tbody\", null, this.renderRows(svc.colorRows, selectedCellCoords, focusedCellCoords))))));\n        }\n        else {\n            // In this way, the code prevents an eventual focus of the component when no cells are available.\n            // This is needed because upon focus the first cell gets focused.\n            return '';\n        }\n    };\n    /**\n     * @hidden\n     */\n    ColorPalette.getDerivedStateFromProps = function (props, state) {\n        if (!state.isFirstRender && props.value !== undefined) {\n            // The component is in controlled mode.\n            if (props.value === '' && state.selectedColor !== undefined) {\n                // The selection has to be removed.\n                return { selectedColor: undefined };\n            }\n            else if (props.value !== '' && props.value !== state.selectedColor) {\n                return { selectedColor: props.value };\n            }\n        }\n        else if (state.isFirstRender) {\n            return { isFirstRender: false };\n        }\n        return null;\n    };\n    ColorPalette.prototype.handleCellNavigation = function (horizontalStep, verticalStep) {\n        if (this.focusedColorCooridanates) {\n            var newCoords = this.paletteService.getNextCell(this.focusedColorCooridanates, horizontalStep, verticalStep);\n            this.setState({ focusedColor: this.paletteService.getColorAt(newCoords) });\n        }\n        else {\n            this.setState({ focusedColor: this.paletteService.colorRows[0][0] });\n        }\n    };\n    ColorPalette.prototype.handleEnter = function (event) {\n        if (this.isUncontrolled) {\n            this.setState({ selectedColor: this.state.focusedColor });\n        }\n        this.dispatchChangeEvent(this.state.focusedColor, event);\n    };\n    ColorPalette.prototype.dispatchChangeEvent = function (value, event) {\n        dispatchEvent(this.props.onChange, event, this, { value: value, rgbaValue: parseColor(value, 'rgba') });\n    };\n    Object.defineProperty(ColorPalette.prototype, \"focusedColorCooridanates\", {\n        get: function () {\n            return this.state.focusedColor ? this.paletteService.getCellCoordsFor(this.state.focusedColor) : undefined;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ColorPalette.prototype, \"isUncontrolled\", {\n        get: function () {\n            return this.props.value === undefined;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ColorPalette.prototype.getPaletteInfo = function () {\n        if (typeof this.props.palette === 'string') {\n            var preset = PALETTEPRESETS[this.props.palette];\n            if (isPresent(preset)) {\n                return {\n                    colors: preset.colors,\n                    columns: this.props.columns || preset.columns || DEFAULT_COLUMNS_COUNT\n                };\n            }\n            else {\n                return { colors: [], columns: 0 };\n            }\n        }\n        else {\n            return { colors: this.props.palette || [], columns: this.props.columns || DEFAULT_COLUMNS_COUNT };\n        }\n    };\n    ColorPalette.prototype.renderRows = function (rows, selectedCellCoords, focusedCellCoords) {\n        var _this = this;\n        return rows.map(function (row, i) {\n            return React.createElement(\"tr\", { role: \"row\", key: i }, _this.renderColumns(row, i, selectedCellCoords, focusedCellCoords));\n        });\n    };\n    ColorPalette.prototype.renderColumns = function (columns, rowIndex, selectedCellCoords, focusedCellCoords) {\n        var _this = this;\n        var rowIsSelected = selectedCellCoords !== undefined && selectedCellCoords.row === rowIndex;\n        var selectedColumn = selectedCellCoords && selectedCellCoords.col;\n        var rowIsFocused = focusedCellCoords !== undefined && focusedCellCoords.row === rowIndex;\n        var focusedColumn = focusedCellCoords && focusedCellCoords.col;\n        var tileSize = typeof this.props.tileSize !== 'number' ?\n            this.props.tileSize : { width: this.props.tileSize, height: this.props.tileSize };\n        var width = tileSize.width + 'px';\n        var height = tileSize.height + 'px';\n        return columns.map(function (color, i) {\n            var isSelected = rowIsSelected && selectedColumn === i;\n            var className = classNames('k-item', {\n                'k-state-selected': isSelected,\n                'k-state-focused': rowIsFocused && focusedColumn === i\n            });\n            return (React.createElement(\"td\", { className: className, \"aria-label\": color, \"aria-selected\": isSelected ? true : _this.props.disabled ? undefined : false, style: { backgroundColor: color, width: width, height: height, minWidth: width }, onClick: function (event) { return _this.onColorClick(color, event); }, id: _this.createCellId({ row: rowIndex, col: i }), key: i }));\n        });\n    };\n    ColorPalette.prototype.createCellId = function (cellCoords) {\n        return this.guid + \"_\" + cellCoords.row + \"_\" + cellCoords.col;\n    };\n    /**\n     * @hidden\n     */\n    ColorPalette.propTypes = {\n        palette: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),\n        columns: PropTypes.number,\n        tileSize: PropTypes.any,\n        defaultValue: PropTypes.string,\n        value: PropTypes.string,\n        disabled: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        onChange: PropTypes.func,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    ColorPalette.defaultProps = {\n        palette: DEFAULT_PRESET,\n        tileSize: DEFAULT_TILE_SIZE\n    };\n    return ColorPalette;\n}(React.Component));\nexport { ColorPalette };\n//# sourceMappingURL=ColorPalette.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ANCHOR_VERTICAL_ALIGN = 'bottom';\n/**\n * @hidden\n */\nvar POPUP_VERTICAL_ALIGN = 'top';\n/**\n * @hidden\n */\nexport var Picker = function (props) {\n    var popupSettings = props.popupSettings || {};\n    var horizontalAlign = props.dir === 'rtl' ? 'right' : 'left';\n    var anchorAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: ANCHOR_VERTICAL_ALIGN }); }, [horizontalAlign]);\n    var popupAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: POPUP_VERTICAL_ALIGN }); }, [horizontalAlign]);\n    return (React.createElement(React.Fragment, null,\n        props.input,\n        props.button,\n        React.createElement(Popup, __assign({ style: __assign({}, (popupSettings || {}).style, { direction: props.dir }) }, popupSettings, { anchor: props.popupAnchor, anchorAlign: anchorAlign, popupAlign: popupAlign, show: props.open, open: props.onOpen, close: props.onClose, className: classNames('k-reset', popupSettings.className) }), props.content)));\n};\nPicker.displayName = 'KendoPickerComponent';\n//# sourceMappingURL=Picker.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useDir, getTabIndex } from '@progress/kendo-react-common';\nimport { Picker } from './Picker';\nimport { ColorGradient } from './ColorGradient';\nimport { ColorPalette, DEFAULT_PRESET, DEFAULT_TILE_SIZE } from './ColorPalette';\n/**\n * @hidden\n */\nvar DEFAULT_GRADIENT_SETTINGS = {\n    opacity: true\n};\n/**\n * @hidden\n */\nvar DEFAULT_PALETTE_SETTINGS = {\n    palette: DEFAULT_PRESET,\n    tileSize: DEFAULT_TILE_SIZE\n};\n/**\n * @hidden\n */\nvar isControlled = function (prop) {\n    return prop !== undefined;\n};\n/**\n * Represents the [KendoReact ColorPicker component]({% slug overview_colorpicker %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return <ColorPicker />;\n *     }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPicker = React.forwardRef(function (props, target) {\n    var popupSettings = props.popupSettings, gradientSettings = props.gradientSettings, paletteSettings = props.paletteSettings, valid = props.valid, disabled = props.disabled, tabIndex = props.tabIndex, view = props.view, icon = props.icon, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur;\n    var focusableElementRef = React.useRef(null);\n    var gradientRef = React.useRef(null);\n    var paletteRef = React.useRef(null);\n    var blurTimeoutRef = React.useRef();\n    var buttonRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (focusableElementRef.current) {\n            focusableElementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        // we agreed that each element will have focus method exposed\n        element: focusableElementRef.current,\n        actionElement: buttonRef.current,\n        focus: focusElement\n    }); });\n    var _a = React.useState(false), focused = _a[0], setFocused = _a[1];\n    var _b = React.useState(props.defaultValue), stateValue = _b[0], setStateValue = _b[1];\n    var _c = React.useState(false), stateOpen = _c[0], setStateOpen = _c[1];\n    var isValueControlled = isControlled(props.value);\n    var isOpenControlled = isControlled(props.open);\n    var value = isValueControlled ? props.value : stateValue;\n    var open = isOpenControlled ? props.open : stateOpen;\n    var setOpen = React.useCallback(function (nextOpen, isBlur) {\n        if (!isOpenControlled) {\n            if (!nextOpen && !isBlur && focusableElementRef && focusableElementRef.current) {\n                focusableElementRef.current.focus();\n            }\n            setStateOpen(nextOpen);\n        }\n    }, [isOpenControlled]);\n    var onKeyDownHandler = React.useCallback(function (event) {\n        var altKey = event.altKey, keyCode = event.keyCode;\n        if (keyCode === Keys.esc) {\n            setOpen(false);\n            return;\n        }\n        if (keyCode === Keys.enter && !isOpenControlled) {\n            event.preventDefault();\n            event.stopPropagation();\n            setOpen(!open);\n            return;\n        }\n        if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n            event.preventDefault();\n            event.stopPropagation();\n            if (keyCode === Keys.up && focusableElementRef && focusableElementRef.current) {\n                focusableElementRef.current.focus();\n                setOpen(false);\n            }\n            if (keyCode === Keys.down) {\n                setOpen(true);\n            }\n        }\n    }, [open, isOpenControlled]);\n    var onOpenHandler = React.useCallback(function () {\n        // Skip content autofocus when in controlled mode\n        if (!isOpenControlled) {\n            if (gradientRef.current) {\n                gradientRef.current.focus();\n            }\n            else if (paletteRef.current) {\n                paletteRef.current.focus();\n            }\n        }\n    }, [isOpenControlled]);\n    var onClickHandler = React.useCallback(function () {\n        setOpen(!open, true);\n    }, [open]);\n    var onFocusHandler = React.useCallback(function (event) {\n        if (blurTimeoutRef.current) {\n            clearTimeout(blurTimeoutRef.current);\n            blurTimeoutRef.current = undefined;\n            // case where moving back to input from popup\n            // if (event.target === focusableElementRef.current) {\n            // setOpen(false); // in this case we should focus input on keydown\n            // }\n        }\n        else {\n            setFocused(true);\n        }\n        if (onFocus) {\n            onFocus.call(undefined, {\n                nativeEvent: event.nativeEvent,\n                syntheticEvent: event\n            });\n        }\n    }, [onFocus]);\n    var onBlurTimeout = React.useCallback(function () {\n        setOpen(false, true);\n        setFocused(false);\n        blurTimeoutRef.current = undefined;\n    }, []);\n    var onBlurHandler = React.useCallback(function (event) {\n        clearTimeout(blurTimeoutRef.current);\n        blurTimeoutRef.current = setTimeout(onBlurTimeout);\n        if (onBlur) {\n            onBlur.call(undefined, {\n                nativeEvent: event.nativeEvent,\n                syntheticEvent: event\n            });\n        }\n    }, [onBlur]);\n    var onChangeHandler = React.useCallback(function (event, isPalette) {\n        var currentValue = isPalette ? event.rgbaValue : event.value;\n        if (!isValueControlled) {\n            setStateValue(currentValue);\n        }\n        if (isPalette) {\n            setOpen(false);\n        }\n        if (onChange) {\n            onChange.call(undefined, {\n                value: currentValue,\n                nativeEvent: event.nativeEvent,\n                syntheticEvent: event.syntheticEvent\n            });\n        }\n    }, [isValueControlled, onChange]);\n    var onPaletteChangeHandler = React.useCallback(function (event) { return onChangeHandler(event, true); }, [isControlled, onChangeHandler]);\n    var dir = useDir(focusableElementRef, props.dir);\n    var iconClassName = props.iconClassName || (icon && \"k-icon k-i-\" + icon);\n    var wrapperClassName = classNames({\n        'k-widget': true,\n        'k-colorpicker': true,\n        'k-state-invalid': valid === false\n    });\n    var className = React.useMemo(function () { return classNames({\n        'k-picker-wrap': true,\n        'k-state-default': !disabled,\n        'k-state-disabled': disabled,\n        'k-state-focused': focused\n    }); }, [focused, disabled]);\n    return (React.createElement(\"span\", { className: wrapperClassName, dir: dir },\n        React.createElement(\"span\", { id: props.id, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, className: className, ref: focusableElementRef, tabIndex: getTabIndex(tabIndex, disabled), onKeyDown: onKeyDownHandler, onFocus: onFocusHandler, onBlur: onBlurHandler },\n            React.createElement(Picker, { dir: dir, open: open, onOpen: onOpenHandler, popupAnchor: focusableElementRef.current || undefined, popupSettings: __assign({}, popupSettings), input: (!iconClassName ? (React.createElement(\"span\", { className: 'k-selected-color', style: { backgroundColor: value } }, !value && React.createElement(\"span\", { className: 'k-icon k-i-line' }))) : (React.createElement(\"span\", { className: classNames('k-tool-icon', iconClassName) },\n                    React.createElement(\"span\", { className: 'k-selected-color', style: { backgroundColor: value } })))), button: (React.createElement(\"span\", { onClick: onClickHandler, className: 'k-select', ref: buttonRef },\n                    React.createElement(\"span\", { className: 'k-icon k-i-arrow-s' }))), content: (React.createElement(React.Fragment, null,\n                    (view === 'combo' || view === 'gradient') && (React.createElement(ColorGradient, __assign({}, gradientSettings, { tabIndex: 0, ref: gradientRef, value: value, onChange: onChangeHandler }))),\n                    (view === 'combo' || view === 'palette') && (React.createElement(ColorPalette, __assign({}, paletteSettings, { ref: paletteRef, value: value, onChange: onPaletteChangeHandler }))))) }))));\n});\nColorPicker.propTypes = {\n    value: PropTypes.string,\n    defaultValue: PropTypes.string,\n    disabled: PropTypes.bool,\n    view: PropTypes.oneOf(['gradient', 'palette', 'combo']),\n    dir: PropTypes.string,\n    id: PropTypes.string,\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string\n};\nColorPicker.defaultProps = {\n    view: 'palette',\n    gradientSettings: DEFAULT_GRADIENT_SETTINGS,\n    paletteSettings: DEFAULT_PALETTE_SETTINGS\n};\nColorPicker.displayName = 'KendoColorPicker';\n//# sourceMappingURL=ColorPicker.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nvar Input = /** @class */ (function (_super) {\n    __extends(Input, _super);\n    function Input(props) {\n        var _this = _super.call(this, props) || this;\n        _this._inputId = guid();\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._input) {\n                _this._input.focus();\n            }\n        };\n        _this.isInvalid = function (state) {\n            var result = false;\n            for (var prop in state) {\n                if (state.hasOwnProperty(prop)) {\n                    result = result || state[prop];\n                }\n            }\n            return result;\n        };\n        /**\n         * @hidden\n         */\n        _this.setValidity = function () {\n            if (_this._input && _this._input.setCustomValidity) {\n                _this.validity.valid || !_this.validityStyles\n                    ? _this._input.classList.remove('k-state-invalid')\n                    : _this._input.classList.add('k-state-invalid');\n                _this._input.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || '');\n            }\n        };\n        _this.handleChange = function (event) {\n            _this.setState({\n                value: event.target.value\n            });\n            _this.valueDuringOnChange = event.target.value;\n            if (_this.props.onChange) {\n                _this.props.onChange.call(undefined, {\n                    syntheticEvent: event,\n                    nativeEvent: event.nativeEvent,\n                    value: event.target.value,\n                    target: _this\n                });\n            }\n            _this.valueDuringOnChange = undefined;\n        };\n        /**\n         * @hidden\n         */\n        _this.handleAutoFill = function (e) {\n            if (e.animationName === 'autoFillStart') {\n                var parent_1 = e.target.parentNode;\n                if (parent_1 && parent_1.classList.contains('k-state-empty')) {\n                    parent_1.classList.remove('k-state-empty');\n                }\n            }\n        };\n        _this.state = {\n            value: _this.props.defaultValue || Input.defaultProps.defaultValue\n        };\n        return _this;\n    }\n    Object.defineProperty(Input.prototype, \"element\", {\n        /**\n         * Gets the native input element of the Input component.\n         */\n        get: function () {\n            return this._input;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Input.prototype, \"value\", {\n        /**\n         * Gets the value of the Input.\n         */\n        get: function () {\n            return this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.value !== undefined\n                    ? this.props.value\n                    : this.state.value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Input.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the Input.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Input.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the Input is set.\n         */\n        get: function () {\n            var result = {\n                badInput: this._input ? this._input.validity.badInput : false,\n                patternMismatch: this._input\n                    ? this._input.validity.patternMismatch\n                    : false,\n                rangeOverflow: this._input ? this._input.validity.rangeOverflow : false,\n                rangeUnderflow: this._input ? this._input.validity.rangeUnderflow : false,\n                stepMismatch: this._input ? this._input.validity.stepMismatch : false,\n                tooLong: this._input ? this._input.validity.tooLong : false,\n                typeMismatch: this._input ? this._input.validity.typeMismatch : false,\n                valueMissing: this._input ? this._input.validity.valueMissing : false\n            };\n            return __assign({}, result, { customError: this.props.validationMessage !== undefined, valid: this.props.valid !== undefined\n                    ? this.props.valid\n                    : this._input\n                        ? !this.isInvalid(result)\n                        : true });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Input.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : Input.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Input.prototype.componentDidMount = function () {\n        this.forceUpdate();\n    };\n    /**\n     * @hidden\n     */\n    Input.prototype.componentDidUpdate = function () {\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    Input.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, className = _a.className, label = _a.label, id = _a.id, validationMessage = _a.validationMessage, defaultValue = _a.defaultValue, valid = _a.valid, \n        // Removed to support direct use in Form Field component\n        visited = _a.visited, touched = _a.touched, modified = _a.modified, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, validityStyles = _a.validityStyles, style = _a.style, props = __rest(_a, [\"className\", \"label\", \"id\", \"validationMessage\", \"defaultValue\", \"valid\", \"visited\", \"touched\", \"modified\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"validityStyles\", \"style\"]);\n        var inputId = id || this._inputId;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var inputClassName = classNames(className, 'k-textbox');\n        var textbox = (React.createElement(\"input\", __assign({ \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }, props, { style: !label\n                ? style\n                : undefined, value: this.value, id: inputId, className: inputClassName, onChange: this.handleChange, onAnimationStart: this.handleAutoFill, ref: function (el) { _this._input = el; } })));\n        return label ?\n            (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: String(this.value), editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: textbox, style: style, dir: props.dir }))\n            : textbox;\n    };\n    /**\n     * @hidden\n     */\n    Input.propTypes = {\n        label: PropTypes.string,\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        validate: PropTypes.bool,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    Input.defaultProps = {\n        defaultValue: '',\n        required: false,\n        validityStyles: true\n    };\n    return Input;\n}(React.Component));\nexport { Input };\n//# sourceMappingURL=Input.js.map","/**\n * @hidden\n */\nexport var ResultType;\n(function (ResultType) {\n    ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n    ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n    ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nvar Result = /** @class */ (function () {\n    function Result(value, rest, type) {\n        if (type === void 0) { type = ResultType.Undefined; }\n        this.value = value;\n        this.rest = rest;\n        this.type = type;\n    }\n    // map :: Functor f => f a ~> (a -> b) -> f b\n    Result.prototype.map = function (fn) {\n        return new Result(fn(this.value), this.rest);\n    };\n    // chain :: Chain m => m a ~> (a -> m b) -> m b\n    Result.prototype.chain = function (fn) {\n        return fn(this.value, this.rest);\n    };\n    Result.prototype.fold = function (s, _ /*we don't need it*/) {\n        return s(this.value, this.rest);\n    };\n    Result.prototype.concat = function (r) {\n        return this.map(function (vs, _) { return r.chain(function (v, __) { return vs.concat([v]); }); });\n    };\n    Result.prototype.toString = function () {\n        return \"Result({ value: '\" + this.value + \"', rest: \" + this.rest + \" })\";\n    };\n    return Result;\n}());\nexport { Result };\n//# sourceMappingURL=result.js.map","/**\n * @hidden\n */\nvar Stream = /** @class */ (function () {\n    function Stream(input, control) {\n        if (input === void 0) { input = []; }\n        if (control === void 0) { control = []; }\n        this.input = input;\n        this.control = control;\n        this.inputCursor = 0;\n        this.controlCursor = 0;\n    }\n    Stream.prototype.eof = function () {\n        return this.inputCursor >= this.input.length;\n    };\n    // Get the first value from the input.\n    Stream.prototype.next = function () {\n        return {\n            char: this.input[this.inputCursor++],\n            control: this.control[this.controlCursor++]\n        };\n    };\n    Stream.prototype.peek = function () {\n        return {\n            char: this.input[this.inputCursor],\n            control: this.control[this.controlCursor]\n        };\n    };\n    Stream.prototype.eat_input = function () {\n        this.inputCursor++;\n    };\n    Stream.prototype.eat_control = function () {\n        this.controlCursor++;\n    };\n    Stream.prototype.eat = function () {\n        this.inputCursor++;\n        this.controlCursor++;\n    };\n    return Stream;\n}());\nexport { Stream };\n//# sourceMappingURL=stream.js.map","import { Result, ResultType } from './result';\nimport { Stream } from './stream';\nvar toArray = function (value) { return (value || '').split(''); };\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nvar Parser = /** @class */ (function () {\n    function Parser(parse) {\n        this.parse = parse;\n    }\n    Parser.prototype.run = function (input, control) {\n        if (control === void 0) { control = ''; }\n        if (input instanceof Stream) {\n            return this.parse(input);\n        }\n        else {\n            return this.parse(new Stream(toArray(input), toArray(control)));\n        }\n    };\n    // map :: Functor f => f a ~> (a -> b) -> f b\n    Parser.prototype.map = function (f) {\n        var _this = this;\n        return new Parser(function (stream) { return _this.parse(stream).map(f); });\n    };\n    // chain :: Chain m => m a ~> (a -> m b) -> m b\n    Parser.prototype.chain = function (f) {\n        var _this = this;\n        return new Parser(function (stream) { return _this.parse(stream).chain(function (v, s) { return f(v).run(s); }); });\n    };\n    Parser.prototype.isLiteral = function (c) {\n        return this.run(c).type === ResultType.Literal;\n    };\n    return Parser;\n}());\nexport { Parser };\n/**\n * @hidden\n */\nexport var mask = function (_a) {\n    var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n    return function (rule) { return new Parser(function (stream) {\n        while (!stream.eof()) {\n            var _a = stream.peek(), char = _a.char, control = _a.control;\n            if (char === control && control === prompt) {\n                stream.eat();\n                return new Result(prompt, stream, ResultType.Mask);\n            }\n            if (rule.test(char)) {\n                stream.eat();\n                return new Result(char, stream, ResultType.Mask);\n            }\n            if (char === promptPlaceholder) {\n                stream.eat();\n                return new Result(prompt, stream, ResultType.Mask);\n            }\n            stream.eat_input();\n        }\n        stream.eat();\n        return new Result(prompt, stream, ResultType.Mask);\n    }); };\n};\n/**\n * @hidden\n */\nexport var literal = function (_token) { return new Parser(function (stream) {\n    //    let {char, control} = stream.peek();\n    var char = stream.peek().char;\n    if (char === _token) {\n        stream.eat();\n        return new Result(_token, stream, ResultType.Literal);\n    }\n    //    if (control === _token) {\n    //        while (!stream.eof() && char !== _token) {\n    //            stream.eat_input();\n    //            char = stream.peek().char;\n    //        }\n    //    }\n    //\n    //    if (control !== undefined) {\n    //        stream.eat();\n    //    }\n    return new Result(_token, stream, ResultType.Literal);\n}); };\n/**\n * @hidden\n */\nexport var unmask = function (prompt) { return function (rule) { return new Parser(function (stream) {\n    while (!stream.eof()) {\n        var _a = stream.peek(), char = _a.char, control = _a.control;\n        if (char === prompt && control === prompt) {\n            stream.eat();\n            return new Result(char, stream);\n        }\n        if (rule.test(char)) {\n            stream.eat();\n            return new Result(char, stream);\n        }\n        stream.eat_input();\n    }\n    stream.eat();\n    return new Result('', stream);\n}); }; };\n/**\n * @hidden\n */\nexport var unliteral = function (_token) { return new Parser(function (stream) {\n    if (stream.eof()) {\n        return new Result('', stream);\n    }\n    var char = stream.peek().char;\n    if (char === _token) {\n        stream.eat();\n    }\n    return new Result(_token, stream);\n}); };\n/**\n * @hidden\n */\nexport var token = function (rules, creator) { return new Parser(function (stream) {\n    var char = stream.next().char;\n    var rule = rules[char];\n    if (char === ESCAPE_CHARACTER) {\n        char = stream.next().char;\n        return new Result(creator.literal(char), stream);\n    }\n    if (!rule) {\n        return new Result(creator.literal(char), stream);\n    }\n    return new Result(creator.mask(rule), stream);\n}); };\n/**\n * @hidden\n */\nexport var rawMask = function (_a) {\n    var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n    return new Parser(function (stream) {\n        var char = stream.next().char;\n        if (char === prompt) {\n            return new Result(promptPlaceholder, stream);\n        }\n        return new Result(char, stream);\n    });\n};\n/**\n * @hidden\n */\nexport var rawLiteral = function (includeLiterals) { return new Parser(function (stream) {\n    var char = stream.next().char;\n    if (includeLiterals) {\n        return new Result(char, stream);\n    }\n    return new Result('', stream);\n}); };\n//# sourceMappingURL=parsers.js.map","import { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\nvar always = function (value) { return new Parser(function (stream) { return new Result(value, stream); }); };\n/**\n * @hidden\n */\nvar append = function (p1, p2) { return p1.chain(function (vs) { return p2.map(function (v) { return vs.concat([v]); }); }); };\n/**\n * @hidden\n */\nexport var sequence = function (list) { return list.reduce(function (acc, parser) { return append(acc, parser); }, always([])); };\n/**\n * @hidden\n */\nexport var greedy = function (parser) { return new Parser(function (stream) {\n    var result = new Result([], stream);\n    while (!stream.eof()) {\n        result = result.concat(parser.run(stream));\n    }\n    return result;\n}); };\n//# sourceMappingURL=combinators.js.map","import { greedy, sequence } from './parsing/combinators';\nimport { literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\nvar MaskingService = /** @class */ (function () {\n    function MaskingService() {\n        this.rules = {};\n        this.prompt = '_';\n        this.mask = '';\n        this.promptPlaceholder = ' ';\n        this.includeLiterals = false;\n        this.maskTokens = [];\n        this.unmaskTokens = [];\n        this.rawTokens = [];\n        this.validationTokens = [];\n    }\n    MaskingService.prototype.update = function (_a) {\n        var _b = _a.mask, mask = _b === void 0 ? '' : _b, _c = _a.prompt, prompt = _c === void 0 ? '' : _c, _d = _a.promptPlaceholder, promptPlaceholder = _d === void 0 ? ' ' : _d, _e = _a.rules, rules = _e === void 0 ? {} : _e, _f = _a.includeLiterals, includeLiterals = _f === void 0 ? false : _f;\n        this.mask = mask;\n        this.prompt = prompt;\n        this.promptPlaceholder = promptPlaceholder;\n        this.rules = rules;\n        this.includeLiterals = includeLiterals;\n        this.tokenize();\n    };\n    MaskingService.prototype.validationValue = function (maskedValue) {\n        if (maskedValue === void 0) { maskedValue = ''; }\n        var value = maskedValue;\n        sequence(this.validationTokens)\n            .run(maskedValue)\n            .fold(function (unmasked) {\n            value = unmasked.join('');\n        });\n        return value;\n    };\n    MaskingService.prototype.rawValue = function (maskedValue) {\n        if (maskedValue === void 0) { maskedValue = ''; }\n        var value = maskedValue;\n        if (!this.rawTokens.length) {\n            return value;\n        }\n        sequence(this.rawTokens)\n            .run(maskedValue)\n            .fold(function (unmasked) {\n            value = unmasked.join('');\n        });\n        return value;\n    };\n    /**\n     * @hidden\n     */\n    MaskingService.prototype.maskRaw = function (rawValue) {\n        if (rawValue === void 0) { rawValue = ''; }\n        var value = rawValue;\n        if (!this.maskTokens.length) {\n            return value;\n        }\n        sequence(this.maskTokens)\n            .run(rawValue)\n            .fold(function (masked) {\n            value = masked.join('');\n        });\n        return value;\n    };\n    MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n        if (input.length < control.length) {\n            return this.maskRemoved(input, control, splitPoint);\n        }\n        return this.maskInserted(input, control, splitPoint);\n    };\n    MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n        var value = '';\n        var selection = end;\n        var beforeChange = oldValue.split('').slice(0, start);\n        var afterChange = oldValue.split('').slice(end);\n        sequence(this.maskTokens.slice(start, end))\n            .run(pasted)\n            .fold(function (masked) {\n            value = beforeChange\n                .concat(masked)\n                .concat(afterChange)\n                .join('');\n        });\n        return {\n            selection: selection,\n            value: value\n        };\n    };\n    MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n        var _this = this;\n        var value = '';\n        var selection = splitPoint;\n        var unchanged = input.split('').slice(splitPoint);\n        var changed = input.split('').slice(0, splitPoint).join('');\n        var take = this.maskTokens.length - (input.length - splitPoint);\n        sequence(this.maskTokens.slice(0, take))\n            .run(changed, control)\n            .fold(function (masked) {\n            selection = _this.adjustPosition(masked, selection);\n            value = masked.concat(unchanged).join('');\n        });\n        return {\n            selection: selection,\n            value: value\n        };\n    };\n    MaskingService.prototype.adjustPosition = function (input, selection) {\n        var caretChar = input[selection];\n        var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n        if (!isLiteral && caretChar !== this.prompt) {\n            return selection + 1;\n        }\n        return selection;\n    };\n    MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n        var _this = this;\n        var value = '';\n        var selection = splitPoint;\n        var changed = input.slice(0, splitPoint);\n        sequence(this.unmaskTokens)\n            .run(changed, control)\n            .chain(function (unmasked) {\n            selection = unmasked.join('').length;\n            var unchanged = control.slice(selection);\n            return sequence(_this.maskTokens)\n                .run(unmasked.join('') + unchanged, control);\n        })\n            .fold(function (masked) {\n            value = masked.join('');\n        });\n        return {\n            selection: selection,\n            value: value\n        };\n    };\n    Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n        get: function () {\n            var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n            return {\n                literal: function (rule) { return literal(rule); },\n                mask: function (rule) { return maskParser({ prompt: prompt, promptPlaceholder: promptPlaceholder })(rule); }\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n        get: function () {\n            var _this = this;\n            return {\n                literal: function (rule) { return unliteral(rule); },\n                mask: function (rule) { return unmask(_this.prompt)(rule); }\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n        get: function () {\n            var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder, includeLiterals = _a.includeLiterals;\n            return {\n                literal: function (_) { return rawLiteral(includeLiterals); },\n                mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: promptPlaceholder }); }\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n        get: function () {\n            var prompt = this.prompt;\n            return {\n                literal: function (_) { return rawLiteral(false); },\n                mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: '' }); }\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MaskingService.prototype.tokenize = function () {\n        var _this = this;\n        greedy(token(this.rules, this.maskTokenCreator))\n            .run(this.mask)\n            .fold(function (tokens, _) {\n            _this.maskTokens = tokens;\n        });\n        greedy(token(this.rules, this.unmaskTokenCreator))\n            .run(this.mask)\n            .fold(function (tokens, _) {\n            _this.unmaskTokens = tokens;\n        });\n        greedy(token(this.rules, this.rawTokenCreator))\n            .run(this.mask)\n            .fold(function (tokens, _) {\n            _this.rawTokens = tokens;\n        });\n        greedy(token(this.rules, this.validationTokenCreator))\n            .run(this.mask)\n            .fold(function (tokens, _) {\n            _this.validationTokens = tokens;\n        });\n    };\n    return MaskingService;\n}());\nexport { MaskingService };\n//# sourceMappingURL=masking.service.js.map","/**\n * @hidden\n */\nvar defaultRules = {\n    '#': /[\\d\\s\\+\\-]/,\n    '&': /[\\S]/,\n    '0': /[\\d]/,\n    '9': /[\\d\\s]/,\n    '?': /[a-zA-Z\\s]/,\n    'A': /[a-zA-Z0-9]/,\n    'C': /./,\n    'L': /[a-zA-Z]/,\n    'a': /[a-zA-Z0-9\\s]/\n};\n/**\n * @hidden\n */\nvar returnFalse = function () { return false; };\n/**\n * @hidden\n */\nvar maskingChanged = function (prev, next) {\n    return prev.includeLiterals !== next.includeLiterals ||\n        prev.mask !== next.mask ||\n        prev.prompt !== next.prompt ||\n        prev.promptPlaceholder !== next.promptPlaceholder ||\n        !sameRules(prev.rules, next.rules);\n};\n/**\n * @hidden\n */\nvar sameRules = function (rules1, rules2) {\n    if (!!rules1 !== !!rules2) {\n        return false;\n    }\n    if (rules1 === rules2 || (!rules1 || !rules2)) {\n        return true;\n    }\n    var same = true;\n    for (var key in rules1) {\n        if (rules1[key] !== rules2[key]) {\n            same = false;\n            break;\n        }\n    }\n    if (same) {\n        for (var key in rules2) {\n            if (!rules1.hasOwnProperty(key)) {\n                same = false;\n                break;\n            }\n        }\n    }\n    return same;\n};\nexport { defaultRules, maskingChanged, returnFalse };\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { MaskingService } from './masking.service';\nimport { defaultRules, maskingChanged, returnFalse } from './utils';\nimport { guid, classNames, getTabIndex } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\n/**\n * Represents the props of the [KendoReact MaskedTextBox component]({% slug overview_maskedtextbox %}).\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n    __extends(MaskedTextBox, _super);\n    function MaskedTextBox() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {};\n        _this._inputId = \"k-\" + guid();\n        _this._service = new MaskingService();\n        _this._isPasted = false;\n        _this._selection = [null, null];\n        _this._input = null;\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._input) {\n                _this._input.focus();\n            }\n        };\n        _this.pasteHandler = function (event) {\n            var _a = event.target, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd;\n            if (selectionEnd === selectionStart) {\n                return;\n            }\n            _this._isPasted = true;\n            _this._selection = [selectionStart || 0, selectionEnd || 0];\n        };\n        _this.onChangeHandler = function (event) {\n            var input = event.currentTarget;\n            var value = input.value;\n            var start = _this._selection[0] || 0;\n            var end = _this._selection[1] || 0;\n            if (!_this.props.mask) {\n                _this._isPasted = false;\n                _this._selection = [null, null];\n                _this.triggerOnChange(value, event);\n                return;\n            }\n            var maskedValue = _this.value;\n            var result;\n            if (_this._isPasted) {\n                _this._isPasted = false;\n                var rightPart = maskedValue.length - end;\n                var to = value.length - rightPart;\n                result = _this._service.maskInRange(value.slice(start, to), maskedValue, start, end);\n            }\n            else {\n                result = _this._service.maskInput(value, maskedValue, input.selectionStart || 0);\n            }\n            _this._selection = [result.selection, result.selection];\n            _this.triggerOnChange(result.value, event);\n        };\n        _this.focusHandler = function (event) {\n            if (!_this.state.focused) {\n                _this.setState({ focused: true });\n                if (_this.props.onFocus) {\n                    _this.props.onFocus.call(undefined, {\n                        target: _this,\n                        syntheticEvent: event,\n                        nativeEvent: event.nativeEvent\n                    });\n                }\n            }\n        };\n        _this.blurHandler = function (event) {\n            if (_this.state.focused) {\n                _this.setState({ focused: false });\n                if (_this.props.onBlur) {\n                    _this.props.onBlur.call(undefined, {\n                        target: _this,\n                        syntheticEvent: event,\n                        nativeEvent: event.nativeEvent\n                    });\n                }\n            }\n        };\n        _this.setValidity = function () {\n            if (_this.element) {\n                _this.element.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage || '');\n            }\n        };\n        return _this;\n    }\n    Object.defineProperty(MaskedTextBox.prototype, \"element\", {\n        /**\n         * Gets the element of the MaskedTextBox.\n         *\n         * @return - An `HTMLInputElement`.\n         *\n         * @example\n         * ```jsx\n         * class App extends React.Component {\n         *     constructor(props) {\n         *         super(props);\n         *     }\n         *     element = null;\n         *     render() {\n         *         return (\n         *             <div>\n         *                 <MaskedTextBox\n         *                     ref={(component) =>\n         *                         this.element = component ? component.element : null}\n         *                 />\n         *                 <button onClick={() => console.log(this.element)}>console.log the element</button>\n         *             </div>\n         *         );\n         *     }\n         * }\n         *\n         * ReactDOM.render(\n         *     <App />,\n         *     document.getElementsByTagName('my-app')[0]\n         * );\n         * ```\n         */\n        get: function () {\n            return this._input;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"value\", {\n        /**\n         * Gets the value with the mask of the MaskedTextBox.\n         */\n        get: function () {\n            if (this._valueDuringOnChange !== undefined) {\n                return this._valueDuringOnChange;\n            }\n            else if (this.props.value !== undefined) {\n                return this.props.value;\n            }\n            else if (this.state.value !== undefined) {\n                return this.state.value;\n            }\n            else if (this.props.defaultValue !== undefined) {\n                return this.props.defaultValue;\n            }\n            return '';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"rawValue\", {\n        /**\n         * Gets the raw value without the mask of the MaskedTextBox.\n         */\n        get: function () {\n            return this._service.rawValue(this.value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the MaskedTextBox is set.\n         */\n        get: function () {\n            var maskedValue = this.value;\n            var value = this._service.validationValue(maskedValue);\n            var customError = this.props.validationMessage !== undefined;\n            var valid = (this.props.valid !== undefined ?\n                this.props.valid : ((!this.required || !!value)) &&\n                (!this.props.maskValidation || !this.props.prompt || maskedValue.indexOf(this.props.prompt) === -1));\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: !value\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : MaskedTextBox.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : MaskedTextBox.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MaskedTextBox.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the MaskedTextBox.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    MaskedTextBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n        if (this.element && this.state.focused && prevState.focused) {\n            var _a = this._selection, start = _a[0], end = _a[1];\n            var prevSelection = prevProps.selection;\n            var nextSelection = this.props.selection;\n            if ((!prevSelection && nextSelection) ||\n                (prevSelection && nextSelection &&\n                    (prevSelection.start !== nextSelection.start || prevSelection.end !== nextSelection.end))) {\n                start = nextSelection.start;\n                end = nextSelection.end;\n            }\n            if (start !== null && end !== null) {\n                this.element.setSelectionRange(start, end);\n            }\n        }\n        if (maskingChanged(prevProps, this.props)) {\n            this.updateService();\n        }\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    MaskedTextBox.prototype.componentDidMount = function () {\n        this.updateService();\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    MaskedTextBox.prototype.render = function () {\n        var _this = this;\n        var inputId = this.props.id || this._inputId;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var component = (React.createElement(\"span\", { dir: this.props.dir, className: classNames('k-widget k-maskedtextbox', this.props.className, {\n                'k-state-focused': this.state.focused,\n                'k-state-disabled': this.props.disabled,\n                'k-state-invalid': !isValid\n            }), style: !this.props.label\n                ? { width: this.props.width }\n                : undefined },\n            React.createElement(\"input\", { type: \"text\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: false, className: \"k-textbox\", value: this.value, id: inputId, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, name: this.props.name, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, true), accessKey: this.props.accessKey, title: this.props.title, disabled: this.props.disabled || undefined, readOnly: this.props.readonly || undefined, placeholder: this.props.placeholder, ref: function (input) { return _this._input = input; }, onChange: this.onChangeHandler, onPaste: this.pasteHandler, onFocus: this.focusHandler, onBlur: this.blurHandler, onDragStart: returnFalse, onDrop: returnFalse })));\n        return this.props.label\n            ? (React.createElement(FloatingLabel, { label: this.props.label, editorId: inputId, editorValue: this.value, editorValid: isValid, editorDisabled: this.props.disabled, editorPlaceholder: this.props.placeholder, children: component, style: { width: this.props.width }, dir: this.props.dir }))\n            : component;\n    };\n    MaskedTextBox.prototype.triggerOnChange = function (maskedValue, event) {\n        this.setState({\n            value: maskedValue\n        });\n        if (this.props.onChange) {\n            this._valueDuringOnChange = maskedValue;\n            this.props.onChange.call(undefined, {\n                syntheticEvent: event,\n                nativeEvent: event.nativeEvent,\n                selectionStart: this._selection[0],\n                selectionEnd: this._selection[1],\n                target: this,\n                value: this.value\n            });\n            this._valueDuringOnChange = undefined;\n        }\n    };\n    MaskedTextBox.prototype.updateService = function (extra) {\n        var config = Object.assign({\n            includeLiterals: this.props.includeLiterals,\n            mask: this.props.mask,\n            prompt: this.props.prompt,\n            promptPlaceholder: this.props.promptPlaceholder,\n            rules: this.rules\n        }, extra); // tslint:disable-line:align\n        this._service.update(config);\n    };\n    Object.defineProperty(MaskedTextBox.prototype, \"rules\", {\n        get: function () {\n            return Object.assign({}, defaultRules, this.props.rules);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    MaskedTextBox.propTypes = {\n        value: PropTypes.string,\n        defaultValue: PropTypes.string,\n        placeholder: PropTypes.string,\n        title: PropTypes.string,\n        dir: PropTypes.string,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        width: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.number\n        ]),\n        tabIndex: PropTypes.number,\n        accessKey: PropTypes.string,\n        disabled: PropTypes.bool,\n        readonly: PropTypes.bool,\n        prompt: PropTypes.string,\n        promptPlaceholder: PropTypes.string,\n        includeLiterals: PropTypes.bool,\n        maskValidation: PropTypes.bool,\n        mask: PropTypes.string,\n        rules: function (props, propName, componentName) {\n            var rules = props.rules;\n            if (rules !== undefined) {\n                var valid = Object.entries(rules)\n                    .some(function (e) { return typeof e !== 'string' || !(rules[e] instanceof RegExp); });\n                if (!valid) {\n                    return new Error('Invalid prop `' + propName + '` supplied to' +\n                        ' `' + componentName + '`. Validation failed.');\n                }\n            }\n        },\n        selection: PropTypes.shape({\n            start: PropTypes.number.isRequired,\n            end: PropTypes.number.isRequired\n        }),\n        name: PropTypes.string,\n        label: PropTypes.string,\n        validationMessage: PropTypes.string,\n        required: PropTypes.bool,\n        valid: PropTypes.bool,\n        validityStyles: PropTypes.bool,\n        onChange: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    MaskedTextBox.defaultProps = {\n        prompt: '_',\n        promptPlaceholder: ' ',\n        includeLiterals: false,\n        maskValidation: true,\n        rules: defaultRules,\n        required: false,\n        validityStyles: true\n    };\n    return MaskedTextBox;\n}(React.Component));\nexport { MaskedTextBox };\n//# sourceMappingURL=MaskedTextBox.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar DEFAULT_NUMBER = 1111111.1111111;\nvar MAX_DECIMAL = 0.31111111111111117;\nvar MIN_DECIMAL = 1;\nvar ONE_NUMBER = 1;\nvar ZERO_NUMBER = 0;\nvar DIGITS_REGEX = /\\d/;\nvar MAX_PRECISION = 15;\n/**\n * @hidden\n */\nexport var getInitialState = function () { return ({\n    eventValue: null,\n    prevLooseValue: '',\n    currentLooseValue: '',\n    focused: false,\n    selectionStart: undefined,\n    selectionEnd: undefined,\n    decimalSelect: false,\n    valueIsCorrected: false,\n    valueIsOutOfRange: false\n}); };\n/**\n * @hidden\n */\nexport var getStateOrPropsValue = function (value, stateValue) {\n    return value !== undefined ? value : stateValue;\n};\n/**\n * @hidden\n */\nexport var formatValue = function (value, format, intlService) {\n    if (value === null && value === undefined) {\n        return '';\n    }\n    if (typeof value === 'string') {\n        return value;\n    }\n    return intlService.formatNumber(value, format);\n};\n/**\n * @hidden\n */\nexport var fractionLength = function (value) {\n    return (String(value).split('.')[1] || '').length;\n};\n/**\n * @hidden\n */\nvar maxFractionLength = function (value1, value2) {\n    return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nexport var limitPrecision = function (precision) { return Math.min(precision, MAX_PRECISION); };\n/**\n * @hidden\n */\nexport var toFixedPrecision = function (value, precision) {\n    var maxPrecision = limitPrecision(precision);\n    return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nexport var increaseValue = function (value, newState, step, min, max, format, intlService) {\n    var maxPrecision = maxFractionLength(value || 0, step || 0);\n    var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);\n    newState.eventValue = increasedValue;\n    newState.currentLooseValue = formatValue(increasedValue, format, intlService);\n    newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var decreaseValue = function (value, newState, step, min, max, format, intlService) {\n    var maxPrecision = maxFractionLength(value || 0, step || 0);\n    var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);\n    newState.eventValue = decreasedValue;\n    newState.currentLooseValue = formatValue(decreasedValue, format, intlService);\n    newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var rangeValue = function (value, min, max) {\n    if (value == null) {\n        return value;\n    }\n    if (!(value > 1 || value < 1 || value === 1)) {\n        // null, undefined or NaN\n        return null;\n    }\n    if (max !== undefined && min !== undefined && max < min) {\n        return null;\n    }\n    if (max !== undefined && value > max) {\n        value = max;\n    }\n    if (min !== undefined && value < min) {\n        value = min;\n    }\n    return value;\n};\n/**\n * @hidden\n */\nexport var getMaxCursorPosition = function (nextValue, formatInfo) {\n    var formatSuffixIndex = formatInfo.findIndex(function (_a) {\n        var _ = _a[0], currSuffix = _a[1];\n        return Boolean(currSuffix) && nextValue.indexOf(currSuffix) === nextValue.length - currSuffix.length;\n    });\n    if (formatSuffixIndex === -1) {\n        return -1;\n    }\n    var suffix = formatInfo[formatSuffixIndex][1];\n    return nextValue.length - suffix.length;\n};\n/**\n * @hidden\n */\nexport var getMinCursorPosition = function (nextValue, formatInfo) {\n    var formatPrefixIndex = formatInfo.findIndex(function (_a) {\n        var currPrefix = _a[0], _ = _a[1];\n        return Boolean(currPrefix) && nextValue.indexOf(currPrefix) === 0;\n    });\n    if (formatPrefixIndex === -1) {\n        return -1;\n    }\n    var prefix = formatInfo[formatPrefixIndex][0];\n    return prefix.length;\n};\n/**\n * @hidden\n */\nexport var rangeSelection = function (nextLooseValue, formatInfo, newState) {\n    var maxPosition = getMaxCursorPosition(nextLooseValue, formatInfo);\n    if (maxPosition !== -1 && newState.selectionStart > maxPosition) {\n        newState.selectionStart = newState.selectionEnd = maxPosition;\n        return;\n    }\n    if (newState.selectionStart > nextLooseValue.length) {\n        newState.selectionStart = newState.selectionEnd = nextLooseValue.length;\n    }\n    var minPosition = getMinCursorPosition(nextLooseValue, formatInfo);\n    if (minPosition !== -1 && newState.selectionStart < minPosition) {\n        newState.selectionStart = newState.selectionEnd = minPosition;\n    }\n    if (newState.selectionStart === -1) {\n        newState.selectionStart = newState.selectionEnd = 0;\n    }\n};\n/**\n * @hidden\n */\nexport var setSelection = function (newState, newIndex, nextLooseValue, formatInfo) {\n    newState.selectionStart = newState.selectionEnd = newIndex;\n    rangeSelection(nextLooseValue, formatInfo, newState);\n};\n/**\n * @hidden\n */\nexport var setInvalid = function (newState, format, formatInfo, intlService) {\n    newState.eventValue = intlService.parseNumber(newState.prevLooseValue, format);\n    newState.currentLooseValue = newState.prevLooseValue;\n    newState.valueIsCorrected = true;\n    setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolAdded = function (newState, symbols) {\n    var newText = String(newState.currentLooseValue);\n    var oldText = String(newState.prevLooseValue);\n    return (newText.split(symbols.minusSign).length !== oldText.split(symbols.minusSign).length &&\n        newText.length === oldText.length + symbols.minusSign.length);\n};\n/**\n * @hidden\n */\nexport var isDecimalDuplicated = function (newState, symbols) {\n    var newText = String(newState.currentLooseValue);\n    return newText.split(symbols.decimal).length > 2;\n};\n/**\n * @hidden\n */\nexport var getFormatPrefixSufix = function (format, intlService) {\n    var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n    var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n    var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n    var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n    var positivePrefix = getPrefix(positiveResult);\n    var negativePrefix = getPrefix(negativeResult);\n    var zeroPrefix = getPrefix(zeroResult);\n    var onePrefix = getPrefix(oneResult);\n    var positiveSuffix = getSuffix(positiveResult);\n    var negativeSuffix = getSuffix(negativeResult);\n    var zeroSuffix = getSuffix(zeroResult);\n    var oneSuffix = getSuffix(oneResult);\n    return {\n        positiveInfo: [positivePrefix, positiveSuffix],\n        negativeInfo: [negativePrefix, negativeSuffix],\n        zeroInfo: [zeroPrefix, zeroSuffix],\n        oneInfo: [onePrefix, oneSuffix]\n    };\n};\n/**\n * @hidden\n */\nexport var getFormatSymbols = function (format, intlService) {\n    var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n    var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n    var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n    var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n    var symbols = intlService.numberSymbols();\n    var sanitizeRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + symbols.group + \"]\", 'g');\n    var resultWithDuplicates = [positiveResult, negativeResult, zeroResult, oneResult]\n        .map(function (result) { return result.replace(sanitizeRegex, ''); })\n        .join('');\n    return resultWithDuplicates\n        .split('')\n        .filter(function (x, n, s) { return s.indexOf(x) === n; })\n        .join('');\n};\n/**\n * @hidden\n */\nexport var getInitialPosition = function (nextLooseValue, symbols) {\n    var decimalIdex = nextLooseValue.indexOf(symbols.decimal);\n    if (decimalIdex > -1) {\n        return decimalIdex;\n    }\n    return getLastNumberIndex(nextLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var reverseString = function (str) {\n    return str.split('').reverse().join('');\n};\n/**\n * @hidden\n */\nexport var getLastNumberIndex = function (currentLooseValue, inputRegex) {\n    return currentLooseValue.length - reverseString(currentLooseValue).search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getPrefix = function (str) {\n    return str.split(str[str.search(DIGITS_REGEX)])[0];\n};\n/**\n * @hidden\n */\nexport var getSuffix = function (str) {\n    var reversedString = reverseString(str);\n    return reverseString(reversedString.split(reversedString[reversedString.search(DIGITS_REGEX)])[0]);\n};\n/**\n * @hidden\n */\nexport var getFirstNumberIndex = function (prevLooseValue, inputRegex) {\n    return prevLooseValue.search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getDecimalCount = function (value, decimal) {\n    var currentDecimalPlace = value.indexOf(decimal);\n    return currentDecimalPlace > -1 ? value.length - currentDecimalPlace - 1 : 0;\n};\n/**\n * @hidden\n */\nexport var changeBasedSelection = function (currentValue, nextValue, selectionPosition, isDelete, sanitizeRegex) {\n    var isCurrentLeadingZero = currentValue.replace(sanitizeRegex, '')[0] === '0';\n    var isNextLeadingZero = nextValue.replace(sanitizeRegex, '')[0] === '0';\n    if (isCurrentLeadingZero && !isNextLeadingZero) {\n        return selectionPosition - 1;\n    }\n    if (isNextLeadingZero && isDelete) {\n        return selectionPosition + 1;\n    }\n    var numberCounter = 0;\n    for (var idx = 0; idx < selectionPosition; idx++) {\n        if (DIGITS_REGEX.test(currentValue.charAt(idx))) {\n            numberCounter++;\n        }\n    }\n    var newSelection = 0;\n    while (numberCounter > 0 && nextValue.length > newSelection) {\n        if (DIGITS_REGEX.test(nextValue.charAt(newSelection))) {\n            numberCounter--;\n        }\n        newSelection++;\n    }\n    return newSelection;\n};\n/**\n * @hidden\n */\nexport var sanitizeNumber = function (state, format, intlService) {\n    var newState = __assign({}, state);\n    var prevLooseValue = newState.prevLooseValue;\n    var symbols = intlService.numberSymbols();\n    var restrictedSymbols = getFormatSymbols(format, intlService);\n    var currentLooseValueAsString = String(newState.currentLooseValue);\n    var prevLooseValueAsString = String(prevLooseValue);\n    var sanitizeRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"]\", 'g');\n    var sanitizeGroupRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\", 'g');\n    var allSymbolsRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\");\n    var sanitizedString = currentLooseValueAsString.replace(sanitizeRegex, '');\n    var numberStart = getFirstNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n    var numberEnd = numberStart === -1 ? -1 : getLastNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n    var decimalIndex = currentLooseValueAsString.indexOf(symbols.decimal);\n    var sanitizedFormattedString = (currentLooseValueAsString.substring(0, numberStart) +\n        currentLooseValueAsString.substring(numberStart, numberEnd).replace(sanitizeGroupRegex, '') +\n        currentLooseValueAsString.substring(numberEnd, currentLooseValueAsString.length))\n        .split('')\n        .filter(function (s) { return restrictedSymbols.indexOf(s) !== -1 || s.search(allSymbolsRegex) !== -1; })\n        .join('');\n    var formattedMax = intlService.formatNumber(MAX_DECIMAL, format).replace(sanitizeRegex, '');\n    var maxDecimalIndex = formattedMax.indexOf(symbols.decimal);\n    var maxDecimalCount = maxDecimalIndex > -1 ? formattedMax.length - maxDecimalIndex - 1 : 0;\n    var formattedMin = intlService.formatNumber(MIN_DECIMAL, format).replace(sanitizeRegex, '');\n    var minDecimalIndex = formattedMin.indexOf(symbols.decimal);\n    var minDecimalCount = minDecimalIndex > -1 ? formattedMin.length - minDecimalIndex - 1 : 0;\n    var _a = getFormatPrefixSufix(format, intlService), positiveInfo = _a.positiveInfo, negativeInfo = _a.negativeInfo, zeroInfo = _a.zeroInfo, oneInfo = _a.oneInfo;\n    var formatInfo = [positiveInfo, negativeInfo, zeroInfo, oneInfo];\n    var isFormatContainPrefixSuffix = formatInfo.findIndex(function (info) { return info.findIndex(function (nestedInfo) { return Boolean(nestedInfo); }) !== -1; }) !== 1;\n    var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;\n    if (!newState.isPaste) {\n        // 1. Empty input\n        if (currentLooseValueAsString === '') {\n            newState.eventValue = null;\n            newState.currentLooseValue = '';\n            return newState;\n        }\n        // 2. Check is minus sign\n        if (newState.currentLooseValue === symbols.minusSign && intlService.formatNumber(-0, format) !== prevLooseValueAsString) {\n            newState.eventValue = -0;\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols), newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 3. Minus sign toggle\n        if (isMinusSymbolAdded(newState, symbols)) {\n            var nextValue = intlService.parseNumber(prevLooseValue, format);\n            newState.eventValue = -(nextValue !== null ? nextValue : 0);\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            var currentNumberStart = getFirstNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n            var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);\n            setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 4. Check is decimal symbol\n        if (newState.currentLooseValue === symbols.decimal) {\n            newState.eventValue = 0;\n            var valueCandidate = formatValue(newState.eventValue, format, intlService);\n            if (minDecimalCount === 0 && maxDecimalCount > 0) {\n                var currentLastNumberIndex = getLastNumberIndex(valueCandidate, DIGITS_REGEX);\n                newState.currentLooseValue = valueCandidate.substring(0, currentLastNumberIndex) +\n                    symbols.decimal +\n                    valueCandidate.substring(currentLastNumberIndex);\n            }\n            else {\n                newState.currentLooseValue = valueCandidate;\n            }\n            setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols) + 1, newState.currentLooseValue, formatInfo);\n            return newState;\n        }\n        // 5. Duplicate decimal - it's possible only as trailing\n        if (isDecimalDuplicated(newState, symbols)) {\n            setInvalid(newState, format, formatInfo, intlService);\n            return newState;\n        }\n        // 6. Percent format\n        if (format && format[0] === 'p' && currentLooseValueAsString && currentLooseValueAsString.indexOf(symbols.percentSign) === -1) {\n            newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            return newState;\n        }\n        // 7. More than 15 numeric symbols\n        var numericSymbols = String(newState.currentLooseValue).replace(/[^\\d]/g, '');\n        if (numericSymbols.length > MAX_PRECISION) {\n            setInvalid(newState, format, formatInfo, intlService);\n            return newState;\n        }\n        // 8. Check prefix / suffix for modifications\n        if (sanitizedString !== currentLooseValueAsString &&\n            currentLooseValueAsString &&\n            isFormatContainPrefixSuffix) {\n            var formatInfoIndex = formatInfo.findIndex(function (_a) {\n                var prefix = _a[0], suffix = _a[1];\n                var prefixIndex = currentLooseValueAsString.indexOf(prefix);\n                var suffixIndex = currentLooseValueAsString.indexOf(suffix);\n                var prefixFound = prefixIndex === 0;\n                var suffixFound = suffixIndex === currentLooseValueAsString.length - suffix.length;\n                var prefixGap = prefixIndex + prefix.length !== numberStart &&\n                    numberStart !== -1 &&\n                    currentLooseValueAsString[prefixIndex + prefix.length] !== symbols.decimal;\n                var suffixGap = suffixIndex !== numberEnd &&\n                    numberEnd !== -1 &&\n                    currentLooseValueAsString[suffixIndex - 1] !== symbols.decimal;\n                if (prefix && suffix) {\n                    if (prefixGap || suffixGap) {\n                        return false;\n                    }\n                    return prefixFound && suffixFound;\n                }\n                if (prefix) {\n                    if (prefixGap) {\n                        return false;\n                    }\n                    return prefixFound;\n                }\n                if (suffix) {\n                    if (suffixGap) {\n                        return false;\n                    }\n                    return suffixFound;\n                }\n                return false;\n            });\n            if (formatInfoIndex === -1) {\n                setInvalid(newState, format, formatInfo, intlService);\n                return newState;\n            }\n        }\n        // 9. Value ending on decimal separator (here as decimal might be typed inside format)\n        if (sanitizedString[sanitizedString.length - 1] === symbols.decimal && maxDecimalCount > 0) {\n            newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format);\n            newState.currentLooseValue = sanitizedFormattedString;\n            return newState;\n        }\n        // 10. prevent deleting decimal and group symbols\n        if (newState.currentLooseValue && prevLooseValue) {\n            var isSpecialSymbolDeleted = (restrictedSymbols + symbols.decimal + symbols.group)\n                .split('')\n                .findIndex(function (s) {\n                if (currentLooseValueAsString.split('').filter(function (x) { return x === s; }).length <\n                    prevLooseValueAsString.split('').filter(function (x) { return x === s; }).length &&\n                    currentLooseValueAsString.length + 1 === prevLooseValueAsString.length) {\n                    if (s === symbols.decimal &&\n                        getDecimalCount(prevLooseValueAsString.replace(sanitizeRegex, ''), symbols.decimal) === 0) {\n                        return false;\n                    }\n                    return true;\n                }\n                return false;\n            }) > -1;\n            if (isSpecialSymbolDeleted) {\n                newState.eventValue = intlService.parseNumber(state.prevLooseValue, format);\n                newState.currentLooseValue = state.prevLooseValue;\n                return newState;\n            }\n        }\n        var currentDecimalCount = getDecimalCount(sanitizedString, symbols.decimal);\n        var endsOnDecimal = sanitizedString[sanitizedString.length - 1] === '0';\n        // 11. Deleting more decimals than allowed\n        if (isDelete && endsOnDecimal && currentDecimalCount < minDecimalCount) {\n            newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n            newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n            return newState;\n        }\n        // 12. Ending on zero OR more decimals than allowed\n        if (currentDecimalCount > 0) {\n            var valueUntillDecimal = currentLooseValueAsString.substring(0, decimalIndex);\n            if (endsOnDecimal && (!valueUntillDecimal || prevLooseValueAsString.indexOf(valueUntillDecimal) !== 0)) {\n                // ending on zero but typing before decimal separator\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n                setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n                newState.currentLooseValue = nextLooseValue;\n                return newState;\n            }\n            if (currentDecimalCount > maxDecimalCount) {\n                // typing more symbols than format allows\n                var looseDecimalPlace = currentLooseValueAsString.indexOf(symbols.decimal);\n                var result = currentLooseValueAsString.substring(0, looseDecimalPlace) +\n                    currentLooseValueAsString.substring(looseDecimalPlace, looseDecimalPlace + 1 + maxDecimalCount) +\n                    currentLooseValueAsString.substring(numberEnd, String(newState.currentLooseValue).length);\n                newState.eventValue = intlService.parseNumber(result, format);\n                newState.currentLooseValue = result;\n                setSelection(newState, newState.selectionStart, result, formatInfo);\n                return newState;\n            }\n            if (minDecimalCount !== maxDecimalCount && currentDecimalCount <= maxDecimalCount && endsOnDecimal) {\n                // adding trailing zeroes\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                newState.currentLooseValue = sanitizedFormattedString;\n                return newState;\n            }\n            if (currentDecimalCount < minDecimalCount) {\n                // deleting more decimals than allowed\n                newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n                newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n                return newState;\n            }\n        }\n    }\n    // X. All other values should be parsed\n    newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n    if (typeof newState.eventValue === 'number') {\n        var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n        // First digit add\n        if (currentLooseValueAsString.length === 1) {\n            setSelection(newState, getInitialPosition(nextLooseValue, symbols), nextLooseValue, formatInfo);\n        }\n        else {\n            setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n        }\n        newState.currentLooseValue = nextLooseValue;\n    }\n    else {\n        // Case when deleting last number\n        newState.currentLooseValue = formatValue(intlService.parseNumber(sanitizedString), format, intlService);\n    }\n    return newState;\n};\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useInternationalization, useLocalization } from '@progress/kendo-react-intl';\nimport { classNames, guid, getTabIndex, dispatchEvent } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { numericIncreaseValue, messages, numericDecreaseValue } from '../messages';\nimport { formatValue, sanitizeNumber, rangeValue, increaseValue, decreaseValue, getStateOrPropsValue, getInitialState } from './utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact NumericTextBox component]({% slug overview_numerictextbox %}).\n */\nexport var NumericTextBox = React.forwardRef(function (props, target) {\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var inputId = props.id || calculatedId;\n    var intlService = useInternationalization();\n    var localizationService = useLocalization();\n    var elementRef = React.useRef(null);\n    var elementWrapperRef = React.useRef(null);\n    var valueDuringChangeRef = React.useRef();\n    var _a = React.useState(false), forceUpdate = _a[0], setForceUpdate = _a[1];\n    var stateRef = React.useRef(getInitialState());\n    var isPasteRef = React.useRef(false);\n    var prevLooseValueRef = React.useRef();\n    var stateValueRef = React.useRef(props.defaultValue);\n    var looseValue = formatValue(stateRef.current.focused ?\n        stateRef.current.currentLooseValue :\n        getStateOrPropsValue(props.value, stateValueRef.current), props.format, intlService);\n    prevLooseValueRef.current = looseValue;\n    React.useEffect(function () {\n        if (elementRef.current && elementRef.current.setCustomValidity) {\n            elementRef.current.setCustomValidity(validityGetter().valid\n                ? ''\n                : props.validationMessage || VALIDATION_MESSAGE);\n        }\n    });\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var valueGetter = React.useCallback(function () {\n        if (valueDuringChangeRef.current !== undefined) {\n            return valueDuringChangeRef.current;\n        }\n        else {\n            return getStateOrPropsValue(props.value, stateValueRef.current);\n        }\n    }, [props.value]);\n    var nameGetter = React.useCallback(function () {\n        return props.name;\n    }, [props.name]);\n    var requiredGetter = React.useCallback(function () {\n        return props.required;\n    }, [props.required]);\n    var validityGetter = React.useCallback(function () {\n        var customError = props.validationMessage !== undefined;\n        var currentValue = valueGetter();\n        var valid = props.valid !== undefined ?\n            props.valid :\n            !stateRef.current.valueIsOutOfRange &&\n                (!requiredGetter() || (currentValue !== null && currentValue !== undefined));\n        return {\n            customError: customError,\n            valid: valid,\n            valueMissing: currentValue === null || currentValue === undefined\n        };\n    }, [props.validationMessage, props.valid, valueGetter, requiredGetter]);\n    var validityStylesGetter = React.useCallback(function () {\n        return props.validityStyles;\n    }, [props.validityStyles]);\n    var propsGetter = React.useCallback(function () {\n        return props;\n    }, [props]);\n    var getImperativeHandle = React.useCallback(function () {\n        var options = {\n            element: elementRef,\n            focus: focusElement\n        };\n        Object.defineProperty(options, 'name', { get: nameGetter });\n        Object.defineProperty(options, 'value', { get: valueGetter });\n        Object.defineProperty(options, 'validity', { get: validityGetter });\n        Object.defineProperty(options, 'validityStyles', { get: validityStylesGetter });\n        Object.defineProperty(options, 'required', { get: requiredGetter });\n        Object.defineProperty(options, 'props', { get: propsGetter });\n        return options;\n    }, [nameGetter, valueGetter, validityGetter, validityStylesGetter, requiredGetter, focusElement, propsGetter]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var getCurrentState = React.useCallback(function () {\n        return {\n            eventValue: getStateOrPropsValue(props.value, stateValueRef.current),\n            prevLooseValue: prevLooseValueRef.current,\n            currentLooseValue: elementRef.current.value,\n            selectionStart: elementRef.current.selectionStart,\n            selectionEnd: elementRef.current.selectionEnd,\n            decimalSelect: false,\n            valueIsCorrected: false,\n            valueIsOutOfRange: false,\n            isPaste: isPasteRef.current,\n            focused: stateRef.current.focused\n        };\n    }, [props.value]);\n    var triggerChange = React.useCallback(function (event, newState) {\n        if (props.disabled) {\n            return;\n        }\n        valueDuringChangeRef.current = newState.eventValue;\n        stateValueRef.current = newState.eventValue;\n        var formattedValue = formatValue(rangeValue(newState.eventValue, props.min, props.max), props.format, intlService);\n        var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n        if (rangedValue !== newState.eventValue) {\n            newState.valueIsOutOfRange = true;\n            newState.eventValue = rangedValue;\n        }\n        if (newState.valueIsCorrected) {\n            var wrapper_1 = elementWrapperRef.current;\n            if (wrapper_1 && wrapper_1.className.indexOf(\"k-state-invalid\") === -1) {\n                wrapper_1.className += ' k-state-invalid';\n                setTimeout(function () { return wrapper_1.className = wrapper_1.className.replace(' k-state-invalid', ''); }, 50);\n            }\n        }\n        var shouldFireEvent = props.value !== newState.eventValue;\n        if (shouldFireEvent) {\n            dispatchEvent(props.onChange, event, getImperativeHandle(), { value: newState.eventValue });\n        }\n        valueDuringChangeRef.current = undefined;\n        stateRef.current = newState;\n        setForceUpdate(function (_x) { return !_x; });\n    }, [props.value, props.onChange, props.disabled, setForceUpdate, getImperativeHandle]);\n    var onChangeHandler = React.useCallback(function (event) {\n        var stateCandidate = getCurrentState();\n        isPasteRef.current = false;\n        triggerChange(event, sanitizeNumber(stateCandidate, props.format, intlService));\n    }, [props.format, props.onChange, intlService, triggerChange, getCurrentState]);\n    var onKeyDown = React.useCallback(function (event) {\n        var newState = getCurrentState();\n        var currentValue = intlService.parseNumber(String(newState.currentLooseValue), props.format);\n        // Select All\n        if (newState.selectionEnd > newState.selectionStart &&\n            newState.selectionEnd - newState.selectionStart === String(newState.currentLooseValue).length) {\n            return;\n        }\n        switch (event.keyCode) {\n            case 38:\n                // Arrow up\n                increaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n                break;\n            case 40:\n                // Arrow down\n                decreaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n                break;\n            case 13:\n                // Enter - range values\n                if (props.rangeOnEnter === false) {\n                    return;\n                }\n                var formattedValue = formatValue(rangeValue(currentValue, props.min, props.max), props.format, intlService);\n                var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n                newState.eventValue = rangedValue;\n                newState.currentLooseValue = formatValue(rangedValue, props.format, intlService);\n                newState.selectionStart = newState.selectionEnd = newState.currentLooseValue.length;\n                break;\n            case 110:\n                // Numpad decimal key\n                var element = elementRef.current;\n                var symbols = intlService.numberSymbols();\n                if (element) {\n                    newState.currentLooseValue = newState.currentLooseValue.slice(0, newState.selectionStart) +\n                        symbols.decimal +\n                        newState.currentLooseValue.slice(newState.selectionEnd);\n                    newState.selectionStart = newState.selectionEnd = newState.selectionStart + 1;\n                    newState = sanitizeNumber(newState, props.format, intlService);\n                }\n                break;\n            default:\n                return;\n        }\n        event.preventDefault();\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, props.rangeOnEnter, triggerChange, getCurrentState]);\n    var onPasteHandler = React.useCallback(function () {\n        isPasteRef.current = true;\n    }, []);\n    var onIncrease = React.useCallback(function (event) {\n        var newState = getCurrentState();\n        increaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, triggerChange, getCurrentState]);\n    var onDecrease = React.useCallback(function (event) {\n        var newState = getCurrentState();\n        decreaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n        triggerChange(event, newState);\n    }, [props.format, props.min, props.max, props.step, props.onChange, triggerChange, getCurrentState]);\n    var onWheelHandler = React.useCallback(function (event) {\n        if (!document || document.activeElement !== elementRef.current || !elementRef.current) {\n            return;\n        }\n        if (event.nativeEvent.deltaY < 0) {\n            onIncrease(event);\n        }\n        if (event.nativeEvent.deltaY > 0) {\n            onDecrease(event);\n        }\n    }, [onIncrease, onDecrease]);\n    var onFocus = React.useCallback(function (event) {\n        stateRef.current.currentLooseValue = prevLooseValueRef.current;\n        stateRef.current.focused = true;\n        dispatchEvent(props.onFocus, event, getImperativeHandle(), {});\n        setForceUpdate(function (x) { return !x; });\n    }, [props.onFocus, setForceUpdate, getImperativeHandle]);\n    var onBlur = React.useCallback(function (event) {\n        stateRef.current = getInitialState();\n        dispatchEvent(props.onBlur, event, getImperativeHandle(), {});\n        setForceUpdate(function (x) { return !x; });\n    }, [props.onBlur, setForceUpdate, getImperativeHandle]);\n    var onMouseDown = React.useCallback(function (e) {\n        if (document && elementRef.current) {\n            e.preventDefault();\n            if (document.activeElement !== elementRef.current) {\n                elementRef.current.focus();\n            }\n        }\n    }, []);\n    React.useLayoutEffect(function () {\n        if (elementRef.current && stateRef.current.selectionStart !== undefined && stateRef.current.selectionEnd !== undefined) {\n            elementRef.current.selectionStart = stateRef.current.selectionStart;\n            elementRef.current.selectionEnd = stateRef.current.selectionEnd;\n            stateRef.current.selectionStart = undefined;\n            stateRef.current.selectionEnd = undefined;\n        }\n    }, [forceUpdate]);\n    var isValid = !validityStylesGetter() || validityGetter().valid;\n    var numerictextbox = (React.createElement(\"span\", { dir: props.dir, style: !props.label\n            ? { width: props.width }\n            : undefined, className: 'k-widget k-numerictextbox' + (props.className ? ' ' + props.className : ''), \"aria-disabled\": props.disabled ? 'true' : undefined },\n        React.createElement(\"span\", { className: classNames('k-numeric-wrap', {\n                'k-state-disabled': props.disabled,\n                'k-state-invalid': !isValid\n            }), ref: elementWrapperRef },\n            React.createElement(\"input\", { value: looseValue === null ? '' : looseValue, tabIndex: getTabIndex(props.tabIndex, props.disabled), accessKey: props.accessKey, disabled: props.disabled, title: props.title, \"aria-valuemin\": props.min, \"aria-valuemax\": props.max, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, placeholder: props.placeholder, spellCheck: false, autoComplete: 'off', autoCorrect: 'off', type: props.inputType || 'tel', className: 'k-input k-formatted-value', id: inputId, name: props.name, onChange: onChangeHandler, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onPaste: onPasteHandler, onWheel: onWheelHandler, ref: elementRef }),\n            props.children,\n            props.spinners &&\n                (React.createElement(\"span\", { className: \"k-select\", onMouseDown: onMouseDown },\n                    React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n                            .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), title: localizationService\n                            .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), onClick: onIncrease },\n                        React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n                    React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n                            .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), title: localizationService\n                            .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), onClick: onDecrease },\n                        React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" })))))));\n    return props.label\n        ? (React.createElement(FloatingLabel, { label: props.label, editorId: inputId, editorValue: looseValue === null ? '' : looseValue, editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: numerictextbox, style: { width: props.width }, dir: props.dir }))\n        : numerictextbox;\n});\nNumericTextBox.propTypes = {\n    value: PropTypes.number,\n    defaultValue: PropTypes.number,\n    step: PropTypes.number,\n    format: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.shape({\n            style: PropTypes.oneOf(['decimal', 'currency', 'percent', 'scientific', 'accounting']),\n            currency: PropTypes.string,\n            currencyDisplay: PropTypes.oneOf(['symbol', 'code', 'name']),\n            useGrouping: PropTypes.bool,\n            minimumIntegerDigits: PropTypes.number,\n            minimumFractionDigits: PropTypes.number,\n            maximumFractionDigits: PropTypes.number\n        })\n    ]),\n    width: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.number\n    ]),\n    tabIndex: PropTypes.number,\n    accessKey: PropTypes.string,\n    title: PropTypes.string,\n    placeholder: PropTypes.string,\n    min: PropTypes.number,\n    max: PropTypes.number,\n    spinners: PropTypes.bool,\n    disabled: PropTypes.bool,\n    dir: PropTypes.string,\n    name: PropTypes.string,\n    label: PropTypes.string,\n    validationMessage: PropTypes.string,\n    required: PropTypes.bool,\n    id: PropTypes.string,\n    rangeOnEnter: PropTypes.bool,\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func\n};\nNumericTextBox.displayName = 'KendoNumericTextBox';\nNumericTextBox.defaultProps = {\n    step: 1,\n    spinners: true,\n    disabled: false,\n    required: false,\n    validityStyles: true,\n    rangeOnEnter: true,\n    onChange: function (_) { return; },\n    onFocus: function (_) { return; },\n    onBlur: function (_) { return; }\n};\n//# sourceMappingURL=NumericTextBox.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useDir } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var SLIDER_LABEL_ATTRIBUTE = 'data-slider-label';\n/**\n * Represents the KendoReact SliderLabel component.\n */\nexport var SliderLabel = function (props) {\n    var _a, _b, _c;\n    var sliderLabelRef = React.useRef(null);\n    var dir = useDir(sliderLabelRef);\n    var style = props.vertical\n        ? { bottom: props.position + \"%\", height: '1px', width: '100%' }\n        : (_a = {}, _a[dir === 'rtl' ? 'right' : 'left'] = props.position + \"%\", _a.width = '1px', _a);\n    var labelTextStyle = props.vertical\n        ? { top: '-8px' }\n        : (_b = { width: '40px' }, _b[dir === 'rtl' ? 'right' : 'left'] = \"-20px\", _b);\n    return (React.createElement(\"li\", { ref: sliderLabelRef, role: \"presentation\", className: \"k-tick k-tick-large\", title: props.title, style: __assign({ zIndex: 1, position: 'absolute' }, style) },\n        React.createElement(\"span\", __assign({ style: __assign({ position: 'absolute' }, labelTextStyle) }, (_c = {}, _c[SLIDER_LABEL_ATTRIBUTE] = true, _c), { className: \"k-label\", onClick: props.onClick }), props.children)));\n};\n//# sourceMappingURL=SliderLabel.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, Keys, classNames, Draggable, getTabIndex } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, sliderIncreaseValue, sliderDecreaseValue, sliderDragTitle } from './../messages';\nimport { SLIDER_LABEL_ATTRIBUTE } from './SliderLabel';\n/**\n * Represents the [KendoReact Slider component]({% slug overview_slider%}).\n */\nvar Slider = /** @class */ (function (_super) {\n    __extends(Slider, _super);\n    function Slider() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            value: _this.props.defaultValue === undefined ? _this.props.min : _this.props.defaultValue,\n            focused: false,\n            dir: _this.props.dir\n        };\n        /**\n         * @hidden\n         */\n        _this.buttons = function (props) {\n            if (!props.enabled) {\n                return props.children;\n            }\n            return (React.createElement(React.Fragment, null,\n                React.createElement(\"a\", { className: \"k-button k-button-decrease\", style: { position: 'relative' }, title: props.decrementTitle, onClick: props.decrement },\n                    React.createElement(\"span\", { className: classNames('k-icon', {\n                            'k-i-arrow-s': _this.props.vertical,\n                            'k-i-arrow-w': !_this.props.vertical\n                        }) })),\n                props.children,\n                React.createElement(\"a\", { className: \"k-button k-button-increase\", style: { position: 'relative' }, title: props.incrementTitle, onClick: props.increment },\n                    React.createElement(\"span\", { className: classNames('k-icon', {\n                            'k-i-arrow-n': _this.props.vertical,\n                            'k-i-arrow-e': !_this.props.vertical\n                        }) }))));\n        };\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        _this.isLabel = function (target) {\n            var currentTarget = target;\n            while (currentTarget) {\n                if (Boolean(currentTarget.getAttribute(SLIDER_LABEL_ATTRIBUTE))) {\n                    return true;\n                }\n                currentTarget = currentTarget.parentElement;\n            }\n            return false;\n        };\n        _this.onFocus = function () {\n            _this.setState({ focused: true });\n        };\n        _this.onBlur = function () {\n            _this.setState({ focused: false });\n        };\n        _this.onKeyDown = function (e) {\n            var newValue = undefined;\n            if (e.keyCode === Keys.left || e.keyCode === Keys.down) {\n                newValue = _this.state.value - (_this.props.step || 0);\n            }\n            else if (e.keyCode === Keys.right || e.keyCode === Keys.up) {\n                newValue = _this.state.value + (_this.props.step || 0);\n            }\n            else if (e.keyCode === Keys.home) {\n                newValue = _this.props.min;\n            }\n            else if (e.keyCode === Keys.end) {\n                newValue = _this.props.max;\n            }\n            if (newValue !== undefined) {\n                e.preventDefault();\n                _this.change(e, newValue);\n            }\n        };\n        _this.decrement = function (e) {\n            e.preventDefault();\n            _this.change(e, _this.state.value - (_this.props.step || 0));\n        };\n        _this.increment = function (e) {\n            e.preventDefault();\n            _this.change(e, _this.state.value + (_this.props.step || 0));\n        };\n        _this.dragStart = function (e) {\n            if (!_this.isLabel(e.event.originalEvent.target)) {\n                if (e.event.isTouch) {\n                    e.event.originalEvent.preventDefault();\n                }\n                _this.drag(e);\n            }\n        };\n        _this.dragOver = function (e) {\n            e.event.originalEvent.preventDefault();\n            _this.drag(e);\n        };\n        _this.drag = function (e) {\n            var computed = e.element.getBoundingClientRect();\n            var distance = _this.props.vertical\n                ? (computed.bottom - e.event.clientY)\n                : (_this.state.dir === 'rtl'\n                    ? computed.right - e.event.clientX\n                    : e.event.clientX - computed.left);\n            var size = _this.props.vertical ? computed.height : computed.width;\n            var percentage = (distance / size);\n            _this.change(e, _this.props.min + percentage * (_this.props.max - _this.props.min));\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Slider.getDerivedStateFromProps = function (props, state) {\n        var value = props.value !== undefined ? props.value : state.value;\n        var min = props.min, max = props.max;\n        return value === undefined ? null :\n            { value: Math.min(Math.max(value, min), max) };\n    };\n    /**\n     * @hidden\n     */\n    Slider.prototype.componentDidMount = function () {\n        if (!this.state.dir && window && this._element) {\n            // Note: getComputedStyle forces reflow\n            var direction = window.getComputedStyle(this._element).direction;\n            if (direction) {\n                this.setState({ dir: direction });\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    Slider.prototype.render = function () {\n        var _this = this;\n        var _a, _b;\n        var lS = provideLocalizationService(this);\n        var percentValue = ((this.state.value - this.props.min) / (this.props.max - this.props.min)) * 100;\n        var trackStyles = this.props.vertical\n            ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n            : { marginLeft: '0.5rem', marginRight: '0.5rem' };\n        var sliderItemsStyle = this.props.vertical\n            ? { paddingTop: 0, height: '100%' }\n            : {};\n        return (React.createElement(\"div\", { ref: function (el) { return _this._element = el; }, \"aria-valuemin\": this.props.min, \"aria-valuemax\": this.props.max, \"aria-valuenow\": this.state.value, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, dir: this.state.dir, role: \"slider\", id: this.props.id, style: this.props.style, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, undefined), onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, className: classNames('k-slider k-widget k-state-default', {\n                'k-state-focused': this.state.focused,\n                'k-state-disabled': this.props.disabled,\n                'k-slider-horizontal': !this.props.vertical,\n                'k-slider-vertical': this.props.vertical\n            }, this.props.className) },\n            React.createElement(\"div\", { className: classNames('k-slider-wrap', {\n                    'k-slider-buttons': this.props.buttons\n                }), style: {\n                    display: 'flex',\n                    position: 'relative',\n                    flexDirection: this.props.vertical ? 'column-reverse' : 'row'\n                } },\n                React.createElement(this.buttons, { enabled: this.props.buttons, decrement: this.decrement, increment: this.increment, incrementTitle: lS.toLanguageString(sliderIncreaseValue, messages[sliderIncreaseValue]), decrementTitle: lS.toLanguageString(sliderDecreaseValue, messages[sliderDecreaseValue]) },\n                    React.createElement(Draggable, { onDrag: this.dragOver, onPress: this.dragStart },\n                        React.createElement(\"div\", { className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n                            this.props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({ margin: 0 }, sliderItemsStyle) }, React.Children.map(this.props.children, function (child) {\n                                return child && React.cloneElement(child, {\n                                    position: 100 * (child.props.position - _this.props.min) /\n                                        (_this.props.max - _this.props.min),\n                                    vertical: _this.props.vertical\n                                }, child.props.children);\n                            }))),\n                            React.createElement(\"div\", { className: \"k-slider-track\", style: this.props.vertical\n                                    ? { bottom: 0, height: '100%' }\n                                    : (_a = {}, _a[this.state.dir === 'rtl' ? 'right' : 'left'] = 0, _a.width = '100%', _a), ref: function (el) { return _this._sliderTrack = el; } },\n                                React.createElement(\"div\", { className: \"k-slider-selection\", style: this.props.vertical\n                                        ? { height: percentValue + '%' }\n                                        : { width: percentValue + '%' } }),\n                                React.createElement(\"a\", { className: \"k-draghandle\", title: lS.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: this.props.vertical\n                                        ? { bottom: 'calc(' + percentValue + '% - 8px)', zIndex: 1 }\n                                        : (_b = {},\n                                            _b[this.state.dir === 'rtl' ? 'right' : 'left'] = 'calc(' + percentValue + '% - 8px)',\n                                            _b.zIndex = 1,\n                                            _b) }))))))));\n    };\n    Object.defineProperty(Slider.prototype, \"sliderTrack\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._sliderTrack;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Slider.prototype.change = function (e, value) {\n        value = Math.min(Math.max(value, this.props.min), this.props.max);\n        this.setState({ value: value });\n        dispatchEvent(this.props.onChange, e, this, { value: value });\n    };\n    /**\n     * @hidden\n     */\n    Slider.propTypes = {\n        min: PropTypes.number.isRequired,\n        max: PropTypes.number.isRequired,\n        value: PropTypes.number,\n        vertical: PropTypes.bool,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string\n        // TODO: validation when buttons is set to true, but no step is provided\n    };\n    return Slider;\n}(React.Component));\nexport { Slider };\nregisterForLocalization(Slider);\n//# sourceMappingURL=Slider.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n/**\n * @hidden\n */\nexport var RANGE_ACTION;\n(function (RANGE_ACTION) {\n    RANGE_ACTION[\"start\"] = \"start\";\n    RANGE_ACTION[\"end\"] = \"end\";\n    RANGE_ACTION[\"min\"] = \"min\";\n    RANGE_ACTION[\"max\"] = \"max\";\n    RANGE_ACTION[\"increase\"] = \"increase\";\n    RANGE_ACTION[\"decrease\"] = \"decrease\";\n})(RANGE_ACTION || (RANGE_ACTION = {}));\n/**\n * @hidden\n */\nexport var rangeReducer = function (state, action) {\n    var newState;\n    var newValue;\n    switch (action.type) {\n        case RANGE_ACTION.start:\n            if (action.payload === undefined) {\n                return state;\n            }\n            newState = {\n                start: action.payload > state.end ? state.end : Math.max(action.payload, action.min),\n                end: state.end\n            };\n            break;\n        case RANGE_ACTION.end:\n            if (action.payload === undefined) {\n                return state;\n            }\n            newState = {\n                start: state.start,\n                end: action.payload < state.start ? state.start : Math.min(action.payload, action.max)\n            };\n            break;\n        case RANGE_ACTION.min:\n            if (action.key === 'start') {\n                newState = __assign({}, state, { start: action.min });\n            }\n            else {\n                newState = __assign({}, state, { end: Math.max(action.min, state.start) });\n            }\n            break;\n        case RANGE_ACTION.max:\n            if (action.key === 'start') {\n                newState = __assign({}, state, { start: Math.min(action.max, state.end) });\n            }\n            else {\n                newState = __assign({}, state, { end: action.max });\n            }\n            break;\n        case RANGE_ACTION.increase:\n            if (action.step === undefined || action.key === undefined) {\n                return state;\n            }\n            newValue = state[action.key] + action.step;\n            if (action.key === 'start') {\n                if (newValue < action.min) {\n                    newState = __assign({}, state, { start: action.min });\n                }\n                else {\n                    newState = __assign({}, state, { start: Math.min(newValue, state.end) });\n                }\n            }\n            else {\n                if (newValue > action.max) {\n                    newState = __assign({}, state, { end: action.max });\n                }\n                else {\n                    newState = __assign({}, state, { end: Math.max(newValue, state.start) });\n                }\n            }\n            break;\n        case RANGE_ACTION.decrease:\n            if (action.step === undefined || action.key === undefined) {\n                return state;\n            }\n            newValue = state[action.key] - action.step;\n            if (action.key === 'start') {\n                if (newValue < action.min) {\n                    newState = __assign({}, state, { start: action.min });\n                }\n                else {\n                    newState = __assign({}, state, { start: Math.min(newValue, state.end) });\n                }\n            }\n            else {\n                if (newValue > action.max) {\n                    newState = __assign({}, state, { end: action.max });\n                }\n                else {\n                    newState = __assign({}, state, { end: Math.max(newValue, state.start) });\n                }\n            }\n            break;\n        default:\n            newState = state;\n            break;\n    }\n    return newState;\n};\n//# sourceMappingURL=range-raducer.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useDir, useDraggable, getTabIndex } from '@progress/kendo-react-common';\nimport { messages, sliderDragTitle } from './../messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { rangeReducer, RANGE_ACTION } from './range-raducer';\n/**\n * @hidden\n */\nvar useRange = function (defaultValue, args, callback) {\n    var _a = React.useState(defaultValue), state = _a[0], setState = _a[1];\n    var handleDispatchAction = React.useCallback(function (action) {\n        var newState = rangeReducer(args.state || state, __assign({}, action, args));\n        if (callback) {\n            callback(newState, action.event);\n        }\n        setState(newState);\n    }, [args, callback]);\n    return [state, handleDispatchAction];\n};\n/**\n * Represents the RangeSlider component.\n */\nexport var RangeSlider = React.forwardRef(function (props, ref) {\n    var _a, _b, _c, _d;\n    var target = React.useRef(null);\n    var sliderRef = React.useRef(null);\n    var sliderSelectionRef = React.useRef(null);\n    var startHandle = React.useRef(null);\n    var endHandle = React.useRef(null);\n    var focus = React.useCallback(function () {\n        if (startHandle.current) {\n            startHandle.current.focus();\n        }\n    }, [startHandle]);\n    React.useImperativeHandle(target, function () { return ({\n        element: sliderRef.current,\n        focus: focus,\n        props: props\n    }); });\n    React.useImperativeHandle(ref, function () { return target.current; });\n    var min = React.useMemo(function () { return props.min; }, [props.min]);\n    var max = React.useMemo(function () { return props.max; }, [props.max]);\n    var step = React.useMemo(function () { return props.step !== undefined ? props.step : defaultProps.step; }, [props.step, defaultProps.step]);\n    var dir = useDir(sliderRef, props.dir);\n    var handleChange = function (newValue, event) {\n        if (props.onChange && target.current) {\n            props.onChange.call(undefined, {\n                value: newValue,\n                target: target.current,\n                syntheticEvent: event\n            });\n        }\n    };\n    // const [showTooltip, setShowTooltip] = React.useState(false);\n    var _e = React.useState(''), currentDrag = _e[0], setCurrentDrag = _e[1];\n    var _f = useRange(props.defaultValue || defaultProps.defaultValue, {\n        min: min,\n        max: max,\n        step: step,\n        state: props.value\n    }, handleChange), stateValue = _f[0], dispatchStateValue = _f[1];\n    var value = React.useMemo(function () { return props.value || stateValue; }, [props.value, stateValue]);\n    var sliderTrackRef = React.useRef(null);\n    var sliderTrackWrapRef = React.useRef(null);\n    var percentStart = React.useMemo(function () { return ((value.start - min) / (max - min)) * 100; }, [value.start, min, max]);\n    var percentEnd = React.useMemo(function () { return ((value.end - min) / (max - min)) * 100; }, [value.end, min, max]);\n    var sliderItemsStyle = React.useMemo(function () { return props.vertical ? { paddingTop: 0, height: '100%' } : {}; }, [props.vertical]);\n    var trackStyles = React.useMemo(function () { return props.vertical\n        ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n        : { marginLeft: '0.5rem', marginRight: '0.5rem' }; }, [props.vertical]);\n    var localization = useLocalization();\n    var calcNewDistance = React.useCallback(function (event, calc) {\n        if (!sliderTrackWrapRef.current) {\n            return;\n        }\n        event.originalEvent.preventDefault();\n        var computed = sliderTrackWrapRef.current.getBoundingClientRect();\n        var distance = props.vertical\n            ? (computed.bottom - event.clientY)\n            : dir === 'rtl'\n                ? (computed.right - event.clientX)\n                : (event.clientX - computed.left);\n        var size = props.vertical ? computed.height : computed.width;\n        var percentage = (distance / size);\n        var payload = calc === '+'\n            ? (min + percentage * (max + min))\n            : (min + percentage * (max - min));\n        return payload;\n    }, [\n        sliderTrackWrapRef,\n        props.vertical,\n        dir,\n        min,\n        max,\n        stateValue.start,\n        stateValue.end,\n        props.value && props.value.start,\n        props.value && props.value.end\n    ]);\n    var calcKey = React.useCallback(function (payload) {\n        if (payload <= value.start) {\n            return 'start';\n        }\n        if (payload >= value.end) {\n            return 'end';\n        }\n        return (2 * payload < value.end + value.start) ? 'start' : 'end';\n    }, [\n        stateValue.start, stateValue.end,\n        props.value && props.value.start,\n        props.value && props.value.end\n    ]);\n    var handleStartKeyDown = React.useCallback(function (event) {\n        switch (event.keyCode) {\n            case Keys.right:\n                event.preventDefault();\n                dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.decrease : RANGE_ACTION.increase, key: 'start', event: event });\n                break;\n            case Keys.up:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.increase, key: 'start', event: event });\n                break;\n            case Keys.left:\n                event.preventDefault();\n                dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.increase : RANGE_ACTION.decrease, key: 'start', event: event });\n                break;\n            case Keys.down:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.decrease, key: 'start', event: event });\n                break;\n            case Keys.home:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.min, key: 'start', event: event });\n                break;\n            case Keys.end:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.max, key: 'start', event: event });\n                break;\n            default:\n                break;\n        }\n    }, [dispatchStateValue]);\n    var handleEndKeyDown = React.useCallback(function (event) {\n        switch (event.keyCode) {\n            case Keys.right:\n                event.preventDefault();\n                dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.decrease : RANGE_ACTION.increase, key: 'end', event: event });\n                break;\n            case Keys.up:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.increase, key: 'end', event: event });\n                break;\n            case Keys.left:\n                event.preventDefault();\n                dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.increase : RANGE_ACTION.decrease, key: 'end', event: event });\n                break;\n            case Keys.down:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.decrease, key: 'end', event: event });\n                break;\n            case Keys.home:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.min, key: 'end', event: event });\n                break;\n            case Keys.end:\n                event.preventDefault();\n                dispatchStateValue({ type: RANGE_ACTION.max, key: 'end', event: event });\n                break;\n            default:\n                break;\n        }\n    }, [dispatchStateValue, dir]);\n    var handleTrackPress = React.useCallback(function (event) {\n        var payload = calcNewDistance(event, '-');\n        var key = calcKey(payload);\n        setCurrentDrag(key);\n        key === 'end' ? endHandle.current.focus() : startHandle.current.focus();\n        var action = (key === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start);\n        dispatchStateValue({ type: action, payload: payload, event: event });\n    }, [props.vertical, min, max, dispatchStateValue]);\n    var handleTrackDrag = function (event) {\n        var payload = calcNewDistance(event, '+');\n        var action = currentDrag === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start;\n        dispatchStateValue({ type: action, payload: payload, event: event });\n    };\n    var handleTrackRelease = function (event) {\n        var payload = calcNewDistance(event, '+');\n        var action = currentDrag === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start;\n        dispatchStateValue({ type: action, payload: payload, event: event });\n        setCurrentDrag('');\n    };\n    // const handleFocus = React.useCallback(\n    //     () => {\n    //         setShowTooltip(true);\n    //     },\n    //     []);\n    // const handleBlur = React.useCallback(\n    //     () => {\n    //         setShowTooltip(false);\n    //     },\n    //     []);\n    useDraggable(sliderTrackWrapRef, { onPress: handleTrackPress, onDrag: handleTrackDrag, onRelease: handleTrackRelease });\n    // const { onFocus, onBlur } = useAsyncFocusBlur({ onFocus: handleFocus, onBlur: handleBlur });\n    return (React.createElement(\"div\", { role: \"slider\", id: props.id, style: props.style, ref: sliderRef, dir: dir, className: classNames('k-widget k-slider', {\n            'k-rtl': dir === 'rtl',\n            'k-state-disabled': props.disabled,\n            'k-slider-vertical': props.vertical,\n            'k-slider-horizontal': !props.vertical\n        }, props.className), \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy },\n        React.createElement(\"div\", { className: 'k-slider-wrap', style: {\n                display: 'flex',\n                position: 'relative',\n                flexDirection: props.vertical ? 'column-reverse' : 'row'\n            } },\n            React.createElement(\"div\", { ref: sliderTrackWrapRef, className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n                props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({ margin: 0 }, sliderItemsStyle) }, React.Children.map(props.children, function (child) {\n                    return child && React.cloneElement(child, {\n                        position: 100 * (child.props.position - props.min) /\n                            (props.max - props.min),\n                        vertical: props.vertical\n                    }, child.props.children);\n                }))),\n                React.createElement(\"div\", { ref: sliderTrackRef, className: \"k-slider-track\", style: props.vertical\n                        ? { bottom: 0, height: '100%' }\n                        : (_a = {}, _a[dir === 'rtl' ? 'right' : 'left'] = 0, _a.width = '100%', _a) },\n                    (percentStart !== null && percentEnd !== null) && React.createElement(\"div\", { \"data-selection\": true, ref: sliderSelectionRef, title: value.start + \" - \" + value.end, className: \"k-slider-selection\", style: props.vertical\n                            ? { height: (percentEnd - percentStart) + '%', bottom: percentStart + '%' }\n                            : (_b = {},\n                                _b[dir === 'rtl' ? 'right' : 'left'] = percentStart + '%',\n                                _b.width = (percentEnd - percentStart) + '%',\n                                _b) }),\n                    React.createElement(\"a\", { ref: startHandle, role: \"slider\", tabIndex: getTabIndex(props.startTabIndex, props.disabled, undefined), \"aria-valuemin\": min, \"aria-valuemax\": Math.max(max, value.end), \"aria-valuenow\": value.start, \"aria-disabled\": props.disabled ? 'true' : undefined, className: \"k-draghandle\", title: localization.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: props.vertical\n                            ? { bottom: 'calc(' + percentStart + '% - 8px)', zIndex: 1 }\n                            : (_c = {}, _c[dir === 'rtl' ? 'right' : 'left'] = 'calc(' + percentStart + '% - 8px)', _c.zIndex = 1, _c), onKeyDown: handleStartKeyDown }),\n                    React.createElement(\"a\", { ref: endHandle, role: \"slider\", tabIndex: getTabIndex(props.endTabIndex, props.disabled, undefined), \"aria-valuemin\": Math.min(min, value.start), \"aria-valuemax\": max, \"aria-valuenow\": value.end, \"aria-disabled\": props.disabled ? 'true' : undefined, className: \"k-draghandle\", title: localization.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: props.vertical\n                            ? { bottom: 'calc(' + percentEnd + '% - 8px)', zIndex: 1 }\n                            : (_d = {}, _d[dir === 'rtl' ? 'right' : 'left'] = 'calc(' + percentEnd + '% - 8px)', _d.zIndex = 1, _d), onKeyDown: handleEndKeyDown }))))));\n});\nvar propTypes = {\n    value: function (props, propName, componentName) {\n        if (props.value) {\n            var start = props.value.start;\n            var end = props.value.end;\n            var min = props.min;\n            var max = props.max;\n            if (start > end || start > max || start < min || end > max || end < min || end < start) {\n                return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                    The { start, end } value must be between the min & max value and { start, end } must be start < end.\\n                    \");\n            }\n        }\n        return null;\n    },\n    defaultValue: function (props, propName, componentName) {\n        if (props.defaultValue) {\n            var start = props.defaultValue.start;\n            var end = props.defaultValue.end;\n            var min = props.min;\n            var max = props.max;\n            if (start > end || start > max || start < min || end > max || end < min || end < start) {\n                return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                    The { start, end } value must be between the min & max value and { start, end } must be start < end.\\n                    \");\n            }\n        }\n        return null;\n    },\n    onChange: PropTypes.func,\n    step: PropTypes.number,\n    min: function (props, propName, componentName) {\n        var prop = props[propName];\n        var min = props.min;\n        var max = props.max;\n        if (min === undefined) {\n            return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                \" + propName + \" value can not be undefined.\\n                \");\n        }\n        if (prop && min >= max) {\n            return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                \" + propName + \" value can not be equal to or bigger than the max value.\\n                \");\n        }\n        return null;\n    },\n    max: function (props, propName, componentName) {\n        var prop = props[propName];\n        var min = props.min;\n        var max = props.max;\n        if (max === undefined) {\n            return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                \" + propName + \" value can not be undefined.\\n                \");\n        }\n        if (prop && max <= min) {\n            return new Error(\"Invalid prop + \" + propName + \" supplied to \" + componentName + \".\\n                \" + propName + \" value can not be equal to or smaller than the min value.\\n                \");\n        }\n        return null;\n    },\n    vertical: PropTypes.bool,\n    disabled: PropTypes.bool,\n    dir: PropTypes.oneOf(['ltr', 'rtl'])\n};\nvar defaultProps = {\n    step: 1,\n    defaultValue: {\n        start: 0,\n        end: 0\n    },\n    vertical: false,\n    disabled: false\n};\nRangeSlider.displayName = 'KendoReactRangeSlider';\n// TODO: delete casting when @types/react is updated!\nRangeSlider.propTypes = propTypes;\nRangeSlider.defaultProps = defaultProps;\n//# sourceMappingURL=RangeSlider.js.map","import * as React from 'react';\nimport Draggable from '@telerik/kendo-draggable';\n/** @hidden */\nexport function useDraggable(ref, _a) {\n    var onPress = _a.onPress, onDrag = _a.onDrag, onRelease = _a.onRelease;\n    var draggable = React.useMemo(function () { return new Draggable({\n        press: onPress,\n        drag: onDrag,\n        release: onRelease\n    }); }, []);\n    var initDraggable = function () {\n        var element = ref.current;\n        if (!element) {\n            return;\n        }\n        draggable.bindTo(element);\n        return function () { draggable.destroy(); };\n    };\n    var updateDraggable = function () {\n        draggable.update({\n            press: onPress,\n            drag: onDrag,\n            release: onRelease\n        });\n    };\n    React.useEffect(initDraggable, []);\n    React.useEffect(updateDraggable, [onPress, onDrag, onRelease]);\n}\n//# sourceMappingURL=useDraggable.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, noop, Keys, dispatchEvent, getTabIndex } from '@progress/kendo-react-common';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, switchValidation } from './../messages';\nvar SWITCH_CONTAINER = 'k-switch-container';\nvar SWITCH_HANDLE = 'k-switch-handle';\nvar SWITCH_LABEL_ON = 'k-switch-label-on';\nvar SWITCH_LABEL_OFF = 'k-switch-label-off';\n/**\n * Represents the [KendoReact Switch component]({% slug overview_switch%}).\n */\nvar Switch = /** @class */ (function (_super) {\n    __extends(Switch, _super);\n    /**\n     * @hidden\n     */\n    function Switch(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.setValidity = function () {\n            if (_this._input && _this._input.setCustomValidity) {\n                _this._input.setCustomValidity(_this.validity.valid\n                    ? ''\n                    : _this.props.validationMessage ||\n                        _this.defaultValidationMessage.toLanguageString(switchValidation, messages[switchValidation]));\n            }\n        };\n        _this.limit = function (offset, drag, wrapper) {\n            var wrapperWidth = wrapper.offsetWidth;\n            var margin = drag.offsetWidth;\n            if (offset < 0) {\n                return 0;\n            }\n            else if (offset > wrapperWidth - margin) {\n                return wrapperWidth - margin;\n            }\n            return offset;\n        };\n        _this.toggle = function (value, event) {\n            _this.setState({ checked: value });\n            _this.valueDuringOnChange = value;\n            dispatchEvent(_this.props.onChange, event, _this, { value: value });\n            _this.valueDuringOnChange = undefined;\n        };\n        _this._id = guid();\n        _this.defaultValidationMessage = provideLocalizationService(_this);\n        /**\n         * @hidden\n         */\n        _this.focus = function () {\n            if (_this._element) {\n                _this._element.focus();\n            }\n        };\n        _this.dummyInput = function (value) {\n            /* Dummy component to support forms */\n            return (React.createElement(\"input\", { type: \"checkbox\", checked: _this.props.checked, ref: function (el) { _this._input = el; }, tabIndex: -1, \"aria-hidden\": true, value: value, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' }, onChange: noop }));\n        };\n        _this.handleClick = function (event) {\n            _this.toggle(!_this.value, event);\n        };\n        _this.handleKeyDown = function (event) {\n            if (_this.props.disabled) {\n                return;\n            }\n            var keyCode = event.keyCode;\n            if (keyCode === Keys.space || keyCode === Keys.enter) {\n                _this.toggle(!_this.value, event);\n            }\n        };\n        _this.handleWrapperFocus = function (event) {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.setState({ focused: true });\n            var onFocus = _this.props.onFocus;\n            if (onFocus) {\n                onFocus.call(undefined, event);\n            }\n        };\n        _this.handleWrapperBlur = function (event) {\n            if (_this.props.disabled) {\n                return;\n            }\n            _this.setState({ focused: false });\n            var onBlur = _this.props.onBlur;\n            if (onBlur) {\n                onBlur.call(undefined, event);\n            }\n        };\n        _this.state = {\n            checked: props.defaultChecked || Switch.defaultProps.defaultChecked,\n            focused: false\n        };\n        return _this;\n    }\n    Object.defineProperty(Switch.prototype, \"value\", {\n        /**\n         * Gets the value of the Switch.\n         */\n        get: function () {\n            return this.valueDuringOnChange !== undefined\n                ? this.valueDuringOnChange\n                : this.props.checked !== undefined\n                    ? this.props.checked\n                    : this.state.checked;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"actionElement\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._wrapper;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"name\", {\n        /**\n         * Gets the `name` property of the Switch.\n         */\n        get: function () {\n            return this.props.name;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"validity\", {\n        /**\n         * Represents the validity state into which the Switch is set.\n         */\n        get: function () {\n            var customError = this.props.validationMessage !== undefined;\n            var isValid = this.props.valid !== undefined ?\n                this.props.valid :\n                !this.props.required ?\n                    true :\n                    this.value ? true : false;\n            var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n            return {\n                customError: customError,\n                valid: valid,\n                valueMissing: this.value === null\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"validityStyles\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.validityStyles !== undefined\n                ? this.props.validityStyles\n                : Switch.defaultProps.validityStyles;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Switch.prototype, \"required\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this.props.required !== undefined\n                ? this.props.required\n                : Switch.defaultProps.required;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Switch.prototype.componentDidMount = function () {\n        this.setValidity();\n        // Due to dynamic dir calculation\n        this.forceUpdate();\n    };\n    /**\n     * @hidden\n     */\n    Switch.prototype.componentDidUpdate = function () {\n        this.setValidity();\n    };\n    /**\n     * @hidden\n     */\n    Switch.prototype.render = function () {\n        var _this = this;\n        var focused = this.state.focused;\n        var _a = this.props, dir = _a.dir, disabled = _a.disabled, id = _a.id, offLabel = _a.offLabel, onLabel = _a.onLabel, tabIndex = _a.tabIndex;\n        this.dir = dir || (this._wrapper && getComputedStyle(this._wrapper).direction) || undefined;\n        var isValid = !this.validityStyles || this.validity.valid;\n        var switchClassName = classNames({\n            'k-widget': true,\n            'k-switch': true,\n            'k-switch-on': this.value,\n            'k-switch-off': !this.value,\n            'k-state-focused': focused,\n            'k-state-disabled': disabled,\n            'k-state-invalid': !isValid\n        }, this.props.className);\n        var ariaAttributes = {\n            'aria-checked': this.value,\n            'aria-disabled': disabled || undefined\n        };\n        return (React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: switchClassName, dir: this.dir, onKeyDown: this.handleKeyDown, onClick: this.handleClick, onBlur: this.handleWrapperBlur, onFocus: this.handleWrapperFocus },\n            React.createElement(\"span\", __assign({ className: SWITCH_CONTAINER, id: id || this._id, role: 'switch' }, ariaAttributes, { \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, ref: function (span) { _this._element = span; }, tabIndex: getTabIndex(tabIndex, disabled, undefined), accessKey: this.props.accessKey }),\n                this.dummyInput(this.value),\n                React.createElement(\"span\", { className: SWITCH_LABEL_ON }, onLabel),\n                React.createElement(\"span\", { className: SWITCH_LABEL_OFF }, offLabel),\n                React.createElement(\"span\", { className: SWITCH_HANDLE }))));\n    };\n    /**\n     * @hidden\n     */\n    Switch.propTypes = {\n        accessKey: PropTypes.string,\n        checked: PropTypes.bool,\n        className: PropTypes.string,\n        disabled: PropTypes.bool,\n        defaultChecked: PropTypes.bool,\n        dir: PropTypes.string,\n        id: PropTypes.string,\n        ariaLabelledBy: PropTypes.string,\n        ariaDescribedBy: PropTypes.string,\n        offLabel: PropTypes.string,\n        required: PropTypes.bool,\n        tabIndex: PropTypes.number,\n        valid: PropTypes.bool,\n        validate: PropTypes.bool,\n        validationMessage: PropTypes.string,\n        onBlur: PropTypes.any,\n        onChange: PropTypes.any,\n        onFocus: PropTypes.any,\n        onLabel: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    Switch.defaultProps = {\n        disabled: false,\n        defaultChecked: false,\n        offLabel: 'OFF',\n        onBlur: noop,\n        onFocus: noop,\n        onLabel: 'ON',\n        required: false,\n        validityStyles: true\n    };\n    return Switch;\n}(React.Component));\nexport { Switch };\n//# sourceMappingURL=Switch.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, classNames, guid, useDir, getTabIndex, dispatchEvent } from '@progress/kendo-react-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, checkboxValidation } from './../messages';\n/**\n * Represents the [KendoReact Checkbox component]({% slug overview_checkbox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return <Checkbox />;\n *     }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Checkbox = React.forwardRef(function (props, target) {\n    var checked = props.checked, className = props.className, children = props.children, defaultChecked = props.defaultChecked, disabled = props.disabled, defaultValue = props.defaultValue, id = props.id, label = props.label, labelPlacement = props.labelPlacement, name = props.name, onChange = props.onChange, onFocus = props.onFocus, tabIndex = props.tabIndex, value = props.value, required = props.required, validationMessage = props.validationMessage, validityStyles = props.validityStyles, others = __rest(props, [\"checked\", \"className\", \"children\", \"defaultChecked\", \"disabled\", \"defaultValue\", \"id\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"onFocus\", \"tabIndex\", \"value\", \"required\", \"validationMessage\", \"validityStyles\"]);\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); });\n    var _a = React.useState(defaultChecked), stateChecked = _a[0], setStateChecked = _a[1];\n    var _b = React.useState(defaultValue), stateValue = _b[0], setStateValue = _b[1];\n    var valueIsBoolean = (typeof value === 'boolean' || value === null);\n    var isCheckedControlled = checked !== undefined;\n    var isValueControlled = value !== undefined && valueIsBoolean;\n    var currentValue = isValueControlled ? value : stateValue;\n    var currentChecked = isCheckedControlled ? checked : stateChecked;\n    var useValueAsChecked = currentChecked === undefined && currentValue;\n    var checkedProp = useValueAsChecked ? currentValue : currentChecked;\n    var valueProp = (useValueAsChecked || isValueControlled) ? (value === null ? value : undefined) : value || currentValue;\n    var indeterminateProp = checkedProp === null || valueProp === null;\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var localizationService = useLocalization();\n    var localizeMessage = function (message) {\n        return localizationService.toLanguageString(message, messages[message]);\n    };\n    var defaultValidationMessage = localizeMessage(checkboxValidation);\n    var isValid = props.valid !== undefined ?\n        props.valid :\n        !required ?\n            true :\n            currentChecked ? true : false;\n    React.useEffect(function () {\n        if (elementRef.current && elementRef.current.setCustomValidity) {\n            elementRef.current.setCustomValidity(isValid\n                ? ''\n                : (validationMessage || defaultValidationMessage));\n        }\n    }, [isValid, validationMessage, defaultValidationMessage]);\n    var setValue = React.useCallback(function (e, val) {\n        if (!isCheckedControlled && !disabled) {\n            if (!isValueControlled && !disabled) {\n                setStateValue(val);\n            }\n            setStateChecked(val);\n        }\n        if (onChange && !disabled) {\n            var handle = {\n                element: elementRef,\n                focus: focusElement\n            };\n            dispatchEvent(onChange, e, handle, { value: val });\n        }\n    }, [onChange, setStateChecked, setStateValue, disabled]);\n    var onChangeHandler = React.useCallback(function (e) {\n        var newValue = e.target.checked;\n        setValue(e, newValue);\n    }, [setValue]);\n    var onKeyDownHandler = React.useCallback(function (e) {\n        if (disabled) {\n            return;\n        }\n        var keyCode = e.keyCode;\n        var currentVal = e.currentTarget.checked;\n        if (keyCode === Keys.space || keyCode === Keys.enter) {\n            e.preventDefault();\n            e.stopPropagation();\n            setValue(e, !currentVal);\n        }\n    }, [setValue]);\n    var onFocusHandler = React.useCallback(function (e) {\n        if (onFocus && !disabled) {\n            var handle = {\n                element: elementRef,\n                focus: focusElement\n            };\n            dispatchEvent(onFocus, e, handle, undefined);\n        }\n    }, [onFocus, disabled]);\n    var dir = useDir(elementRef, props.dir);\n    var checkboxClasses = classNames({\n        'k-state-default': !disabled,\n        'k-state-disabled': disabled\n    }, className);\n    var inputProps = __assign({ type: 'checkbox', className: classNames({\n            'k-checkbox': true,\n            'k-state-indeterminate': indeterminateProp,\n            'k-state-invalid': !(isValid || validityStyles !== undefined || validityStyles === true)\n        }), ref: elementRef, name: name, id: id || calculatedId, 'aria-labelledby': props.ariaLabelledBy, 'aria-describedby': props.ariaDescribedBy, checked: Boolean(checkedProp), disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), role: 'checkbox', required: required !== undefined ? required : false, 'aria-checked': currentChecked || checkedProp ?\n            true :\n            indeterminateProp ?\n                'mixed' :\n                false, 'aria-disabled': disabled || undefined }, others, { onChange: onChangeHandler, onKeyDown: onKeyDownHandler, onFocus: onFocusHandler });\n    var checkboxInput = (React.createElement(React.Fragment, null, \n    // removing value prop is required due to bug in react where\n    // value set to undefined override default submit value\n    valueProp === undefined ? (React.createElement(\"input\", __assign({}, inputProps))) : (React.createElement(\"input\", __assign({}, inputProps, { value: valueIsBoolean ? undefined : valueProp === null ? '' : valueProp })))));\n    var checkboxLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-checkbox-label', htmlFor: id || calculatedId, style: { userSelect: 'none' } }, label)) : null));\n    return (React.createElement(React.Fragment, null, (labelPlacement === 'before') ? (React.createElement(\"span\", { className: checkboxClasses, dir: 'rtl' },\n        checkboxInput,\n        checkboxLabel,\n        children)) : (React.createElement(\"span\", { className: checkboxClasses, dir: dir },\n        checkboxInput,\n        checkboxLabel,\n        children))));\n});\nCheckbox.propTypes = {\n    checked: PropTypes.bool,\n    className: PropTypes.string,\n    defaultChecked: PropTypes.bool,\n    defaultValue: PropTypes.any,\n    dir: PropTypes.string,\n    disabled: PropTypes.bool,\n    id: PropTypes.string,\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string,\n    label: PropTypes.string,\n    labelPlacement: PropTypes.string,\n    name: PropTypes.string,\n    tabIndex: PropTypes.number,\n    value: PropTypes.any,\n    validationMessage: PropTypes.string,\n    required: PropTypes.bool,\n    validate: PropTypes.bool,\n    valid: PropTypes.bool,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func\n};\nCheckbox.displayName = 'KendoCheckbox';\n//# sourceMappingURL=Checkbox.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, dispatchEvent } from '@progress/kendo-react-common';\nexport var RadioButton = React.forwardRef(function (props, target) {\n    var ariaDescribedBy = props.ariaDescribedBy, checked = props.checked, children = props.children, className = props.className, disabled = props.disabled, id = props.id, label = props.label, labelPlacement = props.labelPlacement, name = props.name, style = props.style, tabIndex = props.tabIndex, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus, others = __rest(props, [\"ariaDescribedBy\", \"checked\", \"children\", \"className\", \"disabled\", \"id\", \"label\", \"labelPlacement\", \"name\", \"style\", \"tabIndex\", \"value\", \"valid\", \"onChange\", \"onFocus\"]);\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var calculatedId = React.useMemo(function () { return guid(); }, []);\n    var handleChange = React.useCallback(function (event) {\n        dispatchEvent(onChange, event, getImperativeHandle(), { value: value });\n    }, [onChange, value, disabled]);\n    var handleFocus = React.useCallback(function (event) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled]);\n    var inputProps = __assign({ type: 'radio', id: id || calculatedId, name: name, className: classNames({\n            'k-radio': true,\n            'k-state-invalid': valid === false\n        }, className), ref: elementRef, disabled: disabled, tabIndex: !disabled ? tabIndex : -1, role: 'radio', checked: checked, style: style, 'aria-checked': Boolean(checked), 'aria-disabled': disabled, 'aria-describedby': ariaDescribedBy, value: value, onChange: handleChange, onFocus: handleFocus }, others);\n    var radioButtonLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-radio-label', htmlFor: id || calculatedId, style: { userSelect: 'none' }, \"aria-label\": label }, label)) : null));\n    var radio = React.createElement(\"input\", __assign({}, inputProps));\n    return (labelPlacement === 'before'\n        ? (React.createElement(React.Fragment, null,\n            radioButtonLabel,\n            radio,\n            children)) : (React.createElement(React.Fragment, null,\n        radio,\n        radioButtonLabel,\n        children)));\n});\nRadioButton.propTypes = {\n    ariaDescribedBy: PropTypes.string,\n    checked: PropTypes.bool,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    id: PropTypes.string,\n    label: PropTypes.string,\n    labelPlacement: PropTypes.string,\n    name: PropTypes.string,\n    style: PropTypes.object,\n    tabIndex: PropTypes.number,\n    value: PropTypes.any,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func\n};\nRadioButton.displayName = 'KendoRadioButton';\n//# sourceMappingURL=RadioButton.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { RadioButton } from './RadioButton';\nimport { useRtl, guid, classNames, focusFirstFocusableChild, dispatchEvent } from '@progress/kendo-react-common';\nexport var RadioGroup = React.forwardRef(function (props, target) {\n    var ariaLabelledBy = props.ariaLabelledBy, ariaDescribedBy = props.ariaDescribedBy, className = props.className, data = props.data, defaultValue = props.defaultValue, disabled = props.disabled, name = props.name, labelPlacement = props.labelPlacement, layout = props.layout, style = props.style, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            focusFirstFocusableChild(elementRef.current);\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var _a = React.useState(defaultValue), stateChecked = _a[0], setStateChecked = _a[1];\n    var isControlled = value !== undefined;\n    var checkedRadioValue = isControlled ? value : stateChecked;\n    var handleChange = React.useCallback(function (event) {\n        var currentValue = event.value;\n        if (!isControlled && !disabled) {\n            setStateChecked(currentValue);\n        }\n        if (onChange && !disabled) {\n            dispatchEvent(onChange, event.syntheticEvent, getImperativeHandle(), { value: currentValue });\n        }\n    }, [setStateChecked, onChange, disabled]);\n    var handleFocus = React.useCallback(function (event) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, event.syntheticEvent, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled]);\n    var radioGroupName = React.useMemo(function () { return guid(); }, []);\n    var radioGroupClasses = classNames('k-radio-list', {\n        'k-list-horizontal': layout === 'horizontal',\n        'k-list-vertical': layout === 'vertical' || layout === undefined\n    }, className);\n    var dir = useRtl(elementRef, props.dir);\n    var radioOptions = (data && data.map(function (option, index) {\n        var isCurrentlyChecked = checkedRadioValue === option.value;\n        var noOptionChecked = checkedRadioValue === null || checkedRadioValue === undefined;\n        var radioButtonProps = __assign({ valid: valid, checked: isCurrentlyChecked, disabled: (option.disabled || disabled) ? true : false, labelPlacement: option.labelPlacement ? option.labelPlacement : labelPlacement, tabIndex: option.tabIndex\n                ? option.tabIndex\n                : (noOptionChecked && index === 0) || isCurrentlyChecked\n                    ? 0\n                    : -1, index: index, name: name || radioGroupName }, option, { onChange: handleChange, onFocus: handleFocus });\n        return (React.createElement(\"li\", { className: \"k-radio-item\", key: index },\n            React.createElement(RadioButton, __assign({}, radioButtonProps))));\n    }));\n    return (React.createElement(\"ul\", { role: \"radiogroup\", className: radioGroupClasses, ref: elementRef, dir: dir, style: style, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }, radioOptions));\n});\nRadioGroup.propTypes = {\n    ariaLabelledBy: PropTypes.string,\n    ariaDescribedBy: PropTypes.string,\n    className: PropTypes.string,\n    data: PropTypes.arrayOf(PropTypes.object),\n    defaultValue: PropTypes.any,\n    dir: PropTypes.string,\n    disabled: PropTypes.bool,\n    itemRender: PropTypes.any,\n    labelPlacement: PropTypes.string,\n    layout: PropTypes.string,\n    name: PropTypes.string,\n    style: PropTypes.object,\n    value: PropTypes.any,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func\n};\nRadioGroup.displayName = 'KendoRadioGroup';\n//# sourceMappingURL=RadioGroup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nvar settings = {\n    inputComponent: function (props) { return React.createElement(NumericTextBox, __assign({}, props)); },\n    operatorComponent: function (props) { return React.createElement(DropDownList, __assign({}, props)); },\n    emptyFilter: { operator: 'eq', value: null }\n};\n/**\n * @hidden\n */\nvar NumericFilterCell = /** @class */ (function (_super) {\n    __extends(NumericFilterCell, _super);\n    function NumericFilterCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return NumericFilterCell;\n}(createFilterCell(settings)));\nexport { NumericFilterCell };\n//# sourceMappingURL=NumericFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nimport { Input } from '@progress/kendo-react-inputs';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nvar settings = {\n    inputComponent: function (props) { return React.createElement(Input, __assign({}, props)); },\n    operatorComponent: function (props) { return React.createElement(DropDownList, __assign({}, props)); },\n    emptyFilter: { operator: 'contains', value: '' }\n};\n/**\n * @hidden\n */\nvar TextFilterCell = /** @class */ (function (_super) {\n    __extends(TextFilterCell, _super);\n    function TextFilterCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return TextFilterCell;\n}(createFilterCell(settings)));\nexport { TextFilterCell };\n//# sourceMappingURL=TextFilter.js.map","import { ColumnDefaultProps } from '../ColumnProps';\nfunction nextColumn(columns, current) {\n    var currentDepth = columns[current].depth;\n    var next = null;\n    for (var index = current + 1; index < columns.length; index++) {\n        if (columns[index].depth === currentDepth) {\n            next = columns[index];\n            break;\n        }\n    }\n    return next;\n}\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n    var columnsMap = [[]];\n    var maxDepth = 0;\n    for (var q = columns.length - 1; q >= 0; q--) {\n        maxDepth = Math.max(maxDepth, columns[q].depth);\n        columns[q].colSpan = columns[q].colSpan || 1;\n        if (columns[q].parentIndex !== -1) {\n            columns[columns[q].parentIndex].colSpan =\n                (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n        }\n    }\n    var rowSpan = 1;\n    columns.forEach(function (column, i) {\n        columnsMap[column.depth] = columnsMap[column.depth] || [];\n        var needKFirst = false;\n        if (columnsMap[column.depth].length === 0) {\n            if (rowSpan <= 1) {\n                rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n            }\n            else {\n                rowSpan--;\n                needKFirst = true;\n            }\n        }\n        column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n        column.kFirst = needKFirst;\n        column.index = columnsMap[column.depth].length;\n        columnsMap[column.depth].push(i);\n    });\n    var stickyLeftWidth = new Array(columnsMap.length).fill(0);\n    var width = 0;\n    columns.forEach(function (column) {\n        if (column.locked) {\n            column.left = stickyLeftWidth[column.depth];\n            width = column.width ? parseFloat(column.width.toString()) : 0;\n            if (column.children.length === 0) {\n                for (var i = column.depth; i < stickyLeftWidth.length; i++) {\n                    stickyLeftWidth[i] += width;\n                }\n            }\n            else {\n                stickyLeftWidth[column.depth] += width;\n            }\n        }\n    });\n    var stickyRightWidth = new Array(columnsMap.length).fill(0);\n    for (var i = columns.length - 1; i >= 0; i--) {\n        var column = columns[i];\n        if (column.locked) {\n            column.right = stickyRightWidth[column.depth];\n            width = column.width ? parseFloat(column.width.toString()) : 0;\n            if (column.children.length === 0) {\n                for (var j = column.depth; j < stickyRightWidth.length; j++) {\n                    stickyRightWidth[j] += width;\n                }\n            }\n            else {\n                stickyRightWidth[column.depth] += width;\n            }\n            var next = nextColumn(columns, i);\n            column.rightBorder = !(next && next.locked);\n        }\n    }\n    return columnsMap;\n}\n/**\n * @hidden\n */\nexport function readColumns(elements, depth) {\n    if (depth === void 0) { depth = 0; }\n    var columns = [];\n    if (!elements || !elements.length) {\n        return [];\n    }\n    elements.forEach(function (columnProps) {\n        var children = readColumns(columnProps.children || [], depth + 1);\n        columns.push(Object.assign({}, { depth: depth }, ColumnDefaultProps, columnProps, {\n            declarationIndex: columns.length,\n            children: children,\n            rowSpan: 0,\n            colSpan: 0\n        }));\n    });\n    var comparator = function (a, b) {\n        return a.orderIndex === b.orderIndex ?\n            a.declarationIndex - b.declarationIndex :\n            ((a.orderIndex || 0) - (b.orderIndex || 0));\n    };\n    columns.sort(comparator);\n    if (depth === 0) {\n        var ret_1 = [];\n        var flat_1 = function (cols, pIndex) {\n            return cols.forEach(function (c) {\n                c.parentIndex = pIndex;\n                flat_1(c.children, ret_1.push(c) - 1);\n            });\n        };\n        flat_1(columns, -1);\n        return ret_1;\n    }\n    return columns;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n    return Boolean(element && getComputedStyle(element).direction === 'rtl');\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n    if (!parent || !event || !event.originalEvent) {\n        return -1;\n    }\n    var target = document ? document.elementFromPoint(event.clientX, event.originalEvent.clientY) : null;\n    while (target && target.parentElement !== parent) {\n        target = target.parentElement;\n    }\n    var children = parent.children;\n    for (var i = 0; i < children.length; i++) {\n        if (children[i] === target) {\n            return i;\n        }\n    }\n    return -1;\n}\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { isRtl } from './utils';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n    __extends(Header, _super);\n    function Header() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.element = null;\n        return _this;\n    }\n    Header.prototype.componentDidMount = function () {\n        var columnResize = this.props.columnResize;\n        if (columnResize && columnResize.resizable) {\n            columnResize.setIsRtl(isRtl(this.element));\n        }\n    };\n    Header.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(\"thead\", { className: \"k-grid-header\", ref: function (el) { return _this.element = el; } },\n            this.props.headerRow,\n            this.props.filterRow));\n    };\n    return Header;\n}(React.Component));\nexport { Header };\n//# sourceMappingURL=Header.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport function HeaderCell(props) {\n    var clickProps = props.onClick ? {\n        href: '#',\n        onClick: props.onClick\n    } : {};\n    var defaultRendering = (React.createElement(\"a\", __assign({ className: \"k-link\" }, clickProps),\n        props.title || props.field || '\\u00A0',\n        props.children));\n    return props.render ?\n        props.render.call(undefined, defaultRendering, props) :\n        defaultRendering;\n}\n//# sourceMappingURL=HeaderCell.js.map","/**\n * @hidden\n */\nexport var normalize = function () {\n    var settings = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        settings[_i] = arguments[_i];\n    }\n    return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n//# sourceMappingURL=SortSettings.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n    __extends(ColumnResizer, _super);\n    function ColumnResizer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, false);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, true);\n            }\n        };\n        return _this;\n    }\n    ColumnResizer.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"span\", { className: \"k-column-resizer\", draggable: false })));\n    };\n    return ColumnResizer;\n}(React.PureComponent));\nexport { ColumnResizer };\n//# sourceMappingURL=ColumnResizer.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n    __extends(ColumnDraggable, _super);\n    function ColumnDraggable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.pressHandler) {\n                _this.props.pressHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.dragHandler) {\n                _this.props.dragHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.releaseHandler) {\n                _this.props.releaseHandler(data.event);\n            }\n        };\n        return _this;\n    }\n    ColumnDraggable.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"tr\", null, this.props.children)));\n    };\n    return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n//# sourceMappingURL=ColumnDraggable.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { HeaderCell } from './HeaderCell';\nimport { normalize } from './SortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n    true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n    false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n    'none': 'none',\n    'asc': 'ascending',\n    'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n    __extends(HeaderRow, _super);\n    function HeaderRow() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.cellClick = function (e, column) {\n            e.preventDefault();\n            if (!_this.props.sortChange) {\n                return;\n            }\n            var _a = normalize(_this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n            var oldDescriptor = (_this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n            var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n            var newDescriptor = (mode === 'single') ?\n                [] : (_this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n            if (dir !== '' && column.field) {\n                newDescriptor.push({ field: column.field, dir: dir });\n            }\n            _this.props.sortChange(e, newDescriptor, column.field);\n        };\n        _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex, index) {\n            var column = _this.props.columns[columnIndex];\n            var columnResize = _this.props.columnResize;\n            var resizable = columnResize && columnResize.resizable && column.resizable;\n            var sortable = _this.props.sortable && column.sortable;\n            var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n            var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n            var headerCellProps = {\n                field: column.field,\n                onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n                selectionChange: _this.props.selectionChange,\n                title: column.title,\n                selectionValue: column.headerSelectionValue,\n                render: _this.props.cellRender,\n                children: _this.sortIcon(sortIndex)\n            };\n            var className = (column.kFirst ? 'k-first ' : '')\n                + _this.cellClass(column.field, column.headerClassName, column.locked);\n            var style = (column.locked !== undefined) ? {\n                left: column.left,\n                right: column.right,\n                borderRightWidth: column.rightBorder ? '1px' : ''\n            } : {};\n            var ColumnMenu = column.columnMenu || _this.props.columnMenu;\n            return (React.createElement(\"th\", { \"aria-sort\": sortable ? ariaSortMap[sortDir] : undefined, key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style },\n                column.children.length === 0 && ColumnMenu && (React.createElement(ColumnMenu, { sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.columnMenuFilter, onFilterChange: _this.props.columnMenuFilterChange, field: column.field })),\n                column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)) ||\n                    React.createElement(HeaderCell, __assign({}, headerCellProps)),\n                resizable && columnResize &&\n                    React.createElement(ColumnResizer, { key: \"ColumnResizer\", resize: function (e, element, end) { return columnResize.dragHandler(e, column, element, end); } })));\n        }); };\n        return _this;\n    }\n    HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {\n        var result = \"k-header\" + (locked ? ' k-grid-header-sticky' : '') + (headerClassName ? ' ' + headerClassName : '');\n        if (this.props.sort && this.props.sort.some(function (descriptor) { return descriptor.field === field; })) {\n            result += ' k-sorted';\n        }\n        return result;\n    };\n    HeaderRow.prototype.sortIcon = function (sortIndex) {\n        if (!this.props.sort) {\n            return null;\n        }\n        return sortIndex >= 0 && [\n            React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n            this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n        ];\n    };\n    HeaderRow.prototype.render = function () {\n        var _this = this;\n        return this.props.columnsMap.map(function (rowIndexes, i) {\n            return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler }, _this.cells(rowIndexes))) || React.createElement(\"tr\", null, _this.cells(rowIndexes));\n        });\n    };\n    return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\n//# sourceMappingURL=HeaderRow.js.map","/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n    function ColumnResize(triggerResize) {\n        var _this = this;\n        /**\n         * The settings for resizing the Grid.\n         */\n        this.resizable = false;\n        this.isRtl = false;\n        this.setIsRtl = function (isRtl) {\n            _this.isRtl = isRtl;\n        };\n        this.onResize = triggerResize;\n        this.dragHandler = this.dragHandler.bind(this);\n    }\n    ColumnResize.prototype.dragHandler = function (event, column, dragCue, end) {\n        var e = event.originalEvent;\n        if (!end) {\n            e.preventDefault();\n            e.stopPropagation();\n            e.stopImmediatePropagation();\n        }\n        var tdElement = dragCue.parentElement;\n        if (!tdElement || !tdElement.parentElement) {\n            return;\n        }\n        var oldWidth = tdElement.clientWidth;\n        var newWidth;\n        if (this.isRtl) {\n            newWidth = (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n            newWidth += oldWidth;\n        }\n        else {\n            newWidth = oldWidth + event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n        }\n        if (!end && Math.abs(newWidth - oldWidth) < 1) {\n            return;\n        }\n        this.setWidths(column, Math.floor(newWidth) / oldWidth);\n        var index = this.columns.filter(function (c) { return !c.children.length; }).indexOf(column);\n        this.onResize(index, oldWidth, newWidth, e, end);\n    };\n    ColumnResize.prototype.setWidths = function (column, coef) {\n        var indexInOriginal = this.columns.indexOf(column);\n        var toAdjust = [];\n        var more = column.children.length;\n        for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n            var cc = this.columns[i];\n            if (!cc.children.length) {\n                toAdjust.push(cc);\n            }\n            else {\n                more += cc.children.length;\n            }\n        }\n        if (toAdjust.length === 0) {\n            toAdjust.push(column);\n        }\n        toAdjust.forEach(function (colToAdjust) {\n            var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n            var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n            if (targetWidth < min) {\n                targetWidth = min;\n            }\n            colToAdjust.width = targetWidth;\n        });\n        this.updateColElements(toAdjust);\n    };\n    ColumnResize.prototype.updateColElements = function (affectedColumns) {\n        var columns = this.columns.filter(function (c) { return !c.children.length; });\n        var difference = 1e-10;\n        for (var i = 0; i < affectedColumns.length; i++) {\n            var colIndex = columns.indexOf(affectedColumns[i]);\n            var currentColumnFloatWidth = parseFloat((affectedColumns[i].width || 0).toString());\n            difference += currentColumnFloatWidth - Math.floor(currentColumnFloatWidth);\n            var currentWidth = Math.floor(currentColumnFloatWidth) + Math.floor(difference);\n            difference -= Math.floor(difference);\n            this.setColWidth(this.colGroupMain && this.colGroupMain.children[colIndex], currentWidth);\n            this.setColWidth(this.colGroupHeader && this.colGroupHeader.children[colIndex], currentWidth);\n            this.setColWidth(this.colGroupFooter && this.colGroupFooter.children[colIndex], currentWidth);\n        }\n    };\n    ColumnResize.prototype.setColWidth = function (col, width) {\n        if (col) {\n            col.style.width = width + 'px';\n        }\n    };\n    return ColumnResize;\n}());\nexport { ColumnResize };\n//# sourceMappingURL=ColumnResize.js.map","import { getIndex } from './../header/';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n    function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n        var _this = this;\n        this.reorderable = false;\n        this.groupable = false;\n        this.startColumn = -1;\n        this.startGroup = -1;\n        this.currentColumn = -1;\n        this.currentGroup = -1;\n        this.dropElementClue = null;\n        this.dragElementClue = null;\n        this.groupPanelDivElement = null;\n        this.refGroupPanelDiv = function (e) {\n            _this.groupPanelDivElement = e;\n        };\n        this.refDropElementClue = function (e) {\n            _this.dropElementClue = e;\n        };\n        this.refDragElementClue = function (e) {\n            _this.dragElementClue = e;\n        };\n        this.pressHandler = function (event, element) {\n            if (!event.isTouch) {\n                event.originalEvent.preventDefault();\n            }\n            var startColumn = _this.getColumnIndex(event, element);\n            _this.startGroup = _this.getGroupIndex(event);\n            if (startColumn >= 0) {\n                var col = _this.columns[startColumn];\n                if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n                    _this.startColumn = startColumn;\n                }\n            }\n        };\n        this.dragHandler = function (event, element) {\n            if (!event.isTouch) {\n                event.originalEvent.preventDefault();\n            }\n            event.originalEvent.stopPropagation();\n            if (_this.startColumn === -1 && _this.startGroup === -1) {\n                return;\n            }\n            _this.currentColumn = _this.getColumnIndex(event, element);\n            _this.currentGroup = _this.getGroupIndex(event);\n            if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n                _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n            }\n            var invalidIndex = !_this.isValid();\n            if (invalidIndex) {\n                _this.currentColumn = -1;\n                _this.currentGroup = -1;\n            }\n            var targetElement = (_this.currentColumn >= 0) ?\n                element.children[_this.columns[_this.currentColumn].index] :\n                _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n            _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n            _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n        };\n        this.releaseHandler = function (event) {\n            var prevColumnIndex = _this.startColumn;\n            var nextColumnIndex = _this.currentColumn;\n            var prevGroupIndex = _this.startGroup;\n            var nextGroupIndex = _this.currentGroup;\n            if (_this.dropElementClue) {\n                _this.dropElementClue.setState({ visible: false });\n            }\n            if (_this.dragElementClue) {\n                _this.dragElementClue.setState({ visible: false });\n            }\n            var isValid = _this.isValid();\n            _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n            if (!isValid) {\n                return;\n            }\n            if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n                _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n            }\n            else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n                _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n            }\n            else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n                _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n            }\n        };\n        this.columnReorder = columnReorder;\n        this.groupReorder = groupReorder;\n        this.columnToGroup = columnToGroup;\n    }\n    CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n        if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n            return -1;\n        }\n        var index = getIndex(event, parent);\n        if (index === -1) {\n            return -1;\n        }\n        var _loop_1 = function (i) {\n            if (parent.parentNode.children[i] === parent) {\n                return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n            }\n        };\n        var this_1 = this;\n        for (var i = 0; i < parent.parentNode.children.length; i++) {\n            var state_1 = _loop_1(i);\n            if (typeof state_1 === \"object\")\n                return state_1.value;\n        }\n        return -1;\n    };\n    CommonDragLogic.prototype.getGroupIndex = function (event) {\n        return getIndex(event, this.groupPanelDivElement);\n    };\n    CommonDragLogic.prototype.isValid = function () {\n        if (this.startGroup >= 0) {\n            // group can be moved into group only\n            return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n        }\n        if (this.startColumn === -1) {\n            return false;\n        }\n        if (this.currentGroup >= 0) {\n            // column to group is possible\n            return this.columns[this.startColumn].groupable === true && this.groupable === true;\n        }\n        // reorder is possible\n        return this.reorderable === true &&\n            this.currentColumn >= 0 &&\n            this.currentColumn !== this.startColumn &&\n            this.columns[this.startColumn].reorderable === true &&\n            this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n    };\n    CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dragElementClue) {\n            return;\n        }\n        var innerText = this.startColumn >= 0 ?\n            element.children[this.columns[this.startColumn].index].innerText :\n            element.innerText;\n        this.dragElementClue.setState({\n            visible: true,\n            top: (event.pageY + 10),\n            left: event.pageX,\n            innerText: innerText,\n            status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n        });\n    };\n    CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dropElementClue) {\n            return;\n        }\n        if (invalidIndex || !targetElement) {\n            this.dropElementClue.setState({ visible: false });\n            return;\n        }\n        var rect = targetElement.getBoundingClientRect();\n        var left = rect.left + event.pageX - event.clientX - 6;\n        if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n            left += rect.width;\n        }\n        var top = rect.top + event.pageY - event.clientY;\n        this.dropElementClue.setState({\n            visible: true,\n            top: top,\n            left: left,\n            height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n        });\n    };\n    return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n//# sourceMappingURL=CommonDragLogic.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n    __extends(DragClue, _super);\n    function DragClue() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            visible: false,\n            top: 0,\n            left: 0,\n            innerText: '',\n            status: 'k-i-cancel'\n        };\n        return _this;\n    }\n    DragClue.prototype.render = function () {\n        return this.state.visible && (React.createElement(\"div\", { className: \"k-header k-drag-clue\", style: {\n                display: 'block',\n                position: 'absolute',\n                zIndex: 20000,\n                padding: '8px 12px',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px'\n            } },\n            React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n                React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n            this.state.innerText));\n    };\n    return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n//# sourceMappingURL=DragClue.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n    __extends(DropClue, _super);\n    function DropClue() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            height: 0,\n            visible: false,\n            left: 0,\n            top: 0\n        };\n        return _this;\n    }\n    DropClue.prototype.render = function () {\n        return this.state.visible && (React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n                zIndex: 10000,\n                display: 'block',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px',\n                height: this.state.height + 'px'\n            } }));\n    };\n    return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n//# sourceMappingURL=DropClue.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Input } from '@progress/kendo-react-inputs';\n/**\n * The TextFilter component used for editing text value of FilterDescriptor object.\n */\nvar TextFilter = /** @class */ (function (_super) {\n    __extends(TextFilter, _super);\n    function TextFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onChange = function (event) {\n            _this.props.onFilterChange.call(undefined, {\n                nextFilter: __assign({}, _this.props.filter, { value: event.value })\n            });\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    TextFilter.prototype.render = function () {\n        return (React.createElement(Input, { value: this.props.filter.value || '', onChange: this.onChange }));\n    };\n    /**\n     * @hidden\n     */\n    TextFilter.propTypes = {\n        filter: PropTypes.object.isRequired,\n        onFilterChange: PropTypes.func.isRequired\n    };\n    return TextFilter;\n}(React.Component));\nexport { TextFilter };\n//# sourceMappingURL=TextFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\n/**\n * The NumericFilter component used for editing numeric value of FilterDescriptor object.\n */\nvar NumericFilter = /** @class */ (function (_super) {\n    __extends(NumericFilter, _super);\n    function NumericFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onChange = function (event) {\n            _this.props.onFilterChange.call(undefined, {\n                nextFilter: __assign({}, _this.props.filter, { value: event.value })\n            });\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    NumericFilter.prototype.render = function () {\n        var filter = this.props.filter;\n        return (React.createElement(NumericTextBox, { value: typeof filter.value === 'number' ? filter.value : null, onChange: this.onChange }));\n    };\n    /**\n     * @hidden\n     */\n    NumericFilter.propTypes = {\n        filter: PropTypes.object.isRequired,\n        onFilterChange: PropTypes.func.isRequired\n    };\n    return NumericFilter;\n}(React.Component));\nexport { NumericFilter };\n//# sourceMappingURL=NumericFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\n/**\n * The DateFilter component used for editing date value of FilterDescriptor object.\n */\nvar DateFilter = /** @class */ (function (_super) {\n    __extends(DateFilter, _super);\n    function DateFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onChange = function (event) {\n            _this.props.onFilterChange.call(undefined, {\n                nextFilter: __assign({}, _this.props.filter, { value: event.value })\n            });\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    DateFilter.prototype.render = function () {\n        var filter = this.props.filter;\n        return (React.createElement(DatePicker, { value: filter.value || null, onChange: this.onChange }));\n    };\n    /**\n     * @hidden\n     */\n    DateFilter.propTypes = {\n        filter: PropTypes.object.isRequired,\n        onFilterChange: PropTypes.func.isRequired\n    };\n    return DateFilter;\n}(React.Component));\nexport { DateFilter };\n//# sourceMappingURL=DateFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages } from './../../messages';\n/**\n * The EnumFilter component used for editing the value of FilterDescriptor object.\n * It renders a DropDownList and allows you to choose a value from the predefined list.\n */\nvar EnumFilter = /** @class */ (function (_super) {\n    __extends(EnumFilter, _super);\n    function EnumFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onChange = function (event) {\n            _this.props.onFilterChange.call(undefined, {\n                nextFilter: __assign({}, _this.props.filter, { value: event.value.value })\n            });\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    EnumFilter.prototype.render = function () {\n        var locService = provideLocalizationService(this);\n        var _a = this.props, filter = _a.filter, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem;\n        var locData = data.map(function (item) { return (__assign({}, item, { text: locService.toLanguageString(item.text, messages[item.text] || item.text) })); });\n        return (React.createElement(DropDownList, { value: locData.find(function (i) { return i.value === filter.value; }) || null, onChange: this.onChange, defaultItem: defaultItem, data: locData, textField: \"text\" }));\n    };\n    /**\n     * @hidden\n     */\n    EnumFilter.propTypes = {\n        filter: PropTypes.object.isRequired,\n        onFilterChange: PropTypes.func.isRequired,\n        data: PropTypes.arrayOf(PropTypes.shape({ text: PropTypes.string, value: PropTypes.any })),\n        defaultItem: PropTypes.any\n    };\n    return EnumFilter;\n}(React.Component));\nexport { EnumFilter };\nregisterForLocalization(EnumFilter);\n//# sourceMappingURL=EnumFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { EnumFilter } from './EnumFilter';\nimport { filterIsTrue, filterIsFalse } from '../../messages';\n/**\n * The BooleanFilter component used for editing boolean value of FilterDescriptor object.\n */\nvar BooleanFilter = /** @class */ (function (_super) {\n    __extends(BooleanFilter, _super);\n    function BooleanFilter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.data = [{ text: filterIsTrue, value: true }, { text: filterIsFalse, value: false }];\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    BooleanFilter.prototype.render = function () {\n        return (React.createElement(EnumFilter, { filter: this.props.filter, onFilterChange: this.props.onFilterChange, data: this.props.data || this.data, defaultItem: this.props.defaultItem }));\n    };\n    /**\n     * @hidden\n     */\n    BooleanFilter.propTypes = {\n        filter: PropTypes.object.isRequired,\n        onFilterChange: PropTypes.func.isRequired,\n        data: PropTypes.arrayOf(PropTypes.shape({ text: PropTypes.string, value: PropTypes.any })),\n        defaultItem: PropTypes.any\n    };\n    return BooleanFilter;\n}(React.Component));\nexport { BooleanFilter };\n//# sourceMappingURL=BooleanFilter.js.map","import { filterEqOperator, filterNotEqOperator, filterIsNullOperator, filterIsNotNullOperator, filterIsEmptyOperator, filterIsNotEmptyOperator, filterStartsWithOperator, filterContainsOperator, filterNotContainsOperator, filterEndsWithOperator, filterGteOperator, filterGtOperator, filterLteOperator, filterLtOperator, filterAfterOrEqualOperator, filterAfterOperator, filterBeforeOperator, filterBeforeOrEqualOperator } from './../messages';\nvar textOperators = [\n    { text: filterContainsOperator, operator: 'contains' },\n    { text: filterNotContainsOperator, operator: 'doesnotcontain' },\n    { text: filterEqOperator, operator: 'eq' },\n    { text: filterNotEqOperator, operator: 'neq' },\n    { text: filterStartsWithOperator, operator: 'startswith' },\n    { text: filterEndsWithOperator, operator: 'endswith' },\n    { text: filterIsNullOperator, operator: 'isnull' },\n    { text: filterIsNotNullOperator, operator: 'isnotnull' },\n    { text: filterIsEmptyOperator, operator: 'isempty' },\n    { text: filterIsNotEmptyOperator, operator: 'isnotempty' }\n];\nvar numericOperators = [\n    { text: filterEqOperator, operator: 'eq' },\n    { text: filterNotEqOperator, operator: 'neq' },\n    { text: filterGteOperator, operator: 'gte' },\n    { text: filterGtOperator, operator: 'gt' },\n    { text: filterLteOperator, operator: 'lte' },\n    { text: filterLtOperator, operator: 'lt' },\n    { text: filterIsNullOperator, operator: 'isnull' },\n    { text: filterIsNotNullOperator, operator: 'isnotnull' }\n];\nvar dateOperators = [\n    { text: filterEqOperator, operator: 'eq' },\n    { text: filterNotEqOperator, operator: 'neq' },\n    { text: filterAfterOrEqualOperator, operator: 'gte' },\n    { text: filterAfterOperator, operator: 'gt' },\n    { text: filterBeforeOperator, operator: 'lt' },\n    { text: filterBeforeOrEqualOperator, operator: 'lte' },\n    { text: filterIsNullOperator, operator: 'isnull' },\n    { text: filterIsNotNullOperator, operator: 'isnotnull' }\n];\nvar booleanOperators = [\n    { text: filterEqOperator, operator: 'eq' },\n    { text: filterNotEqOperator, operator: 'neq' }\n];\n/**\n * Represents the operators for the TextFilter, NumericFilter, DateFilter and BooleanFilter components.\n *\n * The text field of each operator object will be resolved according to the\n * [localization messages]({% slug globalization_datatools %}#toc-messages).\n */\nvar Operators = /** @class */ (function () {\n    function Operators() {\n    }\n    Object.defineProperty(Operators, \"text\", {\n        /**\n         * An array containing the operators for the TextFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'filter.containsOperator', operator: 'contains' }\n         * - { text: 'filter.notContainsOperator', operator: 'doesnotcontain' }\n         * - { text: 'filter.eqOperator', operator: 'eq' }\n         * - { text: 'filter.notEqOperator', operator: 'neq' }\n         * - { text: 'filter.startsWithOperator', operator: 'startswith' }\n         * - { text: 'filter.endsWithOperator', operator: 'endswith' }\n         * - { text: 'filter.isNullOperator', operator: 'isnull' }\n         * - { text: 'filter.isNotNullOperator', operator: 'isnotnull' }\n         * - { text: 'filter.isEmptyOperator', operator: 'isempty' }\n         * - { text: 'filter.isNotEmptyOperator', operator: 'isnotempty' }\n         */\n        get: function () {\n            return textOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Operators, \"numeric\", {\n        /**\n         * An array containing the operators for the NumericFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'filter.eqOperator', operator: 'eq' }\n         * - { text: 'filter.notEqOperator', operator: 'neq' }\n         * - { text: 'filter.gteOperator', operator: 'gte' }\n         * - { text: 'filter.gtOperator', operator: 'gt' }\n         * - { text: 'filter.lteOperator', operator: 'lte' }\n         * - { text: 'filter.ltOperator', operator: 'lt' }\n         * - { text: 'filter.isNullOperator', operator: 'isnull' }\n         * - { text: 'filter.isNotNullOperator', operator: 'isnotnull' }\n         */\n        get: function () {\n            return numericOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Operators, \"date\", {\n        /**\n         * An array containing the operators for the DateFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'filter.eqOperator', operator: 'eq' }\n         * - { text: 'filter.notEqOperator', operator: 'neq' }\n         * - { text: 'filter.afterOrEqualOperator', operator: 'gte' }\n         * - { text: 'filter.afterOperator', operator: 'gt' }\n         * - { text: 'filter.beforeOperator', operator: 'lt' }\n         * - { text: 'filter.beforeOrEqualOperator', operator: 'lte' }\n         * - { text: 'filter.isNullOperator', operator: 'isnull' }\n         * - { text: 'filter.isNotNullOperator', operator: 'isnotnull' }\n         */\n        get: function () {\n            return dateOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Operators, \"boolean\", {\n        /**\n         * An array containing the operators for the BooleanFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'filter.eqOperator', operator: 'eq' }\n         * - { text: 'filter.notEqOperator', operator: 'neq' }\n         */\n        get: function () {\n            return booleanOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return Operators;\n}());\nexport { Operators };\n/**\n * @hidden\n */\nexport var stringOperator = function (operator) {\n    return operator === 'contains' || operator === 'doesnotcontain' || operator === 'startswith' || operator === 'endswith';\n};\n/**\n * @hidden\n */\nexport var unaryOperator = function (operator) {\n    return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n//# sourceMappingURL=operators.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button, Toolbar, ToolbarItem } from '@progress/kendo-react-buttons';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { unaryOperator, stringOperator } from './operators';\nimport { messages, filterClose } from '../messages';\n/**\n * @hidden\n */\nvar Expression = /** @class */ (function (_super) {\n    __extends(Expression, _super);\n    function Expression() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onFieldChange = function (event) {\n            var nextFieldName = event.value.name;\n            var nextField = _this.props.fields.find(function (f) { return f.name === nextFieldName; });\n            var prevFilter = _this.props.filter;\n            var operator = (nextField && !nextField.operators.some(function (o) { return o.operator === prevFilter.operator; })) ?\n                nextField.operators[0].operator : prevFilter.operator;\n            var nextFilter = {\n                field: nextFieldName,\n                operator: operator\n            };\n            if (!unaryOperator(operator)) {\n                nextFilter.value = stringOperator(operator) ? '' : null;\n            }\n            _this.triggerOnFilterChange(prevFilter, nextFilter, event);\n        };\n        _this.onOperatorChange = function (event) {\n            var operator = event.value.operator;\n            var prevFilter = _this.props.filter;\n            var nextFilter;\n            if (unaryOperator(operator)) {\n                var value = prevFilter.value, prevFilterNoValue = __rest(prevFilter, [\"value\"]);\n                nextFilter = __assign({}, prevFilterNoValue, { operator: operator });\n            }\n            else {\n                nextFilter = __assign({}, prevFilter, { operator: operator });\n            }\n            _this.triggerOnFilterChange(prevFilter, nextFilter, event);\n        };\n        _this.onInputChange = function (event) {\n            var prevFilter = _this.props.filter;\n            var nextFilter = event.nextFilter;\n            if (unaryOperator(nextFilter.operator)) {\n                var field = _this.props.fields.find(function (f) { return f.name === nextFilter.field; });\n                nextFilter = __assign({}, nextFilter, { operator: (field && field.operators[0].operator) || nextFilter.operator });\n            }\n            _this.triggerOnFilterChange(prevFilter, nextFilter, event);\n        };\n        _this.triggerOnFilterChange = function (prevFilter, nextFilter, event) {\n            var changeEvent = {\n                prevFilter: prevFilter,\n                nextFilter: nextFilter,\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onChange.call(undefined, changeEvent);\n        };\n        _this.onFilterRemove = function (event) {\n            var removeEvent = {\n                filter: _this.props.filter,\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onRemove.call(undefined, removeEvent);\n        };\n        return _this;\n    }\n    Expression.prototype.render = function () {\n        var _a = this.props, fields = _a.fields, filter = _a.filter;\n        var field = fields.find(function (f) { return f.name === filter.field; });\n        var locService = provideLocalizationService(this);\n        var operators = ((field && field.operators) || [])\n            .map(function (o) { return (__assign({}, o, { text: locService.toLanguageString(o.text, messages[o.text] || o.text) })); });\n        return (React.createElement(\"div\", { className: \"k-filter-toolbar\" },\n            React.createElement(Toolbar, { keyboardNavigation: false },\n                React.createElement(ToolbarItem, { className: \"k-filter-field\" },\n                    React.createElement(DropDownList, { className: \"k-filter-dropdown\", data: fields, textField: \"label\", value: fields.find(function (f) { return f.name === filter.field; }), onChange: this.onFieldChange })),\n                React.createElement(ToolbarItem, { className: \"k-filter-operator\" },\n                    React.createElement(DropDownList, { data: operators, textField: \"text\", value: operators.find(function (o) { return o.operator === filter.operator; }), onChange: this.onOperatorChange })),\n                React.createElement(ToolbarItem, { className: \"k-filter-value\" }, field && React.createElement(field.filter, { filter: filter, onFilterChange: this.onInputChange })),\n                React.createElement(ToolbarItem, null,\n                    React.createElement(Button, { title: locService.toLanguageString(filterClose, messages[filterClose]), icon: \"close\", look: \"flat\", onClick: this.onFilterRemove })))));\n    };\n    Expression.propTypes = {\n        filter: PropTypes.object.isRequired,\n        fields: PropTypes.array.isRequired,\n        onChange: PropTypes.func.isRequired,\n        onRemove: PropTypes.func.isRequired\n    };\n    return Expression;\n}(React.Component));\nexport { Expression };\nregisterForLocalization(Expression);\n//# sourceMappingURL=Expression.js.map","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n    return isPresent(source.filters);\n};\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import * as tslib_1 from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n    return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: \"\" + encodeURIComponent(value),\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n        value: value,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: value,\n        field: field.replace(/\\./g, \"/\"),\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n    var brackets = wrapIf(function () { return filter.filters.length > 1; });\n    return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"(\", \")\"], [\"(\",\n        \")\"])), filter.filters\n        .map(map)\n        .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n    \"!=\": \"neq\",\n    \"<\": \"lt\",\n    \"<=\": \"lte\",\n    \"==\": \"eq\",\n    \">\": \"gt\",\n    \">=\": \"gte\",\n    equal: \"eq\",\n    equals: \"eq\",\n    equalto: \"eq\",\n    ge: \"gte\",\n    greater: \"gt\",\n    greaterthan: \"gt\",\n    greaterthanequal: \"gte\",\n    isempty: \"isempty\",\n    isequalto: \"eq\",\n    isgreaterthan: \"gt\",\n    isgreaterthanorequalto: \"gte\",\n    islessthan: \"lt\",\n    islessthanorequalto: \"lte\",\n    isnotempty: \"isnotempty\",\n    isnotequalto: \"neq\",\n    isnull: \"isnull\",\n    le: \"lte\",\n    less: \"lt\",\n    lessthan: \"lt\",\n    lessthanequal: \"lte\",\n    ne: \"neq\",\n    notequal: \"neq\",\n    notequals: \"neq\",\n    notequalto: \"neq\",\n    notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n    if (descriptor.filters) {\n        descriptor.filters = descriptor.filters.map(function (filter) {\n            var result = Object.assign({}, filter);\n            if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n                result.operator = operatorMap(filter.operator);\n            }\n            if (isCompositeFilterDescriptor(filter)) {\n                normalizeOperator(result);\n            }\n            return result;\n        });\n    }\n};\nvar normalizeDescriptor = function (descriptor) {\n    if (!isCompositeFilterDescriptor(descriptor)) {\n        return {\n            filters: isArray(descriptor) ? descriptor : [descriptor],\n            logic: \"and\"\n        };\n    }\n    return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n    if (isPresent(descriptor)) {\n        descriptor = normalizeDescriptor(descriptor);\n        normalizeOperator(descriptor);\n    }\n    return descriptor;\n};\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n    var key = field + safe;\n    if (getterCache[key]) {\n        return getterCache[key];\n    }\n    var fields = [];\n    field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n        fields.push(isPresent(index) ? index : (indexAccessor || field));\n        return undefined;\n    });\n    getterCache[key] = function (obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length; idx++) {\n            result = result[fields[idx]];\n            if (!isPresent(result) && safe) {\n                return result;\n            }\n        }\n        return result;\n    };\n    return getterCache[key];\n};\n","import * as tslib_1 from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n    var str = orderby\n        .filter(function (sort) { return isPresent(sort.dir); })\n        .map(function (sort) {\n        var order = sort.field.replace(/\\./g, \"/\");\n        return sort.dir === \"desc\" ? order + \" desc\" : order;\n    }).join(\",\");\n    return str ? \"$orderby=\" + str : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n    \"filter\": serializeFilter(state.filter || {}, settings),\n    \"skip\": serializeKey(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n    \"sort\": serializeSort(state.sort || []),\n    \"take\": serializeKey(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [`State`]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n    if (settings === void 0) { settings = {}; }\n    return (Object.keys(state)\n        .map(rules(settings, state))\n        .filter(isNotNullOrEmptyString)\n        .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import * as tslib_1 from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n    var key = _a[0], value = _a[1];\n    return acc.concat([key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n    var key = _a[0], value = _a[1];\n    var _b;\n    return (tslib_1.__assign({}, acc, (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n    var skip = _a.skip, take = _a.take;\n    return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n    return compose.apply(void 0, patterns.map(function (_a) {\n        var left = _a[0], right = _a[1];\n        return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n    }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n    var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n    return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n    var field = _a.field, aggregate = _a.aggregate;\n    return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n    var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n    return ({\n        value: formatDateValue(value),\n        field: field,\n        ignoreCase: ignoreCase,\n        operator: operator\n    });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n    sort: (sort(state) || []).filter(function (_a) {\n        var dir = _a.dir;\n        return isNotNullOrEmptyString(dir);\n    })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n    var field = _a.field;\n    return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n    var field = _a.field, operator = _a.operator, value = _a.value;\n    return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n    var logic = _a.logic;\n    return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n    var filter = _a.filter;\n    if (filter && filter.filters) {\n        var filters = serialize(encode)(filter);\n        if (filters.length) {\n            return ['filter', filters];\n        }\n    }\n    return null;\n};\nvar rules = function (state, encode) {\n    if (encode === void 0) { encode = true; }\n    return function (key) { return ({\n        \"aggregates\": serializeAggregates(state),\n        \"filter\": serializeFilter(state, encode),\n        \"group\": serializeGroup(state),\n        \"skip\": serializePage(state),\n        \"sort\": serializeSort(state),\n        \"take\": serializePageSize(state)\n    }[key]); };\n};\n/**\n * Converts a [`DataSourceRequestState`]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts-no-run\n *  import {\n *      toDataSourceRequestString,\n *      translateDataSourceResultGroups,\n *      translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n *  private BASE_URL: string = '...';\n *\n *  constructor(private http: Http) { }\n *\n *  // Omitted for brevity...\n *\n *  private fetch(state: DataSourceRequestState): Observable<DataResult> {\n *   const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n *   const hasGroups = state.group && state.group.length;\n *\n *   return this.http\n *       .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n *       .map(response => response.json())\n *       .map(({Data, Total, AggregateResults}) => // process the response\n *           (<GridDataResult>{\n *               //if there are groups convert them to compatible format\n *               data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n *               total: Total,\n *               // convert the aggregates if such exists\n *               aggregateResult: translateAggregateResults(AggregateResults)\n *           })\n *       );\n *  }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx-no-run\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n *     return class StatefullGrid extends React.Component {\n *         constructor(props) {\n *             super(props);\n *             this.state = { dataState: { skip: 0, take: 20 } };\n *         }\n *\n *         render() {\n *             return (\n *                 <WrappedGrid\n *                     filterable={true}\n *                     sortable={true}\n *                     pageable={{ pageSizes: true }}\n *                     {...this.props}\n *                     total={this.state.total}\n *                     data={this.state.data}\n *                     skip={this.state.dataState.skip}\n *                     pageSize={this.state.dataState.take}\n *                     filter={this.state.dataState.filter}\n *                     sort={this.state.dataState.sort}\n *                     dataStateChange={this.dataStateChange}\n *                 />\n *             );\n *         }\n *\n *         componentDidMount() {\n *             this.fetchData(this.state.dataState);\n *         }\n *\n *         dataStateChange = (changeEvent) => {\n *             this.setState({ dataState: changeEvent.data });\n *             this.fetchData(changeEvent.data);\n *         }\n *\n *         fetchData(dataState) {\n *             const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n *             const hasGroups = dataState.group && dataState.group.length;\n *\n *             const base_url = 'api/Products';\n *             const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n *             fetch(`${base_url}?${queryStr}`, init)\n *                 .then(response => response.json())\n *                 .then(({ data, total }) => {\n *                     this.setState({\n *                         data: hasGroups ? translateDataSourceResultGroups(data) : data,\n *                         total,\n *                         dataState\n *                     });\n *                 });\n *         }\n *     }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n    .map(rules(state))\n    .filter(isPresent)).join('&')); };\n/**\n * Converts a [`DataSourceRequestState`]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n    .map(rules(state, false))\n    .filter(isPresent))); };\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n    target[field] = value;\n    return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n    var value = obj[fieldName];\n    if (isPresent(value)) {\n        return value;\n    }\n    return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n    aggregates: group.Aggregates || group.aggregates,\n    field: group.Member || group.member || group.field,\n    hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n    items: group.Items || group.items,\n    value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n    var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n    return ({\n        aggregates: translateAggregates(aggregates),\n        field: field,\n        items: hasSubgroups ? items.map(translateGroup) : items,\n        value: value\n    });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n    value = isPresent(value) && value.getTime ? value.getTime() : value;\n    return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n    var prop = getter(field, true);\n    var position = 0;\n    return function (agg, value) {\n        agg[field] = agg[field] || {};\n        var groupValue = prop(value);\n        var key = valueToString(groupValue);\n        var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n        values.items.push(value);\n        agg[field][key] = values;\n        return agg;\n    };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n    if (result === void 0) { result = {}; }\n    Object.keys(result).forEach(function (field) {\n        var aggregates = result[field];\n        Object.keys(aggregates).forEach(function (aggregate) {\n            aggregates[aggregate] = aggregates[aggregate].result();\n        });\n    });\n    return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n    average: function () {\n        var value = 0;\n        var count = 0;\n        return {\n            calc: function (curr) {\n                if (isNumeric(curr)) {\n                    value += curr;\n                    count++;\n                }\n                else {\n                    value = curr;\n                }\n            },\n            result: function () { return isNumeric(value) ? value / count : value; }\n        };\n    },\n    count: function () {\n        var state = 0;\n        return {\n            calc: function () { return state++; },\n            result: function () { return state; }\n        };\n    },\n    max: function () {\n        var state = Number.NEGATIVE_INFINITY;\n        return {\n            calc: function (value) {\n                state = isNumeric(state) || isDate(state) ? state : value;\n                if (state < value && (isNumeric(value) || isDate(value))) {\n                    state = value;\n                }\n            },\n            result: function () { return state; }\n        };\n    },\n    min: function () {\n        var state = Number.POSITIVE_INFINITY;\n        return {\n            calc: function (value) {\n                state = isNumeric(state) || isDate(state) ? state : value;\n                if (state > value && (isNumeric(value) || isDate(value))) {\n                    state = value;\n                }\n            },\n            result: function () { return state; }\n        };\n    },\n    sum: function () {\n        var state = 0;\n        return {\n            calc: function (value) { return state += value; },\n            result: function () { return state; }\n        };\n    }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n    var functions = descriptors.map(function (descriptor) {\n        var fieldAccessor = getter(descriptor.field, true);\n        var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n        var aggregateAccessor = getter(aggregateName, true);\n        return function (state, value) {\n            var fieldAggregates = state[descriptor.field] || {};\n            var aggregateFunction = aggregateAccessor(fieldAggregates)\n                || aggregatesFuncs(aggregateName);\n            aggregateFunction.calc(fieldAccessor(value));\n            fieldAggregates[descriptor.aggregate] = aggregateFunction;\n            state[descriptor.field] = fieldAggregates;\n            return state;\n        };\n    });\n    return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n    arr.push(value);\n    return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n    return isPresent(source.__value);\n};\nvar reduced = function (x) {\n    if (isTransformerResult(x)) {\n        return x;\n    }\n    return {\n        __value: x,\n        reduced: true\n    };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n    var result = initialValue;\n    for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n        result = transform(result, data[idx], idx);\n        if (isTransformerResult(result)) {\n            result = result.__value;\n            break;\n        }\n    }\n    return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [`AggregateDescriptors`]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [`AggregateResult`]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts-no-run\n * const data = [\n *    { unitPrice: 23, unitsInStock: 21 },\n *    { unitPrice: 10, unitsInStock: 12 },\n *    { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n *   { aggregate: \"sum\", field: \"unitPrice\" },\n *   { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * //     \"unitPrice\": { \"sum\": 53 },\n * //     \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [`aggregateresult`]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n    if (descriptors === void 0) { descriptors = []; }\n    if (transformers === void 0) { transformers = identity; }\n    var initialValue = {};\n    if (!descriptors.length) {\n        return initialValue;\n    }\n    var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n    return expandAggregates(result);\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n    \"or\": {\n        concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n        identity: function () { return false; }\n    },\n    \"and\": {\n        concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n        identity: function () { return true; }\n    }\n};\nvar operatorsMap = {\n    contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n    doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n    doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n    doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n    endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n    eq: function (a, b) { return a === b; },\n    gt: function (a, b) { return a > b; },\n    gte: function (a, b) { return a >= b; },\n    isempty: function (a) { return a === ''; },\n    isnotempty: function (a) { return a !== ''; },\n    isnotnull: function (a) { return isPresent(a); },\n    isnull: function (a) { return isBlank(a); },\n    lt: function (a, b) { return a < b; },\n    lte: function (a, b) { return a <= b; },\n    neq: function (a, b) { return a != b; },\n    startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n    if (value != null && isString(value)) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            return new Date(+date[1]).getTime();\n        }\n        else if (ignoreCase) {\n            return value.toLowerCase();\n        }\n    }\n    else if (value != null && isDate(value)) {\n        return value.getTime();\n    }\n    return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n    if (!isPresent(value)) {\n        return prop;\n    }\n    var acc = prop;\n    if (isString(value)) {\n        var date = dateRegExp.exec(value);\n        if (date) {\n            value = new Date(+date[1]);\n        }\n        else {\n            acc = function (a) {\n                var x = prop(a);\n                if (typeof x === 'string' && ignoreCase) {\n                    return x.toLowerCase();\n                }\n                else {\n                    return isNumeric(x) ? x + \"\" : x;\n                }\n            };\n        }\n    }\n    if (isDate(value)) {\n        return function (a) {\n            var x = acc(a);\n            return isDate(x) ? x.getTime() : x;\n        };\n    }\n    return acc;\n};\nvar transformFilter = function (_a) {\n    var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n    field = !isPresent(field) ? function (a) { return a; } : field;\n    ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n    var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n    value = convertValue(value, ignoreCase);\n    var op = isFunction(operator) ? operator : operatorsMap[operator];\n    return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n    var combiner = logic[filter.logic];\n    return filter.filters\n        .filter(isPresent)\n        .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n        .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [`Predicate`]({% slug api_kendo-data-query_predicate %}) function for the specified [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts-no-run\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n    if (!descriptor || descriptor.filters.length === 0) {\n        return function () { return true; };\n    }\n    return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts-no-run\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n *  { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *  { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *  { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n *     logic: 'and',\n *     filters: [\n *           { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n *           { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n *     ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n    if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n        return data;\n    }\n    return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n    descriptors = isArray(descriptors) ? descriptors : [descriptors];\n    return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array<GroupResult<T>> | T[])} - The grouped data.\n *\n * @example\n * ```ts-no-run\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n *     { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n *     { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n *     { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n    if (descriptors === void 0) { descriptors = []; }\n    if (transformers === void 0) { transformers = identity; }\n    if (originalData === void 0) { originalData = data; }\n    descriptors = normalizeGroups(descriptors);\n    if (!descriptors.length) {\n        return data;\n    }\n    var descriptor = descriptors[0];\n    var initialValue = {};\n    var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n    var result = [];\n    Object.keys(view).forEach(function (field) {\n        Object.keys(view[field]).forEach(function (value) {\n            var group = view[field][value];\n            var aggregateResult = {};\n            var filteredData = originalData;\n            if (isPresent(descriptor.aggregates)) {\n                filteredData = filterBy(originalData, {\n                    field: descriptor.field,\n                    ignoreCase: false,\n                    operator: 'eq',\n                    value: group.value\n                });\n                aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n            }\n            result[group.__position] = {\n                aggregates: aggregateResult,\n                field: field,\n                items: descriptors.length > 1 ?\n                    groupBy(group.items, descriptors.slice(1), identity, filteredData)\n                    : group.items,\n                value: group.value\n            };\n        });\n    });\n    return result;\n};\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { Button, Toolbar, ToolbarItem, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { Expression } from './Expression';\nimport { stringOperator } from './operators';\nimport { messages, filterAndLogic, filterOrLogic, filterAddExpression, filterAddGroup, filterClose } from '../messages';\n/**\n * @hidden\n */\nvar Group = /** @class */ (function (_super) {\n    __extends(Group, _super);\n    function Group() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onGroupRemove = function () {\n            _this.props.onRemove.call(undefined, {\n                filter: _this.props.filter\n            });\n        };\n        _this.onAddExpression = function () {\n            var prevFilter = _this.props.filter;\n            var firstField = _this.props.fields[0];\n            var newExpression = { field: firstField.name, operator: firstField.operators[0].operator };\n            newExpression.value = stringOperator(newExpression.operator) ? '' : null;\n            _this.props.onChange.call(undefined, {\n                nextFilter: __assign({}, prevFilter, { filters: prevFilter.filters.concat([newExpression]) }),\n                prevFilter: prevFilter\n            });\n        };\n        _this.onAddGroup = function () {\n            var prevFilter = _this.props.filter;\n            _this.props.onChange.call(undefined, {\n                nextFilter: __assign({}, prevFilter, { filters: prevFilter.filters.concat([__assign({}, _this.props.defaultGroupFilter)]) }),\n                prevFilter: prevFilter\n            });\n        };\n        _this.onLogicAnd = function () { return _this.changeLogic('and'); };\n        _this.onLogicOr = function () { return _this.changeLogic('or'); };\n        _this.changeLogic = function (logic) {\n            var prevFilter = _this.props.filter;\n            if (prevFilter.logic !== logic) {\n                _this.props.onChange.call(undefined, {\n                    nextFilter: __assign({}, prevFilter, { logic: logic }),\n                    prevFilter: prevFilter\n                });\n            }\n        };\n        _this.replaceFilter = function (prevFilter, nextFilter) {\n            var filter = _this.props.filter;\n            var filters = filter.filters.map(function (f) { return f === prevFilter ? nextFilter : f; });\n            return __assign({}, filter, { filters: filters });\n        };\n        _this.onChange = function (event) {\n            var nextFilter = _this.replaceFilter(event.prevFilter, event.nextFilter);\n            var changeEvent = {\n                nextFilter: nextFilter,\n                prevFilter: _this.props.filter,\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onChange.call(undefined, changeEvent);\n        };\n        _this.onRemove = function (event) {\n            var prevFilter = _this.props.filter;\n            var filters = prevFilter.filters.filter(function (f) { return f !== event.filter; });\n            var changeEvent = {\n                nextFilter: __assign({}, prevFilter, { filters: filters }),\n                prevFilter: prevFilter,\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onChange.call(undefined, changeEvent);\n        };\n        return _this;\n    }\n    Group.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, fields = _a.fields, filter = _a.filter;\n        var locService = provideLocalizationService(this);\n        return (React.createElement(React.Fragment, null,\n            React.createElement(\"div\", { className: \"k-filter-toolbar\" },\n                React.createElement(Toolbar, { keyboardNavigation: false },\n                    React.createElement(ToolbarItem, null,\n                        React.createElement(ButtonGroup, null,\n                            React.createElement(Button, { togglable: true, onClick: this.onLogicAnd, selected: filter.logic === 'and' }, locService.toLanguageString(filterAndLogic, messages[filterAndLogic])),\n                            React.createElement(Button, { togglable: true, onClick: this.onLogicOr, selected: filter.logic === 'or' }, locService.toLanguageString(filterOrLogic, messages[filterOrLogic])))),\n                    React.createElement(ToolbarItem, null,\n                        React.createElement(Button, { title: locService.toLanguageString(filterAddExpression, messages[filterAddExpression]), icon: \"filter-add-expression\", onClick: this.onAddExpression })),\n                    React.createElement(ToolbarItem, null,\n                        React.createElement(Button, { title: locService.toLanguageString(filterAddGroup, messages[filterAddGroup]), icon: \"filter-add-group\", onClick: this.onAddGroup })),\n                    React.createElement(ToolbarItem, null,\n                        React.createElement(Button, { title: locService.toLanguageString(filterClose, messages[filterClose]), icon: \"close\", look: \"flat\", onClick: this.onGroupRemove })))),\n            filter.filters.length > 0 && (React.createElement(\"ul\", { className: \"k-filter-lines\" }, filter.filters.map(function (f, idx) {\n                return React.createElement(\"li\", { key: idx, className: \"k-filter-item\" }, isCompositeFilterDescriptor(f) ?\n                    React.createElement(Group, { filter: f, fields: fields, onChange: _this.onChange, onRemove: _this.onRemove, defaultGroupFilter: _this.props.defaultGroupFilter })\n                    :\n                        React.createElement(Expression, { filter: f, fields: fields, onChange: _this.onChange, onRemove: _this.onRemove }));\n            })))));\n    };\n    Group.propTypes = {\n        filter: PropTypes.object.isRequired,\n        fields: PropTypes.array.isRequired,\n        onChange: PropTypes.func.isRequired,\n        onRemove: PropTypes.func.isRequired,\n        defaultGroupFilter: PropTypes.object.isRequired\n    };\n    return Group;\n}(React.Component));\nexport { Group };\nregisterForLocalization(Group);\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Group } from './Group';\n/**\n * Represents the [KendoReact Filter component]({% slug overview_filter %}).\n */\nvar Filter = /** @class */ (function (_super) {\n    __extends(Filter, _super);\n    function Filter() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onFilterChange = function (event) {\n            var changeEvent = {\n                filter: event.nextFilter,\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onChange.call(undefined, changeEvent);\n        };\n        _this.onGroupRemove = function (event) {\n            var changeEvent = {\n                filter: __assign({}, _this.props.value, { filters: [] }),\n                syntheticEvent: event.syntheticEvent,\n                nativeEvent: event.nativeEvent,\n                target: _this\n            };\n            _this.props.onChange.call(undefined, changeEvent);\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Filter.prototype.render = function () {\n        return (React.createElement(\"div\", { className: 'k-widget k-filter' + (this.props.className ? ' ' + this.props.className : ''), style: this.props.style },\n            React.createElement(\"ul\", { className: \"k-filter-container\" },\n                React.createElement(\"li\", { className: \"k-filter-group-main\" },\n                    React.createElement(Group, { filter: this.props.value, fields: this.props.fields, onChange: this.onFilterChange, onRemove: this.onGroupRemove, defaultGroupFilter: this.props.defaultGroupFilter || { logic: 'and', filters: [] } })))));\n    };\n    /**\n     * @hidden\n     */\n    Filter.propTypes = {\n        className: PropTypes.string,\n        style: PropTypes.object,\n        fields: function (props, propName) {\n            var prop = props[propName];\n            if (prop === undefined) {\n                return new Error(\"Property '\" + propName + \"' is missing.\");\n            }\n            else if (!Array.isArray(prop)) {\n                return new Error(\"Property '\" + propName + \"' needs to be Array<FieldSettings>.\");\n            }\n            else if (Object.keys(prop.reduce(function (acc, cur) {\n                var _a;\n                return (__assign({}, acc, (_a = {}, _a[cur.name] = 1, _a)));\n            }, {})).length !== prop.length) {\n                return new Error(\"Property '\" + propName + \"' needs to contain objects with unique 'name' field.\");\n            }\n        },\n        value: PropTypes.object.isRequired,\n        onChange: PropTypes.func.isRequired\n    };\n    return Filter;\n}(React.Component));\nexport { Filter };\n//# sourceMappingURL=Filter.js.map","import { columnMenuFilterEqOperator, columnMenuFilterNotEqOperator, columnMenuFilterIsNullOperator, columnMenuFilterIsNotNullOperator, columnMenuFilterIsEmptyOperator, columnMenuFilterIsNotEmptyOperator, columnMenuFilterStartsWithOperator, columnMenuFilterContainsOperator, columnMenuFilterNotContainsOperator, columnMenuFilterEndsWithOperator, columnMenuFilterGteOperator, columnMenuFilterGtOperator, columnMenuFilterLteOperator, columnMenuFilterLtOperator, columnMenuFilterAfterOrEqualOperator, columnMenuFilterAfterOperator, columnMenuFilterBeforeOperator, columnMenuFilterBeforeOrEqualOperator, columnMenuFilterIsTrue } from '../messages';\nvar textOperators = [\n    { text: columnMenuFilterContainsOperator, operator: 'contains' },\n    { text: columnMenuFilterNotContainsOperator, operator: 'doesnotcontain' },\n    { text: columnMenuFilterEqOperator, operator: 'eq' },\n    { text: columnMenuFilterNotEqOperator, operator: 'neq' },\n    { text: columnMenuFilterStartsWithOperator, operator: 'startswith' },\n    { text: columnMenuFilterEndsWithOperator, operator: 'endswith' },\n    { text: columnMenuFilterIsNullOperator, operator: 'isnull' },\n    { text: columnMenuFilterIsNotNullOperator, operator: 'isnotnull' },\n    { text: columnMenuFilterIsEmptyOperator, operator: 'isempty' },\n    { text: columnMenuFilterIsNotEmptyOperator, operator: 'isnotempty' }\n];\nvar numericOperators = [\n    { text: columnMenuFilterEqOperator, operator: 'eq' },\n    { text: columnMenuFilterNotEqOperator, operator: 'neq' },\n    { text: columnMenuFilterGteOperator, operator: 'gte' },\n    { text: columnMenuFilterGtOperator, operator: 'gt' },\n    { text: columnMenuFilterLteOperator, operator: 'lte' },\n    { text: columnMenuFilterLtOperator, operator: 'lt' },\n    { text: columnMenuFilterIsNullOperator, operator: 'isnull' },\n    { text: columnMenuFilterIsNotNullOperator, operator: 'isnotnull' }\n];\nvar dateOperators = [\n    { text: columnMenuFilterEqOperator, operator: 'eq' },\n    { text: columnMenuFilterNotEqOperator, operator: 'neq' },\n    { text: columnMenuFilterAfterOrEqualOperator, operator: 'gte' },\n    { text: columnMenuFilterAfterOperator, operator: 'gt' },\n    { text: columnMenuFilterBeforeOperator, operator: 'lt' },\n    { text: columnMenuFilterBeforeOrEqualOperator, operator: 'lte' },\n    { text: columnMenuFilterIsNullOperator, operator: 'isnull' },\n    { text: columnMenuFilterIsNotNullOperator, operator: 'isnotnull' }\n];\nvar booleanOperators = [\n    { text: columnMenuFilterIsTrue, operator: '' }\n];\n/**\n * Represents the operators for the ColumnMenuTextFilter, ColumnMenuNumericFilter,\n * ColumnMenuDateFilter and ColumnMenuBooleanFilter components.\n *\n * The text field of each operator object will be resolved according to the\n * [localization messages]({% slug globalization_datatools %}#toc-messages).\n */\nvar ColumnMenuOperators = /** @class */ (function () {\n    function ColumnMenuOperators() {\n    }\n    Object.defineProperty(ColumnMenuOperators, \"text\", {\n        /**\n         * An array containing the operators for the ColumnMenuTextFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'columnMenu.filterContainsOperator', operator: 'contains' }\n         * - { text: 'columnMenu.filterNotContainsOperator', operator: 'doesnotcontain' }\n         * - { text: 'columnMenu.filterEqOperator', operator: 'eq' }\n         * - { text: 'columnMenu.filterNotEqOperator', operator: 'neq' }\n         * - { text: 'columnMenu.filterStartsWithOperator', operator: 'startswith' }\n         * - { text: 'columnMenu.filterEndsWithOperator', operator: 'endswith' }\n         * - { text: 'columnMenu.filterIsNullOperator', operator: 'isnull' }\n         * - { text: 'columnMenu.filterIsNotNullOperator', operator: 'isnotnull' }\n         * - { text: 'columnMenu.filterIsEmptyOperator', operator: 'isempty' }\n         * - { text: 'columnMenu.filterIsNotEmptyOperator', operator: 'isnotempty' }\n         */\n        get: function () {\n            return textOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ColumnMenuOperators, \"numeric\", {\n        /**\n         * An array containing the operators for the ColumnMenuNumericFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'columnMenu.filterEqOperator', operator: 'eq' }\n         * - { text: 'columnMenu.filterNotEqOperator', operator: 'neq' }\n         * - { text: 'columnMenu.filterGteOperator', operator: 'gte' }\n         * - { text: 'columnMenu.filterGtOperator', operator: 'gt' }\n         * - { text: 'columnMenu.filterLteOperator', operator: 'lte' }\n         * - { text: 'columnMenu.filterLtOperator', operator: 'lt' }\n         * - { text: 'columnMenu.filterIsNullOperator', operator: 'isnull' }\n         * - { text: 'columnMenu.filterIsNotNullOperator', operator: 'isnotnull' }\n         */\n        get: function () {\n            return numericOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ColumnMenuOperators, \"date\", {\n        /**\n         * An array containing the operators for the ColumnMenuDateFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'columnMenu.filterEqOperator', operator: 'eq' }\n         * - { text: 'columnMenu.filterNotEqOperator', operator: 'neq' }\n         * - { text: 'columnMenu.filterAfterOrEqualOperator', operator: 'gte' }\n         * - { text: 'columnMenu.filterAfterOperator', operator: 'gt' }\n         * - { text: 'columnMenu.filterBeforeOperator', operator: 'lt' }\n         * - { text: 'columnMenu.filterBeforeOrEqualOperator', operator: 'lte' }\n         * - { text: 'columnMenu.filterIsNullOperator', operator: 'isnull' }\n         * - { text: 'columnMenu.filterIsNotNullOperator', operator: 'isnotnull' }\n         */\n        get: function () {\n            return dateOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ColumnMenuOperators, \"boolean\", {\n        /**\n         * An array containing the operators for the ColumnMenuBooleanFilter component.\n         *\n         * The operators are:\n         *\n         * - { text: 'columnMenu.filterIsTrue', operator: '' }\n         */\n        get: function () {\n            return booleanOperators.slice();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return ColumnMenuOperators;\n}());\nexport { ColumnMenuOperators };\n//# sourceMappingURL=ColumnMenuOperators.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { ColumnMenuItem } from './ColumnMenuItem';\nimport { ColumnMenuTextFilter, ColumnMenuNumericFilter, ColumnMenuDateFilter, ColumnMenuBooleanFilter } from './ColumnMenuFilters';\nimport { ColumnMenuFilterLogic } from './ColumnMenuFilterLogic';\nimport { ColumnMenuFilterForm } from './ColumnMenuFilterForm';\nimport { messages, columnMenuFilterTitle, columnMenuSortAscending, columnMenuSortDescending } from '../messages';\nvar ColumnMenu = function (props) {\n    var emptySort = React.useRef([]);\n    var field = props.field, filter = props.filter, _a = props.sort, sort = _a === void 0 ? emptySort.current : _a, onSortChange = props.onSortChange, onFilterChange = props.onFilterChange, initialFilter = props.initialFilter, sortAsc = props.sortAsc, sortDesc = props.sortDesc, _b = props.filterContent, filterContent = _b === void 0 ? [] : _b;\n    var _c = React.useState(false), show = _c[0], setShow = _c[1];\n    var _d = React.useState(false), filterExpand = _d[0], setFilterExpand = _d[1];\n    var _e = React.useState(initialFilter(field)), currentFilter = _e[0], setCurrentFilter = _e[1];\n    var anchor = React.useRef(null);\n    var popup = React.useRef(null);\n    var blurTimeout = React.useRef(null);\n    var menuFilter = React.useCallback(function () {\n        return (filter || []).find(function (f) { return f.filters.every(function (inF) { return !isCompositeFilterDescriptor(inF) && inF.field === field; }); });\n    }, [filter, field]);\n    var closeMenu = React.useCallback(function () {\n        setShow(false);\n        setFilterExpand(false);\n    }, []);\n    var onBlur = React.useCallback(function () {\n        clearTimeout(blurTimeout.current);\n        blurTimeout.current = setTimeout(function () { closeMenu(); });\n    }, []);\n    var onFocus = React.useCallback(function () { return clearTimeout(blurTimeout.current); }, []);\n    var onColumnMenuButtonClick = React.useCallback(function () {\n        setShow(!show);\n        setFilterExpand(false);\n        setCurrentFilter(show ?\n            currentFilter :\n            (menuFilter() || initialFilter(field)));\n    }, [filter, field, show, currentFilter, initialFilter]);\n    React.useEffect(function () {\n        if (show && popup.current) {\n            popup.current.focus();\n        }\n    }, [show]);\n    var filterItemClick = React.useCallback(function () { return setFilterExpand(!filterExpand); }, [filterExpand]);\n    var changeSort = React.useCallback(function (event, dir) {\n        var newSort = sort.slice();\n        var currentSortIndex = newSort.findIndex(function (d) { return d.field === field; });\n        var newSortDescriptor = { field: field, dir: dir };\n        if (currentSortIndex >= 0) {\n            if (newSort[currentSortIndex].dir !== newSortDescriptor.dir) {\n                newSort.splice(currentSortIndex, 1, newSortDescriptor);\n            }\n            else {\n                newSort.splice(currentSortIndex, 1);\n            }\n        }\n        else {\n            newSort.push(newSortDescriptor);\n        }\n        closeMenu();\n        if (onSortChange) {\n            onSortChange.call(undefined, event, newSort, field);\n        }\n    }, [sort, field, onSortChange]);\n    var filterChange = React.useCallback(function (_event, nextFilter, prevFilter) {\n        var stateFilter = __assign({}, currentFilter, { filters: currentFilter.filters.slice() });\n        var index = stateFilter.filters.indexOf(prevFilter);\n        stateFilter.filters.splice(index, 1, nextFilter);\n        setCurrentFilter(stateFilter);\n    }, [currentFilter]);\n    var onSubmit = React.useCallback(function (event) {\n        event.preventDefault();\n        var newFilter = (filter || []).slice();\n        var prev = menuFilter();\n        var index = prev ? newFilter.indexOf(prev) : -1;\n        if (index >= 0) {\n            newFilter.splice(index, 1, currentFilter);\n        }\n        else {\n            newFilter.push(currentFilter);\n        }\n        closeMenu();\n        if (onFilterChange) {\n            onFilterChange.call(undefined, event, newFilter, field);\n        }\n    }, [filter, currentFilter, field, onFilterChange]);\n    var onReset = React.useCallback(function (event) {\n        var newFilter = (filter || []).slice();\n        var prev = menuFilter();\n        var index = prev ? newFilter.indexOf(prev) : -1;\n        if (index >= 0) {\n            newFilter.splice(index, 1);\n        }\n        setCurrentFilter(initialFilter(field));\n        closeMenu();\n        if (onFilterChange) {\n            onFilterChange.call(undefined, event, newFilter, field);\n        }\n    }, [filter, field, onFilterChange, initialFilter]);\n    var sortAscChange = React.useCallback(function (e) { return changeSort(e, 'asc'); }, [sort]);\n    var sortDescChange = React.useCallback(function (e) { return changeSort(e, 'desc'); }, [sort]);\n    var onLogicChange = React.useCallback(function (event) { return setCurrentFilter(__assign({}, currentFilter, { logic: event.value.logic })); }, [currentFilter]);\n    var currentSort = sort.find(function (d) { return d.field === field; }) || { dir: '' };\n    var firstFilter = currentFilter.filters[0];\n    var secondFilter = currentFilter.filters[1];\n    var FirstFilterComponent = filterContent[0], FilterLogicComponent = filterContent[1], SecondFilterComponent = filterContent[2];\n    var localization = useLocalization();\n    return (React.createElement(React.Fragment, null,\n        React.createElement(\"span\", { ref: anchor, onClick: onColumnMenuButtonClick, className: 'k-grid-column-menu k-grid-filter' + (Boolean(menuFilter()) ? ' k-state-active' : '') },\n            React.createElement(\"span\", { className: \"k-icon k-i-more-vertical\" })),\n        React.createElement(Popup, { anchor: anchor.current || undefined, show: show },\n            React.createElement(\"div\", { className: \"k-grid-columnmenu-popup\", ref: popup, tabIndex: 0, onBlur: onBlur, onFocus: onFocus, style: { outline: 'none' } },\n                (sortAsc || sortDesc) &&\n                    (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" },\n                        sortAsc &&\n                            (React.createElement(ColumnMenuItem, { title: localization.toLanguageString(columnMenuSortAscending, messages[columnMenuSortAscending]), iconClass: \"k-i-sort-asc-sm\", selected: currentSort.dir === 'asc', onClick: sortAscChange })),\n                        sortDesc &&\n                            (React.createElement(ColumnMenuItem, { title: localization.toLanguageString(columnMenuSortDescending, messages[columnMenuSortDescending]), iconClass: \"k-i-sort-desc-sm\", selected: currentSort.dir === 'desc', onClick: sortDescChange })))),\n                filterContent.length > 0 &&\n                    (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" },\n                        React.createElement(ColumnMenuItem, { iconClass: \"k-i-filter\", title: localization.toLanguageString(columnMenuFilterTitle, messages[columnMenuFilterTitle]), onClick: filterItemClick }),\n                        React.createElement(ColumnMenuFilterForm, { show: filterExpand, onSubmit: onSubmit, onReset: onReset },\n                            FirstFilterComponent &&\n                                React.createElement(FirstFilterComponent, { filter: firstFilter, onFilterChange: filterChange }),\n                            FilterLogicComponent &&\n                                React.createElement(FilterLogicComponent, { value: currentFilter.logic, onChange: onLogicChange }),\n                            SecondFilterComponent &&\n                                React.createElement(SecondFilterComponent, { filter: secondFilter, onFilterChange: filterChange }))))))));\n};\n/**\n * The `ColumnMenuTextColumn` component. Use it for `string` type columns.\n */\nexport var ColumnMenuTextColumn = function (props) {\n    var initialFilter = React.useCallback(function (field) {\n        return ({ logic: 'and', filters: [{ operator: 'contains', field: field, value: '' }, { operator: 'contains', field: field, value: '' }] });\n    }, []);\n    return (React.createElement(ColumnMenu, __assign({ sortAsc: true, sortDesc: true, filterContent: [\n            ColumnMenuTextFilter,\n            ColumnMenuFilterLogic,\n            ColumnMenuTextFilter\n        ], initialFilter: initialFilter }, props)));\n};\n/**\n * The `ColumnMenuNumericColumn` component. Use it for `number` type columns.\n */\nexport var ColumnMenuNumericColumn = function (props) {\n    var initialFilter = React.useCallback(function (field) {\n        return ({ logic: 'or', filters: [{ operator: 'eq', field: field, value: null }, { operator: 'eq', field: field, value: null }] });\n    }, []);\n    return (React.createElement(ColumnMenu, __assign({ sortAsc: true, sortDesc: true, filterContent: [\n            ColumnMenuNumericFilter,\n            ColumnMenuFilterLogic,\n            ColumnMenuNumericFilter\n        ], initialFilter: initialFilter }, props)));\n};\n/**\n * The `ColumnMenuDateColumn` component. Use it for `Date` type columns.\n */\nexport var ColumnMenuDateColumn = function (props) {\n    var initialFilter = React.useCallback(function (field) {\n        return ({ logic: 'or', filters: [{ operator: 'eq', field: field, value: null }, { operator: 'eq', field: field, value: null }] });\n    }, []);\n    return (React.createElement(ColumnMenu, __assign({ sortAsc: true, sortDesc: true, filterContent: [\n            ColumnMenuDateFilter,\n            ColumnMenuFilterLogic,\n            ColumnMenuDateFilter\n        ], initialFilter: initialFilter }, props)));\n};\n/**\n * The `ColumnMenuBooleanColumn` component. Use it for `boolean` type columns.\n */\nexport var ColumnMenuBooleanColumn = function (props) {\n    var initialFilter = React.useCallback(function (field) {\n        return ({ logic: 'and', filters: [{ operator: 'eq', field: field, value: false }] });\n    }, []);\n    return (React.createElement(ColumnMenu, __assign({ sortAsc: true, sortDesc: true, filterContent: [\n            ColumnMenuBooleanFilter\n        ], initialFilter: initialFilter }, props)));\n};\n//# sourceMappingURL=ColumnMenu.js.map","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var GridColumn = function (_) { return null; };\n/**\n * @hidden\n */\nGridColumn.displayName = 'KendoReactGridColumn';\n/**\n * @hidden\n */\nGridColumn.defaultProps = {\n    filterable: true,\n    editable: true,\n    sortable: true,\n    resizable: true,\n    reorderable: true,\n    groupable: true\n};\n/**\n * @hidden\n */\nGridColumn.propTypes = {\n    field: PropTypes.string,\n    title: PropTypes.string,\n    editable: PropTypes.bool,\n    sortable: PropTypes.oneOfType([\n        PropTypes.bool,\n        PropTypes.shape({\n            allowUnsort: PropTypes.bool\n        })\n    ]),\n    cell: PropTypes.any,\n    filterCell: PropTypes.any,\n    filterable: PropTypes.bool,\n    filter: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n    editor: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n    width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    minResizableWidth: PropTypes.number,\n    headerCell: PropTypes.any,\n    footerCell: PropTypes.any,\n    headerSelectionValue: PropTypes.bool,\n    format: PropTypes.string,\n    headerClassName: PropTypes.string,\n    className: PropTypes.string,\n    reorderable: PropTypes.bool,\n    resizable: PropTypes.bool,\n    orderIndex: PropTypes.number,\n    groupable: PropTypes.bool,\n    columnMenu: PropTypes.any,\n    locked: PropTypes.bool\n};\n//# sourceMappingURL=GridColumn.js.map","/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n    var path = (fieldName || '').split('.');\n    var data = dataItem;\n    path.forEach(function (p) {\n        data = data ? data[p] : undefined;\n    });\n    return data;\n}\n/**\n * @hidden\n */\nexport function flatData(output, input, footer, dataIndex, groupDefined, field, level) {\n    if (level === void 0) { level = 0; }\n    var maxLevel = level;\n    for (var i = 0; i < input.length; i++) {\n        if (!groupDefined || input[i].value === undefined || input[i].items === undefined) {\n            output[output.length] = {\n                dataIndex: dataIndex.index,\n                dataItem: input[i],\n                rowType: 'data',\n                level: level,\n                expanded: field === undefined || getNestedValue(field, input[i])\n            };\n            dataIndex.index++;\n            continue;\n        }\n        maxLevel = Math.max(maxLevel, level + 1);\n        var expanded = field === undefined ||\n            getNestedValue(field, input[i]) === undefined ||\n            getNestedValue(field, input[i]);\n        // header\n        output[output.length] = {\n            dataIndex: -1,\n            dataItem: input[i],\n            level: level,\n            rowType: 'groupHeader',\n            expanded: expanded\n        };\n        // children\n        if (expanded) {\n            maxLevel = Math.max(flatData(output, input[i].items, footer, dataIndex, groupDefined, field, level + 1), maxLevel);\n        }\n        // footer\n        if (footer === 'always' || (expanded && footer === 'visible')) {\n            output[output.length] = {\n                dataIndex: -1,\n                dataItem: input[i],\n                rowType: 'groupFooter',\n                level: level,\n                expanded: expanded\n            };\n        }\n    }\n    return maxLevel;\n}\nvar eventKeys = [\n    'sortChange',\n    'filterChange',\n    'groupChange',\n    'pageChange',\n    'expandChange',\n    'selectionChange',\n    'headerSelectionChange',\n    'rowClick',\n    'itemChange',\n    'dataStateChange',\n    'columnResize',\n    'columnReorder'\n];\nvar deprecatedHandlerMessage = function (oldKey, newKey) { return (\"The \" + oldKey + \" event handler property is deprecated, \" +\n    (\"use https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-\" + newKey + \" instead\")); };\n/**\n * @hidden\n */\nexport function checkPropCompatibility(props) {\n    for (var index = 0; index < eventKeys.length; index++) {\n        var eventKey = eventKeys[index];\n        if (props[eventKey] !== undefined) {\n            var newKey = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n            console.warn(deprecatedHandlerMessage(eventKey, newKey));\n        }\n    }\n}\nimport { GridColumn } from '../GridColumn';\n/**\n * @hidden\n */\nexport function readColumns(elements, oldColumns, depth) {\n    if (depth === void 0) { depth = 0; }\n    var columns = [];\n    if (!elements) {\n        return [];\n    }\n    if (elements && elements.length === undefined) {\n        elements = [elements];\n    }\n    elements.forEach(function (columnProps, index) {\n        columnProps = columnProps.props ? columnProps.props : columnProps;\n        var oldColumn = oldColumns[index] || null;\n        var c = readColumns(columnProps.children, oldColumn && oldColumn.children || [], depth + 1);\n        columns.push(Object.assign({ depth: depth }, GridColumn.defaultProps, (c.length) ? { cell: function () { return null; }, filterCell: function () { return null; } } : {}, oldColumn ? { width: oldColumn.width, orderIndex: oldColumn.orderIndex } : {}, columnProps, {\n            declarationIndex: columns.length,\n            children: c,\n            rowSpan: 0,\n            colSpan: 0\n        }));\n    });\n    var comparator = function (a, b) {\n        return a.orderIndex === b.orderIndex ?\n            a.declarationIndex - b.declarationIndex :\n            ((a.orderIndex || 0) - (b.orderIndex || 0));\n    };\n    columns.sort(comparator);\n    if (depth === 0) {\n        var ret_1 = [];\n        var flat_1 = function (cols, pIndex) {\n            return cols.forEach(function (c) {\n                c.parentIndex = pIndex;\n                flat_1(c.children, ret_1.push(c) - 1);\n            });\n        };\n        flat_1(columns, -1);\n        return ret_1;\n    }\n    return columns;\n}\n/**\n * @hidden\n */\nexport function autoGenerateColumns(data, group, expandField) {\n    var propData = [];\n    if (Array.isArray(data)) {\n        propData = data;\n    }\n    else if (data) {\n        propData = data.data;\n    }\n    var columns = [];\n    if (propData.length > 0) {\n        var itemForColumnsGen = propData[0];\n        if (group) {\n            for (var i = 0; i < group.length; i++) {\n                itemForColumnsGen = itemForColumnsGen.items && itemForColumnsGen.items[0];\n            }\n        }\n        var fields = Object.getOwnPropertyNames(itemForColumnsGen);\n        fields.forEach(function (field) {\n            if (field !== expandField) {\n                columns.push(Object.assign({\n                    declarationIndex: -1,\n                    parentIndex: -1,\n                    depth: 0,\n                    colSpan: 0,\n                    rowSpan: 0,\n                    index: 0,\n                    left: 0,\n                    right: 0,\n                    rightBorder: false,\n                    children: []\n                }, GridColumn.defaultProps, { field: field }));\n            }\n        });\n    }\n    return columns;\n}\nvar hasParentFooterCell = function (columns, column) {\n    var parent = columns[column.parentIndex];\n    while (parent) {\n        if (parent.footerCell) {\n            return true;\n        }\n        parent = columns[parent.parentIndex];\n    }\n    return false;\n};\n/**\n * @hidden\n */\nexport var footerColumns = function (columns) {\n    return columns.filter(function (column) {\n        if (hasParentFooterCell(columns, column)) {\n            return false;\n        }\n        return Boolean(column.footerCell) || !(column.children && column.children.length > 0);\n    });\n};\n//# sourceMappingURL=index.js.map","var _a;\n/**\n * @hidden\n */\nexport var noRecords = 'grid.noRecords';\n/**\n * @hidden\n */\nexport var pagerInfo = 'grid.pagerInfo';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'grid.pagerFirstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'grid.pagerPreviousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'grid.pagerNextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'grid.pagerLastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'grid.pagerItemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'grid.pagerPage';\n/**\n * @hidden\n */\nexport var pagerOf = 'grid.pagerOf';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'grid.pagerTotalPages';\n/**\n * @hidden\n */\nexport var groupPanelEmpty = 'grid.groupPanelEmpty';\n/**\n * @hidden\n */\nexport var filterClearButton = 'grid.filterClearButton';\n/**\n * @hidden\n */\nexport var filterSubmitButton = 'grid.filterSubmitButton';\n/**\n * @hidden\n */\nexport var filterTitle = 'grid.filterTitle';\n/**\n * @hidden\n */\nexport var sortAscending = 'grid.sortAscending';\n/**\n * @hidden\n */\nexport var sortDescending = 'grid.sortDescending';\n/**\n * @hidden\n */\nexport var searchPlaceholder = 'grid.searchPlaceholder';\n/**\n * @hidden\n */\nexport var filterCheckAll = 'grid.filterCheckAll';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[noRecords] = 'No records available',\n    _a[groupPanelEmpty] = 'Drag a column header and drop it here to group by that column',\n    _a[filterClearButton] = 'Clear',\n    _a[filterSubmitButton] = 'Filter',\n    _a[filterTitle] = 'Filter',\n    _a[sortAscending] = 'Sort Ascending',\n    _a[sortDescending] = 'Sort Descending',\n    _a[pagerItemPerPage] = 'items per page',\n    _a[pagerInfo] = '{0} - {1} of {2} items',\n    _a[pagerFirstPage] = 'Go to the first page',\n    _a[pagerPreviousPage] = 'Go to the previous page',\n    _a[pagerNextPage] = 'Go to the next page',\n    _a[pagerLastPage] = 'Go to the last page',\n    _a[pagerPage] = 'Page',\n    _a[pagerOf] = 'of',\n    _a[pagerTotalPages] = '{0}',\n    _a[searchPlaceholder] = 'Search',\n    _a[filterCheckAll] = 'Check All',\n    _a['grid.filterEqOperator'] = 'Is equal to',\n    _a['grid.filterNotEqOperator'] = 'Is not equal to',\n    _a['grid.filterIsNullOperator'] = 'Is null',\n    _a['grid.filterIsNotNullOperator'] = 'Is not null',\n    _a['grid.filterIsEmptyOperator'] = 'Is empty',\n    _a['grid.filterIsNotEmptyOperator'] = 'Is not empty',\n    _a['grid.filterStartsWithOperator'] = 'Starts with',\n    _a['grid.filterContainsOperator'] = 'Contains',\n    _a['grid.filterNotContainsOperator'] = 'Does not contain',\n    _a['grid.filterEndsWithOperator'] = 'Ends with',\n    _a['grid.filterGteOperator'] = 'Is greater than or equal to',\n    _a['grid.filterGtOperator'] = 'Is greater than',\n    _a['grid.filterLteOperator'] = 'Is less than or equal to',\n    _a['grid.filterLtOperator'] = 'Is less than',\n    _a['grid.filterIsTrue'] = 'Is true',\n    _a['grid.filterIsFalse'] = 'Is false',\n    _a['grid.filterBooleanAll'] = '(All)',\n    _a['grid.filterAfterOrEqualOperator'] = 'Is after or equal to',\n    _a['grid.filterAfterOperator'] = 'Is after',\n    _a['grid.filterBeforeOperator'] = 'Is before',\n    _a['grid.filterBeforeOrEqualOperator'] = 'Is before or equal to',\n    _a['grid.filterAndLogic'] = 'And',\n    _a['grid.filterOrLogic'] = 'Or',\n    _a);\n/**\n * @hidden\n */\nexport function pagerMessagesMap(pagerMessageKey) {\n    var messageKey = pagerMessageKey.replace(/^pager\\.([a-z])/, function (_match, group) { return 'grid.pager' + group.toUpperCase(); });\n    return ({ messageKey: messageKey, defaultMessage: messages[messageKey] });\n}\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridSelectionCell = /** @class */ (function (_super) {\n    __extends(GridSelectionCell, _super);\n    function GridSelectionCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._inputId = guid();\n        _this.handleOnChange = function (syntheticEvent) {\n            if (_this.props.selectionChange) {\n                _this.props.selectionChange({ syntheticEvent: syntheticEvent });\n            }\n        };\n        return _this;\n    }\n    GridSelectionCell.prototype.render = function () {\n        var data = getNestedValue(this.props.field, this.props.dataItem);\n        var defaultRendering = this.props.rowType !== 'groupHeader' ? (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n            React.createElement(\"input\", { checked: data, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: this.handleOnChange }),\n            React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this._inputId }))) : null;\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridSelectionCell;\n}(React.Component));\nexport { GridSelectionCell };\n//# sourceMappingURL=GridSelectionCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\n/**\n * @hidden\n */\nvar GridHierarchyCell = /** @class */ (function (_super) {\n    __extends(GridHierarchyCell, _super);\n    function GridHierarchyCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridHierarchyCell.prototype.render = function () {\n        var _this = this;\n        var defaultRendering = null;\n        if (this.props.rowType === 'groupFooter') {\n            defaultRendering = React.createElement(\"td\", { className: \"k-hierarchy-cell\" });\n        }\n        else if (this.props.rowType !== 'groupHeader') {\n            var expanded_1 = getNestedValue(this.props.field, this.props.dataItem);\n            var className = expanded_1 ? 'k-icon k-minus' : 'k-icon k-plus';\n            defaultRendering = (React.createElement(\"td\", { className: \"k-hierarchy-cell\" },\n                React.createElement(\"a\", { onClick: function (e) {\n                        e.preventDefault();\n                        if (_this.props.onChange) {\n                            _this.props.onChange({\n                                dataItem: _this.props.dataItem,\n                                syntheticEvent: e,\n                                field: _this.props.field,\n                                value: !expanded_1\n                            });\n                        }\n                    }, className: className, href: \"#\", tabIndex: -1 })));\n        }\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridHierarchyCell;\n}(React.Component));\nexport { GridHierarchyCell };\n//# sourceMappingURL=GridHierarchyCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { guid, classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridEditCell = /** @class */ (function (_super) {\n    __extends(GridEditCell, _super);\n    function GridEditCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._inputId = guid();\n        /**\n         * @hidden\n         */\n        _this.handleOnChange = function (syntheticEvent) {\n            if (_this.props.onChange) {\n                var value = syntheticEvent.target.type === 'checkbox' ?\n                    syntheticEvent.target.checked :\n                    syntheticEvent.target.value;\n                _this.props.onChange({\n                    dataItem: _this.props.dataItem,\n                    field: _this.props.field,\n                    syntheticEvent: syntheticEvent,\n                    value: value\n                });\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.inputChange = function (e) {\n            if (_this.props.onChange) {\n                _this.props.onChange({\n                    dataItem: _this.props.dataItem,\n                    field: _this.props.field,\n                    syntheticEvent: e.syntheticEvent,\n                    value: e.value\n                });\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridEditCell.prototype.render = function () {\n        var data = getNestedValue(this.props.field, this.props.dataItem);\n        var defaultRendering = null;\n        var editCellClasses = classNames('k-grid-edit-cell', this.props.className);\n        switch (this.props.editor) {\n            case 'numeric':\n                defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: editCellClasses },\n                    React.createElement(NumericTextBox, { width: \"100%\", value: (data === undefined) ? null : data, onChange: this.inputChange })));\n                break;\n            case 'date':\n                defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: editCellClasses },\n                    React.createElement(DatePicker, { width: \"100%\", value: data, onChange: this.inputChange })));\n                break;\n            case 'boolean':\n                defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: editCellClasses },\n                    React.createElement(\"input\", { checked: data || false, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: this.handleOnChange }),\n                    React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this._inputId })));\n                break;\n            default:\n                defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: editCellClasses },\n                    React.createElement(\"input\", { style: { width: '100%' }, className: \"k-textbox\", value: data || '', onChange: this.handleOnChange })));\n        }\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridEditCell;\n}(React.Component));\nexport { GridEditCell };\n//# sourceMappingURL=GridEditCell.js.map","var getDocument = function () { return typeof document !== 'undefined' ? document : {}; };\n/**\n * @hidden\n */\nvar BrowserSupportService = /** @class */ (function () {\n    function BrowserSupportService() {\n    }\n    Object.defineProperty(BrowserSupportService.prototype, \"scrollbarWidth\", {\n        get: function () {\n            var document = getDocument();\n            if (!this.scrollbar && document && document.createElement) {\n                var div = document.createElement('div');\n                div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n                div.innerHTML = '&nbsp;';\n                document.body.appendChild(div);\n                this.scrollbar = div.offsetWidth - div.scrollWidth;\n                document.body.removeChild(div);\n            }\n            return this.scrollbar;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return BrowserSupportService;\n}());\nexport { BrowserSupportService };\n//# sourceMappingURL=browser-support.service.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { BrowserSupportService } from '../utils/browser-support.service';\nimport { isRtl } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n    __extends(Header, _super);\n    function Header() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.divStyle = {};\n        _this.element = null;\n        _this.headerWrap = null;\n        _this.table = null;\n        _this.syncScroll = false;\n        _this.onScroll = function (_event) {\n            if (_this.syncScroll) {\n                _this.syncScroll = false;\n                return;\n            }\n            if (!_this.headerWrap) {\n                return;\n            }\n            var scrollLeft = _this.headerWrap.scrollLeft;\n            var scrollableDataElement = _this.props.scrollableDataElement();\n            if (scrollableDataElement && scrollableDataElement.scrollLeft !== scrollLeft) {\n                scrollableDataElement.scrollLeft = scrollLeft;\n            }\n        };\n        return _this;\n    }\n    Header.prototype.componentDidMount = function () {\n        var rtl = isRtl(this.element);\n        if (this.props.columnResize) {\n            this.props.columnResize.setIsRtl(rtl);\n        }\n        var scrollbarWidth = (new BrowserSupportService()).scrollbarWidth;\n        var padding = Math.max(0, scrollbarWidth - 1) + 'px';\n        var right = rtl ? 0 : padding;\n        var left = rtl ? padding : 0;\n        this.divStyle = { padding: \"0 \" + right + \" 0 \" + left };\n        this.forceUpdate();\n    };\n    /**\n     *\n     * @param scrollLeft - Scrolls to the left (in pixels).\n     */\n    Header.prototype.setScrollLeft = function (scrollLeft) {\n        if (this.headerWrap && this.headerWrap.scrollLeft !== scrollLeft) {\n            this.syncScroll = true;\n            this.headerWrap.scrollLeft = scrollLeft;\n        }\n    };\n    /**\n     *\n     * @param width - Scrolls the width (in pixels).\n     */\n    Header.prototype.setWidth = function (width) {\n        if (this.table) {\n            this.table.style.width = width + 'px';\n        }\n    };\n    Header.prototype.render = function () {\n        var _this = this;\n        if (!this.props.staticHeaders) {\n            return (React.createElement(\"thead\", { className: \"k-grid-header\" },\n                this.props.headerRow,\n                this.props.filterRow));\n        }\n        return (React.createElement(\"div\", { ref: function (div) { _this.element = div; }, className: \"k-grid-header\", style: this.divStyle, role: \"presentation\" },\n            React.createElement(\"div\", { ref: function (div) { _this.headerWrap = div; }, className: \"k-grid-header-wrap\", onScroll: this.onScroll, role: \"presentation\" },\n                React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n                    React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupHeader = e; }, role: \"presentation\" }, this.props.cols),\n                    React.createElement(\"thead\", { role: \"presentation\" },\n                        this.props.headerRow,\n                        this.props.filterRow)))));\n    };\n    return Header;\n}(React.Component));\nexport { Header };\n//# sourceMappingURL=Header.js.map","/**\n * @hidden\n */\nexport var normalize = function () {\n    var settings = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        settings[_i] = arguments[_i];\n    }\n    return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n//# sourceMappingURL=GridSortSettings.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n    __extends(ColumnResizer, _super);\n    function ColumnResizer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, false);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element) {\n                _this.props.resize(data.event, element, true);\n            }\n        };\n        return _this;\n    }\n    ColumnResizer.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"span\", { className: \"k-column-resizer\", style: { touchAction: 'none' }, draggable: false })));\n    };\n    return ColumnResizer;\n}(React.PureComponent));\nexport { ColumnResizer };\n//# sourceMappingURL=ColumnResizer.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n    __extends(ColumnDraggable, _super);\n    function ColumnDraggable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.pressHandler) {\n                _this.props.pressHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.dragHandler) {\n                _this.props.dragHandler(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.releaseHandler) {\n                _this.props.releaseHandler(data.event);\n            }\n        };\n        return _this;\n    }\n    ColumnDraggable.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"tr\", { style: { touchAction: 'none' }, role: \"row\" }, this.props.children)));\n    };\n    return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n//# sourceMappingURL=ColumnDraggable.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @example\n * ```jsx\n * class App extends React.PureComponent {\n *    state = {\n *        details: false,\n *        data: [\n *               { foo: 'A1', bar: 'B1', b1: 1, b2:2 },\n *               { foo: 'A2', bar: 'B2', b1: 3, b2:4 },\n *               { foo: 'A3', bar: 'B2', b1: 5, b2:6 }\n *           ]\n *    };\n *\n *    CustomHeaderCell = (props) =>\n *        <span>\n *            {props.title || props.field + ' '}\n *            <button onClick={() => this.setState({ barDetails: !this.state.barDetails })}>\n *                {this.state.barDetails ? 'collapse' : 'expand'}\n *            </button>\n *        </span>\n *\n *    render() {\n *        return (\n *            <Grid\n *                style={{ height: '420px' }}\n *                data={this.state.data}\n *                reorderable={true}\n *            >\n *                <GridColumn field=\"foo\" />\n *                <GridColumn field=\"bar\" headerCell={this.CustomHeaderCell}>\n *                    {this.state.barDetails && [\n *                        <GridColumn field=\"b1\" />,\n *                        <GridColumn field=\"b2\" />\n *                    ]}\n *                </GridColumn>\n *            </Grid>\n *        );\n *    }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridHeaderCell = /** @class */ (function (_super) {\n    __extends(GridHeaderCell, _super);\n    function GridHeaderCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridHeaderCell.prototype.render = function () {\n        var clickProps = this.props.onClick ? {\n            href: '#',\n            onClick: this.props.onClick\n        } : {};\n        var defaultRendering = (React.createElement(\"a\", __assign({ className: \"k-link\" }, clickProps),\n            this.props.title || this.props.field || '\\u00A0',\n            this.props.children));\n        if (this.props.render) {\n            return this.props.render.call(undefined, defaultRendering, this.props);\n        }\n        return defaultRendering;\n    };\n    return GridHeaderCell;\n}(React.Component));\nexport { GridHeaderCell };\n//# sourceMappingURL=GridHeaderCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function (_super) {\n    __extends(ColumnMenu, _super);\n    function ColumnMenu() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            show: false\n        };\n        _this.blurTimeout = undefined;\n        _this.blur = function () {\n            clearTimeout(_this.blurTimeout);\n            _this.blurTimeout = setTimeout(function () { _this.closeMenu(); });\n        };\n        _this.focus = function () {\n            clearTimeout(_this.blurTimeout);\n        };\n        _this.anchorClick = function () {\n            _this.setState({ show: !_this.state.show }, function () { return _this.state.show && _this._content && _this._content.focus(); });\n        };\n        _this.closeMenu = function () {\n            _this.setState({ show: false });\n        };\n        return _this;\n    }\n    ColumnMenu.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, ChildComponent = _a.render, others = __rest(_a, [\"render\"]);\n        return (React.createElement(\"div\", { style: { display: 'inline' } },\n            React.createElement(\"div\", { style: { display: 'inline', position: 'absolute', cursor: 'pointer', right: 5 }, ref: function (e) { return _this._anchor = e; }, onClick: this.anchorClick },\n                React.createElement(\"span\", { className: 'k-icon k-i-more-vertical' })),\n            React.createElement(Popup, { anchor: this._anchor, show: this.state.show },\n                React.createElement(\"div\", { ref: function (e) { return _this._content = e; }, className: 'k-grid-columnmenu-popup', tabIndex: 0, onBlur: this.blur, onFocus: this.focus, style: { outline: 'none' } },\n                    React.createElement(ChildComponent, __assign({}, others, { onCloseMenu: this.closeMenu }))))));\n    };\n    return ColumnMenu;\n}(React.Component));\nexport { ColumnMenu };\n//# sourceMappingURL=ColumnMenu.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\nimport { GridHeaderCell } from './GridHeaderCell';\nimport { ColumnMenu } from '../columnMenu/ColumnMenu';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n    true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n    false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n    'none': 'none',\n    'asc': 'ascending',\n    'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n    __extends(HeaderRow, _super);\n    function HeaderRow(props) {\n        var _this = _super.call(this, props) || this;\n        _this.cells = function (rowIndexes, dataStartColumn) {\n            if (dataStartColumn === void 0) { dataStartColumn = 0; }\n            return rowIndexes.map(function (columnIndex, index) {\n                var column = _this.props.columns[columnIndex];\n                var sortable = _this.props.sortable && column.sortable;\n                var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n                var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n                var headerCellProps = {\n                    field: column.field,\n                    onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n                    selectionChange: _this.props.selectionChange,\n                    title: column.title,\n                    selectionValue: column.headerSelectionValue,\n                    render: _this.props.cellRender,\n                    children: _this.sortIcon(sortIndex),\n                    key: 1\n                };\n                var className = (column.kFirst ? 'k-first ' : '')\n                    + _this.cellClass(column.field, column.headerClassName, column.locked);\n                var columnMenu = (column.columnMenu === null) ? null : (column.columnMenu || _this.props.columnMenu);\n                var style = (column.locked !== undefined) ? {\n                    left: column.left,\n                    right: column.right,\n                    borderRightWidth: column.rightBorder ? '1px' : ''\n                } : {};\n                var ariaAttrs = columnIndex >= dataStartColumn ? {\n                    'aria-sort': ariaSortMap[sortDir],\n                    'role': 'columnheader',\n                    'aria-colindex': columnIndex - dataStartColumn + 1,\n                    'aria-selected': false\n                } : {\n                    'role': 'presentation'\n                };\n                return (React.createElement(\"th\", __assign({ key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style }, ariaAttrs), [\n                    column.children.length === 0 && columnMenu &&\n                        React.createElement(ColumnMenu, { key: 0, column: {\n                                field: column.field,\n                                filter: column.filter\n                            }, sortable: sortable && _this.props.sortable, sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.filter, filterable: _this.props.filterable && column.filterable, filterOperators: _this.props.filterOperators, onFilterChange: _this.props.filterChange, render: columnMenu }),\n                    column.headerCell &&\n                        React.createElement(column.headerCell, __assign({}, headerCellProps)) ||\n                        React.createElement(GridHeaderCell, __assign({}, headerCellProps)),\n                    _this.props.columnResize && _this.props.columnResize.resizable && column.resizable &&\n                        React.createElement(ColumnResizer, { key: 2, resize: function (e, element, end) {\n                                return _this.props.columnResize &&\n                                    _this.props.columnResize.dragHandler(e, column, element, end);\n                            } })\n                ]));\n            });\n        };\n        _this.cellClick = _this.cellClick.bind(_this);\n        return _this;\n    }\n    HeaderRow.prototype.cellClick = function (e, column) {\n        e.preventDefault();\n        if (!this.props.sortChange) {\n            return;\n        }\n        var _a = normalize(this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n        var oldDescriptor = (this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n        var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n        var newDescriptor = (mode === 'single') ?\n            [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n        if (dir !== '' && column.field) {\n            newDescriptor.push({ field: column.field, dir: dir });\n        }\n        this.props.sortChange(newDescriptor, e);\n    };\n    HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {\n        var customClass = headerClassName ? ' ' + headerClassName : '';\n        var result = \"k-header \" + (locked ? 'k-grid-header-sticky' : '') + customClass;\n        if (this.props.sort &&\n            this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n            result += ' k-sorted';\n        }\n        return result;\n    };\n    HeaderRow.prototype.sortIcon = function (sortIndex) {\n        if (!this.props.sort) {\n            return null;\n        }\n        return sortIndex >= 0 && [\n            React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n            this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n        ];\n    };\n    HeaderRow.prototype.render = function () {\n        var _this = this;\n        return this.props.columnsMap.map(function (rowIndexes, i) {\n            return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler }, _this.cells(rowIndexes, _this.props.columns.findIndex(function (c) { return c.declarationIndex !== -1; })))) || React.createElement(\"tr\", { role: \"row\" }, _this.cells(rowIndexes));\n        });\n    };\n    return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\n//# sourceMappingURL=HeaderRow.js.map","import { messages } from './messages';\n/**\n * @hidden\n */\nexport var filterLogicList = [\n    { text: 'grid.filterAndLogic', operator: 'and' },\n    { text: 'grid.filterOrLogic', operator: 'or' }\n];\n/**\n * @hidden\n */\nexport var operators = {\n    'text': [\n        { text: 'grid.filterContainsOperator', operator: 'contains' },\n        { text: 'grid.filterNotContainsOperator', operator: 'doesnotcontain' },\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterStartsWithOperator', operator: 'startswith' },\n        { text: 'grid.filterEndsWithOperator', operator: 'endswith' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' },\n        { text: 'grid.filterIsEmptyOperator', operator: 'isempty' },\n        { text: 'grid.filterIsNotEmptyOperator', operator: 'isnotempty' }\n    ],\n    'numeric': [\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterGteOperator', operator: 'gte' },\n        { text: 'grid.filterGtOperator', operator: 'gt' },\n        { text: 'grid.filterLteOperator', operator: 'lte' },\n        { text: 'grid.filterLtOperator', operator: 'lt' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n    ],\n    'date': [\n        { text: 'grid.filterEqOperator', operator: 'eq' },\n        { text: 'grid.filterNotEqOperator', operator: 'neq' },\n        { text: 'grid.filterAfterOrEqualOperator', operator: 'gte' },\n        { text: 'grid.filterAfterOperator', operator: 'gt' },\n        { text: 'grid.filterBeforeOperator', operator: 'lt' },\n        { text: 'grid.filterBeforeOrEqualOperator', operator: 'lte' },\n        { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n        { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n    ],\n    'boolean': [\n        { text: 'grid.filterEqOperator', operator: 'eq' }\n    ]\n};\n/**\n * @hidden\n */\nexport var IsUnaryFilter = function (operator) {\n    return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n/**\n * @hidden\n */\nexport var operatorMap = function (iterable, service) { return iterable.map(function (operator) { return ({\n    text: service.toLanguageString(operator.text, messages[operator.text]),\n    operator: operator.operator\n}); }); };\n/**\n * @hidden\n */\nexport var defaultBooleanOperator = 'eq';\n/**\n * @hidden\n */\nexport var booleanFilterValues = [\n    { text: 'grid.filterBooleanAll', operator: '' },\n    { text: 'grid.filterIsTrue', operator: true },\n    { text: 'grid.filterIsFalse', operator: false }\n];\n/**\n * @hidden\n */\nexport var defaultHideSecondFilter = {\n    text: false,\n    numeric: false,\n    date: false,\n    boolean: true\n};\n/**\n * @hidden\n */\nexport var cellInputChange = function (value, e, props) {\n    var defaultOperator = getDefaultOperator(props.operators);\n    var operator = props.operator;\n    switch (props.filterType) {\n        case 'numeric':\n            if (!operator || IsUnaryFilter(operator)) {\n                // change the operator to default\n                operator = defaultOperator;\n            }\n            if (value === null && operator === defaultOperator) {\n                // clear only the default operator\n                operator = '';\n            }\n            break;\n        case 'date':\n            if (!operator || IsUnaryFilter(operator)) {\n                operator = defaultOperator;\n            }\n            if (value === null && operator === defaultOperator) {\n                operator = '';\n            }\n            break;\n        case 'text':\n            if (!operator || IsUnaryFilter(operator)) {\n                operator = defaultOperator;\n            }\n            if (!value && operator === defaultOperator) {\n                operator = '';\n            }\n            break;\n        default: return;\n    }\n    props.onChange({ value: value, operator: operator, syntheticEvent: e });\n};\n/**\n * @hidden\n */\nexport var getDefaultOperator = function (filterOperators, filterType) {\n    if (filterType) {\n        return filterOperators[filterType][0].operator;\n    }\n    else {\n        return filterOperators[0].operator;\n    }\n};\n/**\n * @hidden\n */\nexport var getFilterType = function (filterType) {\n    return filterType || 'text';\n};\n/**\n * @hidden\n */\nexport var cellBoolDropdownChange = function (event, onChange) {\n    var item = event.target.value;\n    onChange({\n        value: item.operator,\n        operator: item.operator === '' ? '' : defaultBooleanOperator,\n        syntheticEvent: event.syntheticEvent\n    });\n};\n/**\n * @hidden\n */\nexport var cellOperatorChange = function (event, currentValue, onChange) {\n    var value = currentValue;\n    var item = event.target.value;\n    if (!event.target.state.opened) {\n        return;\n    }\n    if (IsUnaryFilter(item.operator)) {\n        // clear the value to avoid confusion on what is filtered\n        value = null;\n    }\n    onChange({ value: value, operator: item.operator, syntheticEvent: event.syntheticEvent });\n};\n//# sourceMappingURL=filterCommon.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { messages, filterClearButton } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\nvar GridFilterCell = /** @class */ (function (_super) {\n    __extends(GridFilterCell, _super);\n    function GridFilterCell(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOperatorEditor = function () {\n            if (_this.props.filterType === 'boolean') {\n                return;\n            }\n            var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n            return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, className: \"k-dropdown-operator\", iconClassName: \"k-i-filter k-icon\", data: _this.props.operators, textField: \"text\", popupSettings: {\n                    width: ''\n                } }));\n        };\n        _this.inputChange = _this.inputChange.bind(_this);\n        _this.clear = _this.clear.bind(_this);\n        _this.operatorChange = _this.operatorChange.bind(_this);\n        _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridFilterCell.prototype.render = function () {\n        var localizationService = provideLocalizationService(this);\n        var defaultRendering = (React.createElement(\"div\", { className: \"k-filtercell\" },\n            React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n                this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues),\n                React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n                    this.renderOperatorEditor(),\n                    React.createElement(\"button\", { className: \n                        /* button is always visible if there is either value or operator */\n                        (!(this.props.value === null || this.props.value === '') || this.props.operator) ?\n                            'k-button k-button-icon k-clear-button-visible' :\n                            'k-button k-button-icon', title: localizationService.toLanguageString(filterClearButton, messages[filterClearButton]), type: \"button\", onClick: this.clear },\n                        React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n        if (this.props.render) {\n            return this.props.render.call(undefined, defaultRendering, this.props);\n        }\n        return defaultRendering;\n    };\n    GridFilterCell.prototype.inputChange = function (value, e) {\n        cellInputChange(value, e, this.props);\n    };\n    GridFilterCell.prototype.operatorChange = function (event) {\n        cellOperatorChange(event, this.props.value, this.props.onChange);\n    };\n    GridFilterCell.prototype.boolDropdownChange = function (event) {\n        cellBoolDropdownChange(event, this.props.onChange);\n    };\n    GridFilterCell.prototype.clear = function (e) {\n        e.preventDefault();\n        this.props.onChange({ value: '', operator: '', syntheticEvent: e });\n    };\n    GridFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n        var _this = this;\n        switch (filterType) {\n            case 'numeric':\n                return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n            case 'date':\n                return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n            case 'boolean':\n                var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n                return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n            default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n        }\n    };\n    return GridFilterCell;\n}(React.Component));\nexport { GridFilterCell };\nregisterForLocalization(GridFilterCell);\n//# sourceMappingURL=GridFilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { GridFilterCell } from '../cells/GridFilterCell';\nimport { operatorMap, booleanFilterValues, getFilterType } from '../filterCommon';\n/**\n *\n * @hidden\n */\nvar FilterRow = /** @class */ (function (_super) {\n    __extends(FilterRow, _super);\n    function FilterRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    FilterRow.prototype.headerCellClassName = function (field, locked) {\n        var result = \"\" + (locked ? 'k-grid-header-sticky' : '');\n        if (this.props.sort &&\n            this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n            result += ' k-sorted';\n        }\n        return result;\n    };\n    FilterRow.prototype.setFilter = function (value, operator, field, e) {\n        if (!this.props.filterChange) {\n            return;\n        }\n        var filters = [];\n        if (value !== '' && value !== null || operator !== '') {\n            filters.push({\n                field: field,\n                operator: operator,\n                value: value\n            });\n        }\n        if (this.props.filter && this.props.filter.filters) {\n            var oldFilters = this.props.filter.filters || [];\n            oldFilters.forEach(function (filter) {\n                var descriptor = filter;\n                if (descriptor && descriptor.field !== field) {\n                    filters.push(descriptor);\n                }\n            });\n        }\n        this.props.filterChange(filters.length > 0 ? { logic: 'and', filters: filters } : null, e);\n    };\n    FilterRow.prototype.render = function () {\n        var _this = this;\n        var localizationService = provideLocalizationService(this);\n        var oldFilters = this.props.filter && this.props.filter.filters || [];\n        var activeFilterValueFor = function (field, defaultValue) {\n            if (defaultValue === void 0) { defaultValue = null; }\n            var found = oldFilters.filter(function (filter) { return filter.field === field; })[0];\n            return found ? found.value : defaultValue;\n        };\n        var activeOperatorFor = function (field) {\n            var found = oldFilters.filter(function (filter) { return filter.field === field; })[0];\n            return found ? found.operator : null;\n        };\n        var serviceIndex = 0, index = -1;\n        var filterCells = this.props.columns.filter(function (c) { return c.children.length === 0; })\n            .map(function (column) {\n            var filterType = getFilterType(column.filter);\n            var filterCellProps = column.filterable && {\n                render: _this.props.cellRender,\n                field: column.field,\n                value: activeFilterValueFor(column.field, filterType === 'text' ? '' : null),\n                operator: activeOperatorFor(column.field),\n                operators: operatorMap(_this.props.filterOperators[filterType] || [], localizationService),\n                booleanValues: operatorMap(booleanFilterValues, localizationService),\n                filterType: filterType,\n                onChange: function (e) { _this.setFilter(e.value, e.operator, column.field, e.syntheticEvent); }\n            };\n            var key = (column.declarationIndex >= 0) ? ++index : --serviceIndex;\n            var ariaAttrs = index >= 0 ? {\n                'aria-label': 'Filter',\n                'aria-colindex': index + 1\n            } : {};\n            return (React.createElement(\"th\", __assign({ key: key, style: (column.left !== undefined) && {\n                    left: column.left,\n                    right: column.right,\n                    borderRightWidth: column.rightBorder ? '1px' : ''\n                } || {}, className: _this.headerCellClassName(column.field, column.locked) || undefined }, ariaAttrs), filterCellProps && (column.filterCell ?\n                React.createElement(column.filterCell, __assign({}, filterCellProps)) :\n                React.createElement(GridFilterCell, __assign({}, filterCellProps)))));\n        });\n        return React.createElement(\"tr\", { className: \"k-filter-row\", role: \"row\" }, filterCells);\n    };\n    return FilterRow;\n}(React.Component));\nexport { FilterRow };\nregisterForLocalization(FilterRow);\n//# sourceMappingURL=FilterRow.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GroupingIndicator = /** @class */ (function (_super) {\n    __extends(GroupingIndicator, _super);\n    function GroupingIndicator() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onPress) {\n                _this.props.onPress(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onDrag) {\n                _this.props.onDrag(data.event, element);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var element = _this.draggable && _this.draggable.element;\n            if (element && _this.props.onRelease) {\n                _this.props.onRelease(data.event);\n            }\n        };\n        _this.sortChange = function (event) {\n            event.preventDefault();\n            if (_this.props.onSortChange) {\n                var sort = (_this.props.dir === 'asc') ? 'desc' : 'asc';\n                _this.props.onSortChange(event, sort);\n            }\n        };\n        _this.groupRemove = function (event) {\n            event.preventDefault();\n            if (_this.props.onRemove) {\n                _this.props.onRemove(event);\n            }\n        };\n        return _this;\n    }\n    GroupingIndicator.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"div\", { className: \"k-indicator-container\", style: { touchAction: 'none' } },\n                React.createElement(\"div\", { className: \"k-group-indicator\" },\n                    React.createElement(\"a\", { className: \"k-link\", href: \"#\", tabIndex: -1, onClick: this.sortChange },\n                        React.createElement(\"span\", { className: 'k-icon k-i-sort-' + this.props.dir + '-sm' }),\n                        this.props.title),\n                    React.createElement(\"a\", { className: \"k-button k-button-icon k-bare\", tabIndex: -1, onClick: this.groupRemove },\n                        React.createElement(\"span\", { className: \"k-icon k-i-group-delete\" }))))));\n    };\n    return GroupingIndicator;\n}(React.Component));\nexport { GroupingIndicator };\n//# sourceMappingURL=GroupingIndicator.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { GroupingIndicator } from '../drag/GroupingIndicator';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, groupPanelEmpty as messageKey } from './../messages';\n/**\n * @hidden\n */\nvar GroupPanel = /** @class */ (function (_super) {\n    __extends(GroupPanel, _super);\n    function GroupPanel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onGroupRemove = function (event, index) {\n            var newGroups = _this.props.group.slice();\n            newGroups.splice(index, 1);\n            _this.props.groupChange(newGroups, event);\n        };\n        _this.onGroupSortChange = function (event, index, groupDesc, dir) {\n            var group = Object.assign({}, groupDesc, { dir: dir });\n            var newGroups = _this.props.group.slice();\n            newGroups.splice(index, 1, group);\n            _this.props.groupChange(newGroups, event);\n        };\n        return _this;\n    }\n    GroupPanel.prototype.render = function () {\n        var _this = this;\n        var groupsProp = this.props.group || [];\n        var groups = groupsProp.map(function (groupDesc, index) { return (React.createElement(GroupingIndicator, { key: index, dir: groupDesc.dir || 'asc', title: _this.props.resolveTitle(groupDesc.field), onRemove: function (event) {\n                _this.onGroupRemove(event, index);\n            }, onSortChange: function (event, dir) {\n                _this.onGroupSortChange(event, index, groupDesc, dir);\n            }, onPress: _this.props.pressHandler, onDrag: _this.props.dragHandler, onRelease: _this.props.releaseHandler })); });\n        return (React.createElement(\"div\", { ref: this.props.refCallback, className: \"k-grouping-header k-grouping-header-flex\" },\n            groups,\n            React.createElement(\"div\", { className: \"k-indicator-container\" }, !groups.length && intl(this).toLanguageString(messageKey, messages[messageKey]))));\n    };\n    return GroupPanel;\n}(React.Component));\nexport { GroupPanel };\nregisterForLocalization(GroupPanel);\n//# sourceMappingURL=GroupPanel.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { BrowserSupportService } from '../utils/browser-support.service';\nimport { isRtl } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar Footer = /** @class */ (function (_super) {\n    __extends(Footer, _super);\n    function Footer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.divStyle = {};\n        _this.element = null;\n        _this.footerWrap = null;\n        _this.table = null;\n        return _this;\n    }\n    Footer.prototype.componentDidMount = function () {\n        this.setState({});\n        var scrollbarWidth = (new BrowserSupportService()).scrollbarWidth;\n        var rtl = isRtl(this.element);\n        var padding = scrollbarWidth + 'px';\n        var right = rtl ? 0 : padding;\n        var left = rtl ? padding : 0;\n        this.divStyle = { padding: \"0 \" + right + \" 0 \" + left };\n    };\n    /**\n     *\n     * @param scrollLeft - Scrolls to the left (in pixels).\n     */\n    Footer.prototype.setScrollLeft = function (scrollLeft) {\n        if (this.footerWrap) {\n            this.footerWrap.scrollLeft = scrollLeft;\n        }\n    };\n    /**\n     *\n     * @param width - Scrolls the width (in pixels).\n     */\n    Footer.prototype.setWidth = function (width) {\n        if (this.table) {\n            this.table.style.width = width + 'px';\n        }\n    };\n    Footer.prototype.render = function () {\n        var _this = this;\n        if (!this.props.staticHeaders) {\n            return (React.createElement(\"tfoot\", { className: \"k-grid-footer\" }, this.props.row));\n        }\n        return (React.createElement(\"div\", { ref: function (div) { _this.element = div; }, className: \"k-grid-footer\", style: this.divStyle, role: \"presentation\" },\n            React.createElement(\"div\", { ref: function (div) { _this.footerWrap = div; }, className: \"k-grid-footer-wrap\", role: \"presentation\" },\n                React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n                    React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupFooter = e; }, role: \"presentation\" }, this.props.cols),\n                    React.createElement(\"tfoot\", { role: \"presentation\" }, this.props.row)))));\n    };\n    return Footer;\n}(React.Component));\nexport { Footer };\n//# sourceMappingURL=Footer.js.map","/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n    function VirtualScroll(cached) {\n        this.containerHeight = 0;\n        this.topCacheCount = 0; // 4;\n        this.attendedSkip = 0; // -4;\n        this.propsSkip = 0;\n        this.total = 0;\n        this.scrollableVirtual = false;\n        this.realSkip = 0;\n        this.pageSize = 0;\n        this.heightContainer = null;\n        this.prevScrollPos = 0;\n        this.tableTranslate = 0;\n        this.scrollSyncing = false;\n        if (cached) {\n            this.topCacheCount = 4;\n            this.attendedSkip = -this.topCacheCount;\n        }\n        this.scrollHandler = this.scrollHandler.bind(this);\n    }\n    Object.defineProperty(VirtualScroll.prototype, \"rowHeights\", {\n        /**\n         * @return - The row heights in an array.\n         */\n        get: function () {\n            var result = [];\n            var allRows = this.tableBody && this.tableBody.children || [];\n            var accumulate = 0;\n            for (var i = 0; i < allRows.length; i++) {\n                if (allRows[i].className.indexOf('k-grouping-row') > -1) {\n                    accumulate += allRows[i].scrollHeight;\n                    continue;\n                }\n                if (allRows[i].className.indexOf('k-detail-row') > -1) {\n                    result[result.length - 1].line += allRows[i].scrollHeight;\n                }\n                else {\n                    result.push({\n                        line: allRows[i].scrollHeight,\n                        acc: accumulate\n                    });\n                    accumulate = 0;\n                }\n            }\n            return result;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    VirtualScroll.prototype.changePage = function (skip, e) {\n        this.attendedSkip = skip - this.topCacheCount;\n        this.PageChange({\n            skip: Math.max(0, skip - this.topCacheCount),\n            take: this.pageSize\n        }, e);\n    };\n    VirtualScroll.prototype.translate = function (dY) {\n        this.tableTranslate = dY;\n        if (this.scrollableVirtual && this.table) {\n            this.table.style.transform = 'translateY(' + dY + 'px)';\n        }\n    };\n    VirtualScroll.prototype.syncScroll = function () {\n        if (!this.scrollableVirtual || !this.container) {\n            return;\n        }\n        this.syncTimeout = null;\n        var scrollTop = this.container.scrollTop;\n        var containerHeight = this.containerHeight; // = this.container.scrollHeight;\n        var rowHeights = this.rowHeights;\n        var percentage = (scrollTop - this.tableTranslate) / rowHeights[0].line;\n        var targetFloorScrollPosition = Math.floor((containerHeight) * (this.propsSkip + percentage) / this.total);\n        if (this.container.scrollTop !== (this.prevScrollPos = targetFloorScrollPosition)) {\n            this.scrollSyncing = true;\n            this.container.scrollTop = (this.prevScrollPos = targetFloorScrollPosition);\n        }\n        this.translate(this.tableTranslate + targetFloorScrollPosition - scrollTop);\n    };\n    VirtualScroll.prototype.reset = function () {\n        this.scrollSyncing = true;\n        if (this.container) {\n            this.container.scrollTop = 0;\n        }\n        this.translate(0);\n    };\n    VirtualScroll.prototype.localScrollUp = function (e) {\n        if (!this.container) {\n            return;\n        }\n        var heights = this.rowHeights;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.tableTranslate;\n        var rowsCount = 0;\n        var additionalOnTop = scrollTop - targetTranslate;\n        if (additionalOnTop > 0) {\n            return;\n        }\n        while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip)\n            && this.propsSkip - rowsCount > 0 &&\n            !(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {\n            targetTranslate -= heights[heights.length - 1 - rowsCount].line +\n                heights[heights.length - 1 - rowsCount].acc;\n            rowsCount++;\n        }\n        if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {\n            // allows local scrolling up, when top caching is disabled\n            // for variable heights 'topCacheCount' should be atleast 1 to avoid flickering\n            targetTranslate = Math.max(targetTranslate - heights[0].line, 0);\n            rowsCount = 1;\n        }\n        if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {\n            this.translate(0);\n            this.changePage(0, e);\n            this.container.scrollTop = 0;\n            return;\n        }\n        if (targetTranslate > scrollTop) {\n            targetTranslate = scrollTop;\n            // need to handle these cases\n            // if the item height is not available:\n            //    floor the translate to beginning of the item in absolute value\n        }\n        if (targetTranslate !== this.tableTranslate) {\n            this.translate(targetTranslate);\n            this.changePage(this.propsSkip - rowsCount, e);\n        }\n    };\n    VirtualScroll.prototype.localScrollDown = function (e) {\n        if (!this.container) {\n            return;\n        }\n        var heights = this.rowHeights;\n        var scrollTop = this.container.scrollTop;\n        var targetTranslate = this.tableTranslate;\n        var rowsCount = 0;\n        while (rowsCount < heights.length - this.topCacheCount &&\n            !(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {\n            targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;\n            rowsCount++;\n        }\n        if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {\n            this.translate(targetTranslate);\n            this.changePage(this.total - 1, e);\n        }\n        else if (targetTranslate !== this.tableTranslate) {\n            this.translate(targetTranslate);\n            this.changePage(this.propsSkip + rowsCount, e);\n        }\n    };\n    VirtualScroll.prototype.scrollNonStrict = function (e) {\n        var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);\n        var rowIndex = Math.floor(floatRowIndex);\n        if (rowIndex >= this.total) {\n            rowIndex = this.total - 1;\n        }\n        var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);\n        var microAdjust = 0;\n        var rowIndexOffset = rowIndex - this.propsSkip;\n        var heights = this.rowHeights;\n        if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {\n            microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);\n        }\n        else if (rowIndexOffset === -1) {\n            microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);\n        }\n        this.translate(microAdjust + this.containerHeight * floatRowIndex / this.total);\n        this.changePage(rowIndex, e);\n    };\n    VirtualScroll.prototype.scrollHandler = function (e) {\n        if (!this.scrollableVirtual) {\n            return;\n        }\n        if (this.scrollSyncing || !this.container || !this.table) {\n            this.scrollSyncing = false;\n            return;\n        }\n        var grid = this;\n        clearTimeout(this.syncTimeout);\n        this.syncTimeout = setTimeout(function () { grid.syncScroll(); }, 200);\n        var scrollTop = this.container.scrollTop;\n        var prev = this.prevScrollPos;\n        this.prevScrollPos = scrollTop;\n        if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {\n            this.localScrollUp(e);\n        }\n        else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {\n            this.localScrollDown(e);\n        }\n        else {\n            this.scrollNonStrict(e);\n        }\n        this.prevScrollPos = scrollTop;\n    };\n    return VirtualScroll;\n}());\nexport { VirtualScroll };\n//# sourceMappingURL=VirtualScroll.js.map","/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n    function ColumnResize(triggerResize) {\n        var _this = this;\n        /**\n         * The settings for resizing the Grid.\n         */\n        this.resizable = false;\n        this.isRtl = false;\n        this.setIsRtl = function (isRtl) {\n            _this.isRtl = isRtl;\n        };\n        this.onResize = triggerResize;\n        this.dragHandler = this.dragHandler.bind(this);\n    }\n    ColumnResize.prototype.dragHandler = function (event, column, dragCue, end) {\n        var e = event.originalEvent;\n        if (!end) {\n            e.preventDefault();\n            e.stopPropagation();\n            e.stopImmediatePropagation();\n        }\n        var tdElement = dragCue.parentElement;\n        if (!tdElement || !tdElement.parentElement) {\n            return;\n        }\n        var oldWidth = tdElement.clientWidth;\n        var newWidth;\n        if (this.isRtl) {\n            newWidth = (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n            newWidth += oldWidth;\n        }\n        else {\n            newWidth = oldWidth + event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n        }\n        if (!end && Math.abs(newWidth - oldWidth) < 1) {\n            return;\n        }\n        this.fixateInitialWidths(tdElement.parentElement.clientWidth);\n        this.setWidths(column, Math.floor(newWidth) / oldWidth);\n        var index = this.columns.filter(function (c) { return !c.children.length; }).indexOf(column);\n        this.onResize(index, oldWidth, newWidth, e, end);\n    };\n    ColumnResize.prototype.fixateInitialWidths = function (width) {\n        var columns = this.columns.filter(function (c) { return !c.children.length; });\n        var remainingCount = 0;\n        var cols = this.colGroupMain ? this.colGroupMain.children : [];\n        for (var i = 0; i < cols.length; i++) {\n            if (cols[i].width) {\n                width -= parseFloat(cols[i].width);\n            }\n            else {\n                remainingCount++;\n            }\n        }\n        if (remainingCount === 0) {\n            return;\n        }\n        var perCol = Math.floor(width / remainingCount);\n        for (var i = 0; i < cols.length; i++) {\n            var col = cols[i];\n            if (!col.width) {\n                col.width = perCol;\n                columns[i].width = perCol.toString();\n                if (this.colGroupHeader) {\n                    this.colGroupHeader.children[i].width = perCol;\n                }\n                if (this.colGroupFooter) {\n                    this.colGroupFooter.children[i].width = perCol;\n                }\n            }\n        }\n    };\n    ColumnResize.prototype.setWidths = function (column, coef) {\n        var indexInOriginal = this.columns.indexOf(column);\n        var toAdjust = [];\n        var more = column.children.length;\n        for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n            var cc = this.columns[i];\n            if (!cc.children.length) {\n                toAdjust.push(cc);\n            }\n            else {\n                more += cc.children.length;\n            }\n        }\n        if (toAdjust.length === 0) {\n            toAdjust.push(column);\n        }\n        toAdjust.forEach(function (colToAdjust) {\n            var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n            var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n            if (targetWidth < min) {\n                targetWidth = min;\n            }\n            colToAdjust.width = targetWidth;\n        });\n        this.updateColElements(toAdjust);\n    };\n    ColumnResize.prototype.updateColElements = function (affectedColumns) {\n        var columns = this.columns.filter(function (c) { return !c.children.length; });\n        var difference = 1e-10;\n        for (var i = 0; i < affectedColumns.length; i++) {\n            var colIndex = columns.indexOf(affectedColumns[i]);\n            var currentColumnFloatWidth = parseFloat((affectedColumns[i].width || 0).toString());\n            difference += currentColumnFloatWidth - Math.floor(currentColumnFloatWidth);\n            var currentWidth = Math.floor(currentColumnFloatWidth) + Math.floor(difference);\n            difference -= Math.floor(difference);\n            if (this.colGroupMain && this.colGroupMain.children[colIndex]) {\n                this.colGroupMain.children[colIndex].width = currentWidth + 'px';\n            }\n            if (this.colGroupHeader && this.colGroupHeader.children[colIndex]) {\n                // static headers\n                this.colGroupHeader.children[colIndex].width = currentWidth + 'px';\n            }\n            if (this.colGroupFooter && this.colGroupFooter.children[colIndex]) {\n                // static footers\n                this.colGroupFooter.children[colIndex].width = currentWidth + 'px';\n            }\n        }\n    };\n    return ColumnResize;\n}());\nexport { ColumnResize };\n//# sourceMappingURL=ColumnResize.js.map","import { getIndex } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n    function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n        var _this = this;\n        this.reorderable = false;\n        this.groupable = false;\n        this.startColumn = -1;\n        this.startGroup = -1;\n        this.currentColumn = -1;\n        this.currentGroup = -1;\n        this.dropElementClue = null;\n        this.dragElementClue = null;\n        this.groupPanelDivElement = null;\n        this.refGroupPanelDiv = function (e) {\n            _this.groupPanelDivElement = e;\n        };\n        this.refDropElementClue = function (e) {\n            _this.dropElementClue = e;\n        };\n        this.refDragElementClue = function (e) {\n            _this.dragElementClue = e;\n        };\n        this.pressHandler = function (event, element) {\n            if (!event.isTouch) {\n                event.originalEvent.preventDefault();\n            }\n            var startColumn = _this.getColumnIndex(event, element);\n            _this.startGroup = _this.getGroupIndex(event);\n            if (startColumn >= 0) {\n                var col = _this.columns[startColumn];\n                if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n                    _this.startColumn = startColumn;\n                }\n            }\n        };\n        this.dragHandler = function (event, element) {\n            if (!event.isTouch) {\n                event.originalEvent.preventDefault();\n            }\n            event.originalEvent.stopPropagation();\n            if (_this.startColumn === -1 && _this.startGroup === -1) {\n                return;\n            }\n            _this.currentColumn = _this.getColumnIndex(event, element);\n            _this.currentGroup = _this.getGroupIndex(event);\n            if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n                _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n            }\n            var invalidIndex = !_this.isValid();\n            if (invalidIndex) {\n                _this.currentColumn = -1;\n                _this.currentGroup = -1;\n            }\n            var targetElement = (_this.currentColumn >= 0) ?\n                element.children[_this.columns[_this.currentColumn].index] :\n                _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n            _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n            _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n        };\n        this.releaseHandler = function (event) {\n            var prevColumnIndex = _this.startColumn;\n            var nextColumnIndex = _this.currentColumn;\n            var prevGroupIndex = _this.startGroup;\n            var nextGroupIndex = _this.currentGroup;\n            if (_this.dropElementClue) {\n                _this.dropElementClue.setState({ visible: false });\n            }\n            if (_this.dragElementClue) {\n                _this.dragElementClue.setState({ visible: false });\n            }\n            var isValid = _this.isValid();\n            _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n            if (!isValid) {\n                return;\n            }\n            if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n                _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n            }\n            else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n                _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n            }\n            else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n                _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n            }\n        };\n        this.columnReorder = columnReorder;\n        this.groupReorder = groupReorder;\n        this.columnToGroup = columnToGroup;\n    }\n    CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n        if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n            return -1;\n        }\n        var index = getIndex(event, parent);\n        if (index === -1) {\n            return -1;\n        }\n        var _loop_1 = function (i) {\n            if (parent.parentNode.children[i] === parent) {\n                return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n            }\n        };\n        var this_1 = this;\n        for (var i = 0; i < parent.parentNode.children.length; i++) {\n            var state_1 = _loop_1(i);\n            if (typeof state_1 === \"object\")\n                return state_1.value;\n        }\n        return -1;\n    };\n    CommonDragLogic.prototype.getGroupIndex = function (event) {\n        return getIndex(event, this.groupPanelDivElement);\n    };\n    CommonDragLogic.prototype.isValid = function () {\n        if (this.startGroup >= 0) {\n            // group can be moved into group only\n            return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n        }\n        if (this.startColumn === -1) {\n            return false;\n        }\n        if (this.currentGroup >= 0) {\n            // column to group is possible\n            return this.columns[this.startColumn].groupable === true && this.groupable === true;\n        }\n        // reorder is possible\n        return this.reorderable === true &&\n            this.currentColumn >= 0 &&\n            this.currentColumn !== this.startColumn &&\n            this.columns[this.startColumn].reorderable === true &&\n            this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n    };\n    CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dragElementClue) {\n            return;\n        }\n        var innerText = this.startColumn >= 0 ?\n            element.children[this.columns[this.startColumn].index].innerText :\n            element.innerText;\n        this.dragElementClue.setState({\n            visible: true,\n            top: (event.pageY + 10),\n            left: event.pageX,\n            innerText: innerText,\n            status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n        });\n    };\n    CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n        if (!this.dropElementClue) {\n            return;\n        }\n        if (invalidIndex || !targetElement) {\n            this.dropElementClue.setState({ visible: false });\n            return;\n        }\n        var rect = targetElement.getBoundingClientRect();\n        var left = rect.left + event.pageX - event.clientX - 6;\n        if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n            left += rect.width;\n        }\n        var top = rect.top + event.pageY - event.clientY;\n        this.dropElementClue.setState({\n            visible: true,\n            top: top,\n            left: left,\n            height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n        });\n    };\n    return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n//# sourceMappingURL=CommonDragLogic.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n    __extends(DragClue, _super);\n    function DragClue() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            visible: false,\n            top: 0,\n            left: 0,\n            innerText: '',\n            status: 'k-i-cancel'\n        };\n        return _this;\n    }\n    DragClue.prototype.render = function () {\n        return this.state.visible && (React.createElement(\"div\", { className: \"k-header k-drag-clue\", style: {\n                display: 'block',\n                position: 'absolute',\n                zIndex: 20000,\n                padding: '8px 12px',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px'\n            } },\n            React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n                React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n            this.state.innerText));\n    };\n    return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n//# sourceMappingURL=DragClue.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n    __extends(DropClue, _super);\n    function DropClue() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            height: 0,\n            visible: false,\n            left: 0,\n            top: 0\n        };\n        return _this;\n    }\n    DropClue.prototype.render = function () {\n        return this.state.visible && (React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n                zIndex: 10000,\n                display: 'block',\n                top: this.state.top + 'px',\n                left: this.state.left + 'px',\n                height: this.state.height + 'px'\n            } }));\n    };\n    return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n//# sourceMappingURL=DropClue.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nvar GridCell = /** @class */ (function (_super) {\n    __extends(GridCell, _super);\n    function GridCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridCell.prototype.render = function () {\n        var defaultRendering = null;\n        if (this.props.rowType === 'groupFooter') {\n            defaultRendering = React.createElement(\"td\", { className: this.props.className });\n        }\n        else if (this.props.field !== undefined && this.props.rowType !== 'groupHeader') {\n            var data = getNestedValue(this.props.field, this.props.dataItem);\n            var dataAsString = '';\n            if (data !== undefined && data !== null) {\n                dataAsString = this.props.format ?\n                    provideIntlService(this).format(this.props.format, data) :\n                    data.toString();\n            }\n            defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className, role: \"gridcell\", \"aria-colindex\": (this.props.columnIndex || 0) - (this.props.level || 0) + 1, \"aria-selected\": false }, dataAsString));\n        }\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridCell;\n}(React.Component));\nexport { GridCell };\nregisterForIntl(GridCell);\n//# sourceMappingURL=GridCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar GridGroupCell = /** @class */ (function (_super) {\n    __extends(GridGroupCell, _super);\n    function GridGroupCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridGroupCell.prototype.render = function () {\n        var defaultRendering = null;\n        var _a = this.props, columnIndex = _a.columnIndex, level = _a.level, columnsCount = _a.columnsCount, rowType = _a.rowType, dataItem = _a.dataItem, field = _a.field, onChange = _a.onChange, expanded = _a.expanded, render = _a.render;\n        var definedField = field || '';\n        if (columnIndex === undefined || level === undefined || columnIndex < level ||\n            columnsCount === undefined || rowType !== 'groupHeader' || dataItem[definedField] === undefined) {\n            defaultRendering = (React.createElement(\"td\", { style: this.props.style, key: 'g' + columnIndex, className: \"k-group-cell\", role: \"presentation\" }));\n        }\n        else if (columnIndex <= level) {\n            defaultRendering = (React.createElement(\"td\", { style: this.props.style, key: 'g-colspan', colSpan: columnsCount - columnIndex, role: \"gridcell\", \"aria-selected\": false, \"aria-expanded\": expanded, \"aria-colindex\": 1 },\n                React.createElement(\"p\", { className: \"k-reset\" },\n                    React.createElement(\"a\", { onClick: function (e) {\n                            e.preventDefault();\n                            if (onChange) {\n                                onChange({\n                                    dataItem: dataItem,\n                                    syntheticEvent: e,\n                                    field: undefined,\n                                    value: !expanded\n                                });\n                            }\n                        }, href: \"#\", tabIndex: -1, className: expanded ? 'k-i-collapse k-icon' : 'k-i-expand k-icon' }),\n                    ((dataItem[definedField] instanceof Date) && dataItem[definedField].toString) ?\n                        dataItem[definedField].toString() :\n                        dataItem[definedField])));\n        }\n        return render ?\n            render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridGroupCell;\n}(React.Component));\nexport { GridGroupCell };\n//# sourceMappingURL=GridGroupCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from '../utils';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The component for each of the items in the `data` property which the Grid renders.\n */\nvar GridRow = /** @class */ (function (_super) {\n    __extends(GridRow, _super);\n    function GridRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridRow.prototype.render = function () {\n        var className = classNames({\n            'k-grouping-row': this.props.rowType === 'groupHeader',\n            'k-group-footer': this.props.rowType === 'groupFooter',\n            'k-master-row': this.props.rowType !== 'groupHeader' &&\n                this.props.rowType !== 'groupFooter',\n            'k-alt': this.props.rowType !== 'groupHeader' &&\n                this.props.rowType !== 'groupFooter' &&\n                this.props.isAltRow,\n            'k-state-selected': this.props.rowType !== 'groupHeader' &&\n                this.props.rowType !== 'groupFooter' &&\n                this.props.selectedField !== undefined &&\n                getNestedValue(this.props.selectedField, this.props.dataItem),\n            'k-grid-edit-row': this.props.isInEdit\n        });\n        var defaultRendering = (React.createElement(\"tr\", { onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick, className: className, style: {\n                height: this.props.rowHeight ? this.props.rowHeight + 'px' : '',\n                visibility: this.props.isHidden ? 'hidden' : ''\n            }, role: \"row\" }, this.props.children));\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridRow;\n}(React.Component));\nexport { GridRow };\n//# sourceMappingURL=GridRow.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridHeaderSelectionCell = /** @class */ (function (_super) {\n    __extends(GridHeaderSelectionCell, _super);\n    function GridHeaderSelectionCell() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._inputId = guid();\n        return _this;\n    }\n    GridHeaderSelectionCell.prototype.render = function () {\n        var _this = this;\n        var defaultRendering = [\n            (React.createElement(\"input\", { key: 0, checked: this.props.selectionValue, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: function (e) {\n                    return _this.props.selectionChange({\n                        field: _this.props.field,\n                        syntheticEvent: e\n                    });\n                } })),\n            (React.createElement(\"label\", { key: 1, className: \"k-checkbox-label\", htmlFor: this._inputId }))\n        ];\n        return this.props.render ?\n            this.props.render.call(undefined, defaultRendering, this.props) :\n            defaultRendering;\n    };\n    return GridHeaderSelectionCell;\n}(React.Component));\nexport { GridHeaderSelectionCell };\n//# sourceMappingURL=GridHeaderSelectionCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, noRecords } from './messages';\n// tslint:disable:max-line-length\n/**\n * Represents the GridNoRecords component. The component is rendered when the `data` property of the Grid is empty or `null`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     render() {\n *         return (\n *             <Grid data={[]}>\n *                 <GridNoRecords>\n *                     There is no data available\n *                 </GridNoRecords>\n *                 <GridColumn field=\"id\" />\n *                 <GridColumn field=\"name\" />\n *             </Grid>\n *         );\n *     }\n * }\n * ReactDOM.render(\n *     <App />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridNoRecords = /** @class */ (function (_super) {\n    __extends(GridNoRecords, _super);\n    function GridNoRecords() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridNoRecords.prototype.render = function () {\n        return this.props.children || intl(this).toLanguageString(noRecords, messages[noRecords]);\n    };\n    /**\n     * @hidden\n     */\n    GridNoRecords.displayName = 'KendoReactGridNoRecords';\n    return GridNoRecords;\n}(React.Component));\nexport { GridNoRecords };\nregisterForLocalization(GridNoRecords);\n//# sourceMappingURL=GridNoRecords.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { footerColumns } from './../utils';\n/**\n * @hidden\n */\nvar FooterRow = /** @class */ (function (_super) {\n    __extends(FooterRow, _super);\n    function FooterRow() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        _this.renderCell = function (column, index) {\n            var tdProps = {\n                colSpan: column.colSpan !== 1 ? column.colSpan : undefined,\n                style: (column.left !== undefined) ? {\n                    position: 'sticky',\n                    left: column.left,\n                    right: column.right,\n                    zIndex: 1,\n                    background: '#f6f6f6',\n                    borderRightWidth: column.rightBorder ? '1px' : undefined\n                } : undefined\n            };\n            var cellProps = __assign({ field: column.field }, tdProps);\n            return (column.footerCell && React.createElement(column.footerCell, __assign({}, cellProps, { key: index }))) || (React.createElement(\"td\", __assign({ key: index }, tdProps, { role: \"gridcell\", \"aria-selected\": false, \"aria-colindex\": column.declarationIndex + 1 })));\n        };\n        return _this;\n    }\n    Object.defineProperty(FooterRow.prototype, \"element\", {\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    FooterRow.prototype.render = function () {\n        return React.createElement(\"tr\", { role: \"row\" }, footerColumns(this.props.columns).map(this.renderCell));\n    };\n    return FooterRow;\n}(React.Component));\nexport { FooterRow };\n//# sourceMappingURL=FooterRow.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { tableColumnsVirtualization, Pager, mapColumns } from '@progress/kendo-react-data-tools';\nimport { GridSelectionCell } from './cells/GridSelectionCell';\nimport { GridHierarchyCell } from './cells/GridHierarchyCell';\nimport { GridEditCell } from './cells/GridEditCell';\nimport { Header } from './header/Header';\nimport { HeaderRow } from './header/HeaderRow';\nimport { FilterRow } from './header/FilterRow';\nimport { GroupPanel } from './header/GroupPanel';\nimport { Footer } from './footer/Footer';\nimport { VirtualScroll } from './VirtualScroll';\nimport { ColumnResize } from './drag/ColumnResize';\nimport { CommonDragLogic } from './drag/CommonDragLogic';\nimport { DragClue } from './drag/DragClue';\nimport { DropClue } from './drag/DropClue';\nimport { getNestedValue, flatData, readColumns, autoGenerateColumns } from './utils/index';\nimport { GridCell } from './cells/GridCell';\nimport { GridGroupCell } from './cells/GridGroupCell';\nimport { GridRow } from './rows/GridRow';\nimport { GridHeaderSelectionCell } from './header/GridHeaderSelectionCell';\nimport { GridNoRecords } from './GridNoRecords';\nimport { operators } from './filterCommon';\nimport { FooterRow } from './footer/FooterRow';\nimport { normalize } from './paging/GridPagerSettings';\nimport { pagerMessagesMap } from './messages';\n/**\n * Represents the [KendoReact Grid component]({% slug overview_grid %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    constructor(props) {\n *        super(props);\n *        this.state = {\n *            data: [\n *                { 'foo': 'A1', 'bar': 'B1' },\n *                { 'foo': 'A2', 'bar': 'B2' },\n *                { 'foo': 'A3', 'bar': 'B2' }\n *            ]\n *        };\n *    }\n *    render() {\n *        return (\n *            <Grid\n *                data={this.state.data}\n *                reorderable={true}\n *            >\n *                <GridColumn field=\"foo\" />\n *                <GridColumn field=\"bar\" />\n *            </Grid>\n *        );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n    __extends(Grid, _super);\n    function Grid(props) {\n        var _this = _super.call(this, props) || this;\n        _this._columns = [];\n        _this._columnsMap = [[]];\n        _this._header = null;\n        _this._footer = null;\n        _this.forceUpdateTimeout = undefined;\n        _this.scrollHandler = function (event) {\n            if (event.currentTarget !== event.currentTarget) {\n                return;\n            }\n            clearTimeout(_this.forceUpdateTimeout);\n            if (_this.props.columnVirtualization && !_this.vs.scrollableVirtual) {\n                _this.forceUpdateTimeout = setTimeout(function () { _this.forceUpdate(); }, 0);\n            }\n            if (_this._header) {\n                _this._header.setScrollLeft(event.currentTarget.scrollLeft);\n            }\n            if (_this._footer) {\n                _this._footer.setScrollLeft(event.currentTarget.scrollLeft);\n            }\n            if (_this.vs) {\n                _this.vs.scrollHandler(event);\n            }\n            dispatchEvent(_this.props.onScroll, event, _this, undefined);\n        };\n        _this.rowClick = function (e, item) {\n            if (_this.props.onRowClick && e.target.nodeName === 'TD') {\n                _this.props.onRowClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n            }\n        };\n        _this.rowDblClick = function (e, item) {\n            if (_this.props.onRowDoubleClick && e.target.nodeName === 'TD') {\n                _this.props.onRowDoubleClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n            }\n        };\n        _this.itemChange = function (event) {\n            var itemChange = _this.props.onItemChange;\n            if (event.field === _this.props.expandField || _this.props.group && event.field === undefined) {\n                var expandChange = _this.props.onExpandChange;\n                if (expandChange) {\n                    expandChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, value: event.value }));\n                }\n                return;\n            }\n            if (itemChange) {\n                itemChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, field: event.field, value: event.value }));\n            }\n        };\n        _this.onHeaderSelectionChange = function (event) {\n            if (_this.props.onHeaderSelectionChange) {\n                _this.props.onHeaderSelectionChange.call(undefined, {\n                    field: event.field,\n                    nativeEvent: event.syntheticEvent && event.syntheticEvent.nativeEvent,\n                    syntheticEvent: event.syntheticEvent,\n                    target: _this\n                });\n            }\n        };\n        _this.pageChange = function (event) {\n            _this.raiseDataEvent(_this.props.onPageChange, { page: { skip: event.skip, take: event.take } }, { skip: event.skip, take: event.take }, event.syntheticEvent);\n        };\n        _this.sortChange = function (sort, syntheticEvent) {\n            _this.raiseDataEvent(_this.props.onSortChange, { sort: sort }, { sort: sort }, syntheticEvent);\n        };\n        _this.filterChange = function (filter, syntheticEvent) {\n            _this.raiseDataEvent(_this.props.onFilterChange, { filter: filter }, { filter: filter, skip: 0 }, syntheticEvent);\n        };\n        _this.groupChange = function (groups, event) {\n            var syntheticEvent = event.nativeEvent ?\n                event : { nativeEvent: event.nativeEvent || event.originalEvent };\n            _this.raiseDataEvent(_this.props.onGroupChange, { group: groups }, { group: groups, skip: 0 }, syntheticEvent);\n        };\n        _this.resolveTitle = function (field) {\n            var column = _this._columns.find(function (c) { return c.field === field; });\n            var title = column && (column.title || column.field);\n            return title === undefined ? field : title;\n        };\n        var groupable = _this.props.groupable === true ||\n            (typeof _this.props.groupable === 'object') && _this.props.groupable.enabled !== false;\n        _this.vs = new VirtualScroll(groupable || props.rowHeight === undefined || props.rowHeight === 0);\n        _this.dragLogic = new CommonDragLogic(_this.columnReorder.bind(_this), _this.groupReorder.bind(_this), _this.columnToGroup.bind(_this));\n        _this.columnResize = new ColumnResize(_this.onResize.bind(_this));\n        return _this;\n    }\n    Object.defineProperty(Grid.prototype, \"columns\", {\n        // tslint:disable:max-line-length\n        /**\n         * A getter of the current columns. Gets the current column width or current columns, or any other [`GridColumnProps`]({% slug api_grid_gridcolumnprops %}) for each defined column. Can be used on each Grid instance. To obtain the instance of the rendered Grid, use the `ref` callback. The following example demonstrates how to reorder the columns by dragging their handlers and check the properties afterwards. You can check the result in the browser console.\n         *\n         * @example\n         * ```jsx\n         * class App extends React.Component {\n         *     constructor(props) {\n         *         super(props);\n         *         this.state = {\n         *             data: [\n         *                 { 'foo': 'A1', 'bar': 'B1' },\n         *                 { 'foo': 'A2', 'bar': 'B2' },\n         *                 { 'foo': 'A3', 'bar': 'B2' }\n         *             ]\n         *         };\n         *         this.grid = null;\n         *     }\n         *     render() {\n         *         return (\n         *             <div>\n         *                 <Grid\n         *                     data={this.state.data}\n         *                     reorderable={true}\n         *                     ref={(g) => { this.grid = g; }}\n         *                 >\n         *                     <GridColumn field=\"foo\" />\n         *                     <GridColumn field=\"bar\" />\n         *                 </Grid>\n         *                 <button onClick={() => console.log(JSON.stringify(this.grid.columns))}>\n         *                     log current properties into browser console.\n         *                 </button>\n         *             </div>\n         *         );\n         *     }\n         * }\n         * ReactDOM.render(<App />, document.querySelector('my-app'));\n         * ```\n         */\n        // tslint:enable:max-line-length\n        get: function () {\n            var shuffledColumns = this._columns.filter(function (q) { return q.declarationIndex >= 0 && q.parentIndex === -1; });\n            var sanitize = function (columns) {\n                columns.sort(function (a, b) { return a.declarationIndex - b.declarationIndex; });\n                return columns.map(function (column) {\n                    var declarationIndex = column.declarationIndex, parentIndex = column.parentIndex, depth = column.depth, colSpan = column.colSpan, rowSpan = column.rowSpan, index = column.index, kFirst = column.kFirst, children = column.children, props = __rest(column, [\"declarationIndex\", \"parentIndex\", \"depth\", \"colSpan\", \"rowSpan\", \"index\", \"kFirst\", \"children\"]);\n                    return children.length ? __assign({ children: sanitize(children) }, props) : props;\n                });\n            };\n            return sanitize(shuffledColumns);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Grid.prototype.componentWillUnmount = function () {\n        clearTimeout(this.forceUpdateTimeout);\n        this.columnResize.columns = [];\n        this.dragLogic.columns = [];\n        this._columns = [];\n    };\n    /**\n     * @hidden\n     */\n    Grid.prototype.render = function () {\n        var _this = this;\n        var total = this.props.total || 0;\n        var propsData = [];\n        if (Array.isArray(this.props.data)) {\n            propsData = this.props.data;\n        }\n        else if (this.props.data) {\n            propsData = this.props.data.data;\n            total = total || this.props.data.total;\n        }\n        var groupable = this.props.groupable === true ||\n            (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n        this.columnResize.resizable = this.props.resizable || false;\n        this.dragLogic.reorderable = this.props.reorderable || false;\n        this.dragLogic.groupable = groupable;\n        if (total !== this.vs.total) {\n            this.vs.reset();\n            this.vs = new VirtualScroll(groupable || this.props.rowHeight === undefined || this.props.rowHeight === 0);\n        }\n        this.vs.PageChange = this.pageChange;\n        this.vs.realSkip = this.props.skip || 0;\n        this.vs.pageSize = (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 0;\n        this.vs.scrollableVirtual = (this.props.scrollable === 'virtual');\n        this.vs.total = total;\n        this.vs.propsSkip = (this.props.skip || 0) + (this.props.scrollable === 'virtual' ?\n            this.vs.topCacheCount + (this.vs.attendedSkip - (this.props.skip || 0)) : 0);\n        if (this.props.rowHeight !== undefined && this.props.rowHeight > 0 && !groupable) {\n            this.vs.containerHeight = Math.min(1533915, this.props.rowHeight * (total || 0));\n        }\n        else {\n            this.vs.containerHeight = 1533915;\n        }\n        var groupingFooter = (typeof this.props.groupable === 'object') && this.props.groupable.footer || 'none';\n        var data = [];\n        var resolvedGroupsCount = flatData(data, propsData, groupingFooter, { index: this.props.skip || 0 }, this.props.group !== undefined, this.props.expandField);\n        var children = React.Children.toArray(this.props.children);\n        this.initColumns(children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridColumn'; }), resolvedGroupsCount);\n        var toolbar = children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridToolbar'; });\n        var noRecords = children.filter(function (child) { return child &&\n            child.type.displayName === 'KendoReactGridNoRecords'; });\n        var columnsWithColGroup = this._columns.filter(function (c) { return c.children.length === 0; });\n        var groupingPanel = groupable && (React.createElement(GroupPanel, { group: this.props.group || [], groupChange: this.groupChange, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, refCallback: this.dragLogic.refGroupPanelDiv, resolveTitle: this.resolveTitle }));\n        var clues = (this.dragLogic.reorderable || this.dragLogic.groupable) && document && document.body && [\n            ReactDOM.createPortal(React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }), document.body),\n            ReactDOM.createPortal(React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }), document.body)\n        ];\n        var header = (React.createElement(Header, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', scrollableDataElement: function () { return _this.vs.container; }, ref: function (h) { _this._header = h; }, headerRow: React.createElement(HeaderRow, { sort: this.props.sort, sortable: this.props.sortable, sortChange: this.sortChange, filter: this.props.filter, filterable: this.props.filterable, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, columnMenu: this.props.columnMenu, selectionChange: this.onHeaderSelectionChange, columns: this._columns, columnResize: this.columnResize, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, columnsMap: this._columnsMap, cellRender: this.props.headerCellRender }), filterRow: this.props.filterable && React.createElement(FilterRow, { columns: this._columns, filter: this.props.filter, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, sort: this.props.sort, cellRender: this.props.filterCellRender }) || undefined, cols: columnsWithColGroup.map(function (column, index) { return React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n                    Math.floor(parseFloat(column.width.toString())) + 'px' : undefined }); }) }));\n        var footer = this._columns.some(function (c) { return Boolean(c.footerCell); }) ? (React.createElement(Footer, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (f) { return _this._footer = f; }, row: React.createElement(FooterRow, { columns: this._columns }), cols: columnsWithColGroup.map(function (column, index) { return React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n                    Math.floor(parseFloat(column.width.toString())) + 'px' : undefined }); }) })) : null;\n        var scrollLeft = this.vs && this.vs.container && this.vs.container.scrollLeft || 0;\n        var tableWidth = parseFloat(((this.props.style || {}).width || '').toString());\n        var _a = tableColumnsVirtualization({\n            enabled: this.props.columnVirtualization,\n            columns: this._columns,\n            tableViewPortWidth: tableWidth,\n            scrollLeft: scrollLeft\n        }), colSpans = _a.colSpans, isColHidden = _a.hiddenColumns;\n        var dataRow = function (item) {\n            var isInEdit = false;\n            return {\n                row: _this._columns.map(function (column, index) {\n                    if (isColHidden[index]) {\n                        return null;\n                    }\n                    var className = \"\" + (column.className ? column.className + ' ' : '')\n                        + (\"\" + (column.locked ? 'k-grid-content-sticky' : ''));\n                    var cellProps = {\n                        colSpan: colSpans[index],\n                        dataItem: item.dataItem,\n                        field: column.field,\n                        editor: column.editor,\n                        format: column.format,\n                        className: className,\n                        render: _this.props.cellRender,\n                        onChange: _this.itemChange,\n                        selectionChange: (_this.props.onSelectionChange) ? (function (e) {\n                            _this.selectionChange(e, item.dataItem);\n                        }) : undefined,\n                        columnIndex: index,\n                        columnsCount: _this._columns.filter(function (c) { return !c.children.length; }).length,\n                        rowType: item.rowType,\n                        level: item.level,\n                        expanded: item.expanded,\n                        dataIndex: item.dataIndex,\n                        style: (column.left !== undefined) && {\n                            left: column.left,\n                            right: column.right,\n                            borderRightWidth: column.rightBorder ? '1px' : ''\n                        } || {}\n                    };\n                    if (column.cell) {\n                        return React.createElement(column.cell, __assign({ key: index }, cellProps));\n                    }\n                    if (column.editable && _this.props.editField) {\n                        var inEdit = getNestedValue(_this.props.editField, item.dataItem);\n                        if (inEdit === true || inEdit === column.field) {\n                            isInEdit = true;\n                            return React.createElement(GridEditCell, __assign({ key: index }, cellProps));\n                        }\n                    }\n                    return React.createElement(GridCell, __assign({ key: index }, cellProps));\n                }),\n                isInEdit: isInEdit\n            };\n        };\n        var hiddenRows = 0;\n        if (this.props.scrollable === 'virtual') {\n            for (var i = 0; i < this.vs.topCacheCount + this.vs.attendedSkip - (this.props.skip || 0); i++) {\n                var item = data.shift();\n                if (item) {\n                    data.push(item);\n                    hiddenRows++;\n                    if (item.rowType === 'groupHeader') {\n                        i--;\n                    }\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        var hidden = function (index) { return (index >= data.length - hiddenRows); };\n        var absoluteIndex = function (index) { return index + (_this.vs.propsSkip || 0); };\n        var absoluteDataIndex = this.vs.propsSkip || 0;\n        var body = data.length && data.map(function (item, index) {\n            if (item.rowType === 'data') {\n                absoluteDataIndex++;\n            }\n            var isAlt = absoluteDataIndex % 2 === 0;\n            var gridRow = dataRow(item);\n            return [(React.createElement(GridRow, { key: absoluteIndex(index) * 2, dataItem: item.dataItem, isAltRow: isAlt, isInEdit: gridRow.isInEdit, rowType: item.rowType, isHidden: hidden(index), onClick: function (e) { return _this.rowClick(e, item); }, onDoubleClick: function (e) { return _this.rowDblClick(e, item); }, selectedField: _this.props.selectedField, rowHeight: _this.props.rowHeight, render: _this.props.rowRender }, gridRow.row)),\n                _this.props.detail && item.rowType === 'data' && item.expanded && (React.createElement(\"tr\", { key: absoluteIndex(index) * 2 + 1, className: isAlt ? 'k-detail-row k-alt' : 'k-detail-row', style: { visibility: hidden(index) ? 'hidden' : '' } },\n                    _this.props.group && _this.props.group.map(function (group, idx) {\n                        return (React.createElement(GridGroupCell, { dataIndex: item.dataIndex, field: group.field, dataItem: item.dataItem, key: idx, style: {} }));\n                    }),\n                    _this.props.expandField && React.createElement(\"td\", { className: \"k-hierarchy-cell\" }),\n                    React.createElement(\"td\", { className: \"k-detail-cell\", colSpan: (_this._columns.filter(function (c) { return !c.children.length; }).length\n                            - (_this.props.expandField ? 1 : 0)\n                            - (_this.props.group ? _this.props.group.length : 0)) || 1 },\n                        React.createElement(_this.props.detail, { dataItem: item.dataItem }))))\n            ];\n        }) || (React.createElement(\"tr\", { className: \"k-grid-norecords\" },\n            React.createElement(\"td\", { colSpan: this._columns.filter(function (c) { return !c.children.length; }).length }, noRecords.length ? noRecords : React.createElement(GridNoRecords, null))));\n        var pager = this.props.pageable && (React.createElement(Pager, __assign({ className: \"k-grid-pager\", onPageChange: this.pageChange, total: total, skip: this.vs.propsSkip || 0, take: (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 10, messagesMap: pagerMessagesMap }, (normalize(this.props.pageable)))));\n        var sorted = function (field) {\n            return _this.props.sort && _this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0;\n        };\n        var colGroups = (React.createElement(\"colgroup\", { ref: function (c) { _this.columnResize.colGroupMain = c; }, role: \"presentation\" }, columnsWithColGroup.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), className: sorted(column.field) ? 'k-sorted' : undefined, width: column.width !== undefined ?\n                Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); })));\n        if (this.props.scrollable === 'none') {\n            return (React.createElement(\"div\", { style: this.props.style, className: 'k-widget k-grid ' + (this.props.className || '') },\n                toolbar,\n                groupingPanel,\n                React.createElement(\"table\", { ref: function (table) {\n                        _this.vs.table = table;\n                        _this.resetTableWidth();\n                    } },\n                    colGroups,\n                    header,\n                    React.createElement(\"tbody\", null, body),\n                    footer),\n                pager,\n                clues));\n        }\n        var wrapperStyle = this.props.style || {};\n        if (this.props.scrollable === 'virtual') {\n            // Set the default height for vs if not existing.\n            if (!wrapperStyle.height) {\n                wrapperStyle = Object.assign({}, wrapperStyle, { height: '450px' });\n            }\n        }\n        return (React.createElement(\"div\", { style: wrapperStyle, className: 'k-widget k-grid' +\n                ((this.props.scrollable === 'virtual' ? ' k-grid-virtual ' : ' ') +\n                    (this.props.className || '')), ref: function () {\n                _this.resetTableWidth();\n            }, role: \"grid\" },\n            toolbar,\n            groupingPanel,\n            header,\n            React.createElement(\"div\", { className: \"k-grid-container\", role: \"presentation\" },\n                React.createElement(\"div\", { ref: function (container) { _this.vs.container = container; }, className: \"k-grid-content k-virtual-content\", onScroll: this.scrollHandler, role: \"presentation\" },\n                    React.createElement(\"div\", { style: { 'position': 'relative' }, role: \"presentation\" },\n                        React.createElement(\"table\", { className: 'k-grid-table', ref: function (table) { return _this.vs.table = table; }, role: \"presentation\" },\n                            colGroups,\n                            React.createElement(\"tbody\", { ref: function (tableBody) { _this.vs.tableBody = tableBody; }, role: \"presentation\" }, body))),\n                    React.createElement(\"div\", { className: \"k-height-container\", role: \"presentation\" },\n                        React.createElement(\"div\", { style: this.props.scrollable === 'virtual' ?\n                                { 'height': (this.vs.containerHeight) + 'px' } : {} })))),\n            footer,\n            pager,\n            clues));\n    };\n    Grid.prototype.selectionChange = function (event, dataItem) {\n        if (this.props.onSelectionChange) {\n            this.props.onSelectionChange.call(undefined, __assign({}, this.getArguments(event.syntheticEvent), { dataItem: dataItem }));\n        }\n    };\n    Grid.prototype.raiseDataEvent = function (handler, data, moreData, syntheticEvent) {\n        var dataStateChange = this.props.onDataStateChange;\n        if (handler) {\n            handler.call(undefined, __assign({}, this.getArguments(syntheticEvent), data));\n        }\n        else if (dataStateChange) {\n            dataStateChange.call(undefined, __assign({}, this.getArguments(syntheticEvent), { data: __assign({}, this.getDataState(), moreData), dataState: __assign({}, this.getDataState(), moreData) }));\n        }\n    };\n    Grid.prototype.columnReorder = function (prev, next, nativeEvent) {\n        var _this = this;\n        var _a;\n        var depth = this._columns[prev].depth;\n        var end = function (index) {\n            do {\n                index++;\n            } while (index < _this._columns.length && _this._columns[index].depth > depth);\n            return index;\n        };\n        var spliced = this._columns.splice(prev, end(prev) - prev);\n        (_a = this._columns).splice.apply(_a, [prev < next ? end(next - spliced.length) : next, 0].concat(spliced));\n        this._columns.filter(function (q) { return q.declarationIndex >= 0; }).forEach(function (c, i) { return c.orderIndex = i; });\n        var eventColumnProps = this.columns;\n        this.forceUpdate();\n        if (this.props.onColumnReorder) {\n            this.props.onColumnReorder.call(undefined, {\n                target: this,\n                columns: eventColumnProps,\n                nativeEvent: nativeEvent\n            });\n        }\n    };\n    Grid.prototype.groupReorder = function (prevIndex, nextIndex, nativeEvent) {\n        if (this.props.group === undefined) {\n            return;\n        }\n        var group = this.props.group.slice();\n        group.splice.apply(group, [nextIndex, 0].concat(group.splice(prevIndex, 1)));\n        this.groupChange(group, nativeEvent);\n    };\n    Grid.prototype.columnToGroup = function (columnIndex, groupIndex, nativeEvent) {\n        var field = this._columns[columnIndex].field;\n        if (!field) {\n            return;\n        }\n        var group = (this.props.group || []).slice();\n        group.splice(groupIndex, 0, { field: field });\n        this.groupChange(group, nativeEvent);\n    };\n    Grid.prototype.resetTableWidth = function () {\n        var totalWidth = 0;\n        if (!this.columnResize.colGroupMain) {\n            return;\n        }\n        var colElements = this.columnResize.colGroupMain.children;\n        for (var i = 0; i < colElements.length; i++) {\n            var width = colElements[i].width;\n            if (!width) {\n                return;\n            }\n            totalWidth += parseFloat(width.toString());\n        }\n        totalWidth = Math.round(totalWidth);\n        if (this._header) {\n            this._header.setWidth(totalWidth);\n        }\n        if (this._footer) {\n            this._footer.setWidth(totalWidth);\n        }\n        if (this.vs.table) {\n            this.vs.table.style.width = totalWidth + 'px';\n        }\n    };\n    Grid.prototype.onResize = function (index, newWidth, oldWidth, nativeEvent, end) {\n        this.resetTableWidth();\n        if (this.props.onColumnResize) {\n            this.props.onColumnResize.call(undefined, {\n                columns: this.columns,\n                index: index,\n                nativeEvent: nativeEvent,\n                newWidth: newWidth,\n                oldWidth: oldWidth,\n                end: end,\n                target: this\n            });\n        }\n    };\n    Grid.prototype.initColumns = function (columnElements, groupCount) {\n        var _this = this;\n        this._columns = readColumns(columnElements, this.columns);\n        if (this._columns.length === 0) {\n            this._columns = autoGenerateColumns(this.props.data, this.props.group, this.props.expandField);\n        }\n        if (this.props.selectedField) {\n            this._columns.filter(function (c) { return c.field === _this.props.selectedField; }).forEach(function (c) {\n                c.width = c.width || '50px';\n                c.cell = c.cell || GridSelectionCell;\n                c.headerCell = c.headerCell || GridHeaderSelectionCell;\n            });\n        }\n        var defaultServiceProps = {\n            resizable: true,\n            width: '32px',\n            title: ' ',\n            declarationIndex: -1,\n            orderIndex: -1,\n            children: [],\n            parentIndex: -1,\n            depth: 0,\n            colSpan: 0,\n            rowSpan: 0,\n            left: 0,\n            right: 0,\n            index: 0,\n            rightBorder: false\n        };\n        var columnIndexOffset = 0;\n        if (this.props.expandField && (this.props.onExpandChange) && this.props.detail) {\n            this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridHierarchyCell, field: this.props.expandField, headerClassName: 'k-hierarchy-cell k-header' }));\n            columnIndexOffset++;\n        }\n        for (var i = 0; i < groupCount; i++) {\n            this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridGroupCell, field: 'value' }));\n            columnIndexOffset++;\n        }\n        this._columns.slice(columnIndexOffset).forEach(function (c) { return c.parentIndex >= 0 && (c.parentIndex += columnIndexOffset); });\n        this._columnsMap = mapColumns(this._columns);\n        this.columnResize.columns = this._columns;\n        this.dragLogic.columns = this._columns;\n    };\n    Grid.prototype.getDataState = function () {\n        return {\n            filter: this.props.filter,\n            sort: this.props.sort,\n            skip: this.props.skip,\n            take: (this.props.take !== undefined ? this.props.take : this.props.pageSize),\n            group: this.props.group\n        };\n    };\n    Grid.prototype.getArguments = function (syntheticEvent) {\n        return {\n            nativeEvent: syntheticEvent && syntheticEvent.nativeEvent,\n            syntheticEvent: syntheticEvent,\n            target: this\n        };\n    };\n    /**\n     * @hidden\n     */\n    Grid.displayName = 'KendoReactGrid';\n    /**\n     * @hidden\n     */\n    Grid.defaultProps = {\n    // never use this\n    };\n    /**\n     * @hidden\n     */\n    Grid.propTypes = {\n        data: PropTypes.oneOfType([\n            PropTypes.array,\n            PropTypes.shape({\n                data: PropTypes.array,\n                total: PropTypes.number\n            })\n        ]),\n        sortable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                mode: PropTypes.oneOf(['single', 'multiple']),\n                allowUnsort: PropTypes.bool\n            })\n        ]),\n        onSortChange: PropTypes.func,\n        sort: PropTypes.array,\n        filterable: PropTypes.bool,\n        filter: PropTypes.any,\n        onFilterChange: PropTypes.func,\n        pageable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                buttonCount: PropTypes.number,\n                info: PropTypes.bool,\n                type: PropTypes.oneOf(['numeric', 'input']),\n                pageSizes: PropTypes.oneOfType([PropTypes.bool, PropTypes.arrayOf(PropTypes.number)]),\n                previousNext: PropTypes.bool\n            })\n        ]),\n        pageSize: PropTypes.number,\n        onPageChange: PropTypes.func,\n        total: PropTypes.number,\n        skip: PropTypes.number,\n        take: PropTypes.number,\n        onExpandChange: PropTypes.func,\n        expandField: PropTypes.string,\n        selectedField: PropTypes.string,\n        onSelectionChange: PropTypes.func,\n        onHeaderSelectionChange: PropTypes.func,\n        resizable: PropTypes.bool,\n        reorderable: PropTypes.bool,\n        group: PropTypes.any,\n        groupable: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.shape({\n                enabled: PropTypes.bool,\n                footer: PropTypes.oneOf(['always', 'visible', 'none'])\n            })\n        ]),\n        onGroupChange: PropTypes.func,\n        onRowClick: PropTypes.func,\n        onRowDoubleClick: PropTypes.func,\n        onItemChange: PropTypes.func,\n        editField: PropTypes.string,\n        scrollable: PropTypes.oneOf(['none', 'scrollable', 'virtual']),\n        rowHeight: PropTypes.number,\n        detail: PropTypes.any,\n        style: PropTypes.object,\n        onDataStateChange: PropTypes.func,\n        onColumnResize: PropTypes.func,\n        onColumnReorder: PropTypes.func\n    };\n    return Grid;\n}(React.Component));\nexport { Grid };\n//# sourceMappingURL=Grid.js.map","/**\n * @hidden\n */\nexport function tableColumnsVirtualization(args) {\n    var enabled = args.enabled, _a = args.columns, columns = _a === void 0 ? [] : _a, tableViewPortWidth = args.tableViewPortWidth, scrollLeft = args.scrollLeft;\n    var colSpans = columns.map(function () { return 1; });\n    var hiddenColumns = columns.map(function () { return false; });\n    if (!enabled) {\n        return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n    }\n    var widths = columns.map(function (c) { return parseFloat((c.width || '').toString()) || 10; });\n    var widthOfHiddenColumns = 0;\n    for (var i = 0; i < columns.length; i++) {\n        if (columns[i].locked) {\n            continue;\n        }\n        var considerNext = (i < widths.length - 1) ? widths[i + 1] : 0;\n        if (widthOfHiddenColumns + widths[i] + considerNext < scrollLeft) {\n            hiddenColumns[i] = true;\n            widthOfHiddenColumns += widths[i];\n        }\n        else {\n            break;\n        }\n    }\n    var totalWidth = widths.reduce(function (acc, current) { return acc + current; }, 0);\n    widthOfHiddenColumns = 0;\n    for (var i = columns.length - 1; i >= 0; i--) {\n        if (columns[i].locked) {\n            continue;\n        }\n        if (widthOfHiddenColumns + 2 * widths[i] < totalWidth - tableViewPortWidth - scrollLeft) {\n            hiddenColumns[i] = true;\n            widthOfHiddenColumns += widths[i];\n        }\n        else {\n            break;\n        }\n    }\n    var hiddenCols = hiddenColumns.slice();\n    var hidden = function (value) { return value; };\n    var lastVisible = hiddenCols.lastIndexOf(false);\n    var anyHidden = hiddenCols.some(hidden);\n    var allHidden = hiddenCols.every(hidden);\n    var hiddenSeqLength;\n    var updateIndex;\n    while (anyHidden && hiddenCols.length && (lastVisible !== -1 || allHidden)) {\n        if (lastVisible < hiddenCols.length - 1) {\n            hiddenSeqLength = allHidden ? hiddenCols.length : hiddenCols.length - lastVisible - 1;\n            updateIndex = hiddenCols.length - hiddenSeqLength;\n            if (updateIndex === 0) {\n                updateIndex = hiddenSeqLength - 1;\n            }\n            hiddenColumns[updateIndex] = false;\n            colSpans[updateIndex] = hiddenSeqLength;\n            hiddenCols.splice(lastVisible + 1, hiddenSeqLength);\n        }\n        while (hiddenCols.length && !hiddenCols[hiddenCols.length - 1]) {\n            hiddenCols.pop();\n        }\n        lastVisible = hiddenCols.lastIndexOf(false);\n        anyHidden = hiddenCols.some(hidden);\n        allHidden = hiddenCols.every(hidden);\n    }\n    return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n}\n//# sourceMappingURL=columns.js.map","/**\n * @hidden\n */\nvar normalizeSettings = function (_a) {\n    var _b = _a.buttonCount, buttonCount = _b === void 0 ? 10 : _b, _c = _a.info, info = _c === void 0 ? true : _c, _d = _a.type, type = _d === void 0 ? 'numeric' : _d, _e = _a.pageSizes, pageSizes = _e === void 0 ? undefined : _e, _f = _a.previousNext, previousNext = _f === void 0 ? true : _f;\n    return ({\n        buttonCount: buttonCount,\n        info: info,\n        pageSizes: pageSizes === true ? [5, 10, 20] : (pageSizes || undefined),\n        previousNext: previousNext,\n        type: type\n    });\n};\n/**\n * @hidden\n */\nexport var normalize = function (settings) {\n    return normalizeSettings(settings === true ? {} : settings);\n};\n//# sourceMappingURL=GridPagerSettings.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItem component that is used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItem = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItem, _super);\n    function GridColumnMenuItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onClick = function (e) {\n            if (_this.props.onClick) {\n                _this.props.onClick(e);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItem.prototype.render = function () {\n        var _a = this.props, title = _a.title, iconClass = _a.iconClass, selected = _a.selected;\n        return (React.createElement(\"div\", { onClick: this.onClick, className: \"k-columnmenu-item \" + (selected ? 'k-state-selected' : '') },\n            iconClass && React.createElement(\"span\", { className: \"k-icon \" + iconClass }),\n            title));\n    };\n    return GridColumnMenuItem;\n}(React.Component));\nexport { GridColumnMenuItem };\n//# sourceMappingURL=GridColumnMenuItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItemGroup that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemGroup = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItemGroup, _super);\n    function GridColumnMenuItemGroup() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItemGroup.prototype.render = function () {\n        var children = this.props.children;\n        return (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" }, children));\n    };\n    return GridColumnMenuItemGroup;\n}(React.Component));\nexport { GridColumnMenuItemGroup };\n//# sourceMappingURL=GridColumnMenuItemGroup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, sortAscending, sortDescending } from '../messages';\n/**\n * @hidden\n */\nvar ASC_DIR = 'asc';\n/**\n * @hidden\n */\nvar DESC_DIR = 'desc';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n    true: {\n        'asc': { 'asc': '', 'desc': 'desc' },\n        'desc': { 'asc': 'asc', 'desc': '' },\n        '': { 'asc': 'asc', 'desc': 'desc' }\n    },\n    false: {\n        'asc': { 'asc': 'asc', 'desc': 'desc' },\n        'desc': { 'asc': 'asc', 'desc': 'desc' },\n        '': { 'asc': 'asc', 'desc': 'desc' }\n    }\n};\n/**\n * @hidden\n */\nvar sortIndex = function (field, sort) {\n    if (!sort) {\n        return -1;\n    }\n    return sort.findIndex(function (s) { return s.field === field; });\n};\n/**\n * @hidden\n */\nvar sortedAsc = function (sortedIndex, sort) {\n    return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === ASC_DIR);\n};\n/**\n * @hidden\n */\nvar sortedDesc = function (sortedIndex, sort) {\n    return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === DESC_DIR);\n};\n/**\n * @example\n * ```jsx-no-run\n * class ColumnMenu extends React.Component {\n *     render() {\n *         return (\n *         <div>\n *             <GridColumnMenuSort {...this.props} />\n *         </div>);\n *     }\n * }\n *\n * class App extends React.PureComponent {\n *     constructor(props) {\n *         super(props);\n *\n *         this.state = this.createAppState({\n *             take: 10,\n *             skip: 0\n *         });\n *     }\n *\n *     createAppState(dataState) {\n *         return {\n *             result: process(products.slice(0), dataState),\n *             dataState: dataState\n *         };\n *     }\n *\n *     dataStateChange = (event) => {\n *         this.setState(this.createAppState(event.data));\n *     }\n *\n *     render() {\n *         return (\n *             <div>\n *                 <Grid\n *                     data={this.state.result}\n *                     {...this.state.dataState}\n *                     onDataStateChange={this.dataStateChange}\n *                     sortable={true}\n *                     pageable={true}\n *                 >\n *                     <Column field=\"ProductID\" title=\"Product ID\" columnMenu={ColumnMenu}/>\n *                     <Column field=\"ProductName\" />\n *                 </Grid>\n *                 <br />\n *             </div>\n *         );\n *     }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuSort = /** @class */ (function (_super) {\n    __extends(GridColumnMenuSort, _super);\n    function GridColumnMenuSort() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.onAscClick = function (e) {\n            _this.onSort(e, ASC_DIR);\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onDescClick = function (e) {\n            _this.onSort(e, DESC_DIR);\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuSort.prototype.onSort = function (e, selectedDir) {\n        e.preventDefault();\n        if (!this.props.onSortChange) {\n            return;\n        }\n        var _a = this.props, column = _a.column, sortable = _a.sortable, sort = _a.sort;\n        var _b = normalize(sortable || false, false), allowUnsort = _b.allowUnsort, mode = _b.mode;\n        var oldDescriptor = (sort || []).filter(function (d) { return d.field === column.field; })[0];\n        var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''][selectedDir];\n        var newDescriptor = (mode === 'single') ?\n            [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n        if (dir !== '' && column.field) {\n            newDescriptor.push({ field: column.field, dir: dir });\n        }\n        this.props.onSortChange(newDescriptor, e);\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuSort.prototype.render = function () {\n        var _a = this.props, sort = _a.sort, column = _a.column;\n        var currentSortIndex = sortIndex(column.field, sort);\n        var localizationService = provideLocalizationService(this);\n        return (React.createElement(GridColumnMenuItemGroup, null,\n            React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortAscending, messages[sortAscending]), iconClass: 'k-i-sort-asc-sm', selected: sortedAsc(currentSortIndex, sort), onClick: this.onAscClick }),\n            React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortDescending, messages[sortDescending]), iconClass: 'k-i-sort-desc-sm', selected: sortedDesc(currentSortIndex, sort), onClick: this.onDescClick })));\n    };\n    // tslint:disable:max-line-length\n    /**\n     * Can be used to check if sorting is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active sort indicators.\n     */\n    // tslint:enable:max-line-length\n    GridColumnMenuSort.active = function (field, sort) {\n        var currentSortIndex = sortIndex(field, sort);\n        return sortedDesc(currentSortIndex, sort) || sortedAsc(currentSortIndex, sort);\n    };\n    return GridColumnMenuSort;\n}(React.Component));\nexport { GridColumnMenuSort };\nregisterForIntl(GridColumnMenuSort);\nregisterForLocalization(GridColumnMenuSort);\n//# sourceMappingURL=GridColumnMenuSort.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * The GridColumnMenuItemContent that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemContent = /** @class */ (function (_super) {\n    __extends(GridColumnMenuItemContent, _super);\n    function GridColumnMenuItemContent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuItemContent.prototype.render = function () {\n        return (React.createElement(\"div\", { className: 'k-columnmenu-item-content' },\n            React.createElement(Reveal, { style: { position: 'relative', display: 'block' } }, this.props.show ? this.props.children : null)));\n    };\n    return GridColumnMenuItemContent;\n}(React.Component));\nexport { GridColumnMenuItemContent };\n//# sourceMappingURL=GridColumnMenuItemContent.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterCell = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilterCell, _super);\n    function GridColumnMenuFilterCell(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOperatorEditor = function () {\n            if (_this.props.filterType === 'boolean') {\n                return;\n            }\n            var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n            return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, data: _this.props.operators, textField: \"text\" }));\n        };\n        _this.inputChange = _this.inputChange.bind(_this);\n        _this.operatorChange = _this.operatorChange.bind(_this);\n        _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilterCell.prototype.render = function () {\n        return (React.createElement(\"div\", null,\n            this.renderOperatorEditor(),\n            this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues)));\n    };\n    GridColumnMenuFilterCell.prototype.inputChange = function (value, e) {\n        cellInputChange(value, e, this.props);\n    };\n    GridColumnMenuFilterCell.prototype.operatorChange = function (event) {\n        cellOperatorChange(event, this.props.value, this.props.onChange);\n    };\n    GridColumnMenuFilterCell.prototype.boolDropdownChange = function (event) {\n        cellBoolDropdownChange(event, this.props.onChange);\n    };\n    GridColumnMenuFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n        var _this = this;\n        switch (filterType) {\n            case 'numeric':\n                return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, rangeOnEnter: false }));\n            case 'date':\n                return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n            case 'boolean':\n                var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n                return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n            default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n        }\n    };\n    return GridColumnMenuFilterCell;\n}(React.Component));\nexport { GridColumnMenuFilterCell };\n//# sourceMappingURL=GridColumnMenuFilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuFilterCell } from './GridColumnMenuFilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterUI = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilterUI, _super);\n    function GridColumnMenuFilterUI() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GridColumnMenuFilterUI.prototype.render = function () {\n        var _a = this.props, firstFilterProps = _a.firstFilterProps, hideSecondFilter = _a.hideSecondFilter, secondFilterProps = _a.secondFilterProps, logicData = _a.logicData, logicValue = _a.logicValue, onLogicChange = _a.onLogicChange;\n        return (React.createElement(\"div\", null,\n            React.createElement(GridColumnMenuFilterCell, __assign({}, firstFilterProps)),\n            !hideSecondFilter && (React.createElement(\"div\", null,\n                React.createElement(DropDownList, { data: logicData, value: logicValue, onChange: onLogicChange, className: 'k-filter-and', textField: \"text\" }),\n                React.createElement(GridColumnMenuFilterCell, __assign({}, secondFilterProps))))));\n    };\n    return GridColumnMenuFilterUI;\n}(React.Component));\nexport { GridColumnMenuFilterUI };\n//# sourceMappingURL=GridColumnMenuFilterUI.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { operatorMap, getDefaultOperator, filterLogicList, defaultHideSecondFilter, booleanFilterValues, getFilterType } from '../filterCommon';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle } from '../messages';\nimport { GridColumnMenuFilterUI } from './GridColumnMenuFilterUI';\n/**\n * @hidden\n */\nexport var rootFilterOrDefault = function (rootFilter) {\n    return (rootFilter || { filters: [], logic: 'and' });\n};\n/**\n * @hidden\n */\nexport var filterGroupByField = function (field, filter) {\n    var rootFilter = rootFilterOrDefault(filter);\n    var compositeFilters = rootFilter.filters\n        .filter(function (f) {\n        if (isCompositeFilterDescriptor(f)) {\n            return f.filters &&\n                f.filters.length &&\n                f.filters.length <= 2 &&\n                !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\n        }\n        return false;\n    });\n    return compositeFilters[0] || null;\n};\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n *     render() {\n *         return (\n *         <div>\n *             <GridColumnMenuSort {...this.props} />\n *             <GridColumnMenuFilter {...this.props} />\n *         </div>);\n *     }\n * }\n *\n * class App extends React.PureComponent {\n *     constructor(props) {\n *         super(props);\n *\n *         this.state = this.createAppState({\n *             take: 10,\n *             skip: 0\n *         });\n *     }\n *\n *     createAppState(dataState) {\n *         return {\n *             result: process(products.slice(0), dataState),\n *             dataState: dataState\n *         };\n *     }\n *\n *     dataStateChange = (event) => {\n *         this.setState(this.createAppState(event.data));\n *     }\n *\n *     render() {\n *         return (\n *             <div>\n *                 <Grid\n *                     data={this.state.result}\n *                     {...this.state.dataState}\n *                     onDataStateChange={this.dataStateChange}\n *                     sortable={true}\n *                     pageable={true}\n *                 >\n *                     <Column field=\"ProductID\" title=\"Product ID\" />\n *                     <Column field=\"ProductName\" columnMenu={TextColumnMenu} />\n *                 </Grid>\n *                 <br />\n *             </div>\n *         );\n *     }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuFilter = /** @class */ (function (_super) {\n    __extends(GridColumnMenuFilter, _super);\n    function GridColumnMenuFilter(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.isControlled = function () { return _this.props.expanded !== undefined; };\n        /**\n         * @hidden\n         */\n        _this.onFilterExpand = function () {\n            var isControlled = _this.isControlled();\n            var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n            if (_this.props.onExpandChange) {\n                _this.props.onExpandChange(nextValue);\n            }\n            if (!isControlled) {\n                _this.setState({\n                    expanded: nextValue\n                });\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.firstFilterChange = function (e) {\n            _this.filterChange(0, e);\n        };\n        /**\n         * @hidden\n         */\n        _this.secondFilterChange = function (e) {\n            _this.filterChange(1, e);\n        };\n        /**\n         * @hidden\n         */\n        _this.logicChange = function (e) {\n            _this.setState({\n                filterGroup: __assign({}, _this.state.filterGroup, { logic: e.target.value.operator })\n            });\n        };\n        /**\n         * @hidden\n         */\n        _this.clear = function (e) {\n            e.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var field = _this.props.column.field;\n            var rootFilter = rootFilterOrDefault(_this.props.filter);\n            var filterGroup = filterGroupByField(field, _this.props.filter);\n            var rootFilters = rootFilter.filters.filter(function (f) { return f !== filterGroup; });\n            if (!rootFilters.length) {\n                _this.props.onFilterChange(null, e);\n            }\n            else {\n                _this.props.onFilterChange(__assign({}, rootFilter, { filters: rootFilters }), e);\n            }\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.currentFilterGroup = function () {\n            return __assign({}, _this.state.filterGroup, { filters: _this.state\n                    .filterGroup\n                    .filters\n                    .filter(function (nf) {\n                    return (nf.value !== undefined && nf.value !== null && nf.value !== '') ||\n                        (nf.value === null && nf.operator);\n                }) });\n        };\n        /**\n         * @hidden\n         */\n        _this.submit = function (e) {\n            e.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var field = _this.props.column.field;\n            var rootFilter = rootFilterOrDefault(_this.props.filter);\n            var filterGroup = filterGroupByField(field, _this.props.filter);\n            var currentFilterGroup = _this.currentFilterGroup();\n            var updatedFilter = null;\n            if (filterGroup && currentFilterGroup.filters.length > 0) {\n                var rootFilters = rootFilter.filters.map(function (f) {\n                    if (f === filterGroup) {\n                        return currentFilterGroup;\n                    }\n                    return f;\n                });\n                updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n            }\n            else if (currentFilterGroup.filters.length === 0) {\n                var rootFilters = rootFilter\n                    .filters\n                    .filter(function (f) { return f !== filterGroup; });\n                if (rootFilters.length) {\n                    updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n                }\n            }\n            else {\n                updatedFilter = __assign({}, rootFilter, { filters: rootFilter.filters.concat([currentFilterGroup]) });\n            }\n            _this.props.onFilterChange(updatedFilter, e);\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        var filterGroup;\n        if (props.column && props.column.field) {\n            var filterType = getFilterType(props.column.filter);\n            var defaultOperator = getDefaultOperator(props.filterOperators, filterType);\n            filterGroup = filterGroupByField(props.column.field, props.filter);\n            filterGroup = filterGroup ? __assign({}, filterGroup, { filters: filterGroup.filters.map(function (f) {\n                    return __assign({}, f);\n                }) }) : {\n                logic: 'and',\n                filters: [\n                    { field: props.column.field, operator: defaultOperator },\n                    { field: props.column.field, operator: defaultOperator }\n                ]\n            };\n            if (filterGroup.filters.filter(function (x) { return x.field === props.column.field; }).length === 1) {\n                filterGroup.filters.splice(1, 0, { field: props.column.field, operator: defaultOperator });\n            }\n        }\n        _this.state = {\n            expanded: props.expanded || false,\n            filterGroup: filterGroup\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilter.prototype.removeGroup = function (group, rootFilter) {\n        var filters = rootFilter.filters.slice();\n        var groupIndex = filters\n            .findIndex(function (f) { return f === group; });\n        if (groupIndex > -1) {\n            filters.splice(groupIndex, 1);\n        }\n        return __assign({}, rootFilter, { filters: filters });\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilter.prototype.insertGroup = function (group, rootFilter) {\n        return __assign({}, rootFilter, { filters: [\n                group\n            ].concat(rootFilter.filters) });\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilter.prototype.filterChange = function (filterIndex, e) {\n        var filters = this.state.filterGroup.filters.map(function (f, i) {\n            if (i === filterIndex) {\n                return __assign({}, f, { value: e.value, operator: e.operator });\n            }\n            return f;\n        });\n        this.setState({\n            filterGroup: __assign({}, this.state.filterGroup, { filters: filters })\n        });\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuFilter.prototype.render = function () {\n        var _a = this.props, column = _a.column, filterUI = _a.filterUI, hideSecondFilter = _a.hideSecondFilter, filterOperators = _a.filterOperators;\n        if (!column || !column.field) {\n            return React.createElement(\"div\", null);\n        }\n        var filterType = getFilterType(column.filter);\n        var currentHideSecondFilter = hideSecondFilter !== undefined ?\n            hideSecondFilter : defaultHideSecondFilter[filterType];\n        var localizationService = provideLocalizationService(this);\n        var filters = this.state.filterGroup.filters;\n        var currentOperators = operatorMap(filterOperators[filterType], localizationService);\n        var booleanValues = operatorMap(booleanFilterValues, localizationService);\n        var firstFilterCellProps = {\n            field: column.field,\n            value: filters[0].value,\n            operator: filters[0].operator,\n            operators: currentOperators,\n            booleanValues: booleanValues,\n            onChange: this.firstFilterChange,\n            filterType: filterType\n        };\n        var secondFilterCellProps = {\n            field: column.field,\n            value: filters[1].value,\n            operator: filters[1].operator,\n            operators: currentOperators,\n            booleanValues: booleanValues,\n            onChange: this.secondFilterChange,\n            filterType: filterType\n        };\n        var filterLogic = this.state.filterGroup.logic;\n        var logicData = operatorMap(filterLogicList, localizationService);\n        var logicProps = {\n            value: logicData.find(function (item) { return item.operator === (filterLogic === null ? '' : filterLogic); }),\n            onChange: this.logicChange,\n            data: logicData\n        };\n        var FilterUI = filterUI;\n        var filterUIProps = {\n            firstFilterProps: firstFilterCellProps,\n            secondFilterProps: secondFilterCellProps,\n            logicData: logicProps.data,\n            logicValue: logicProps.value,\n            onLogicChange: logicProps.onChange,\n            hideSecondFilter: currentHideSecondFilter\n        };\n        var isFilterValid = this.currentFilterGroup().filters.length !== 0;\n        var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n        return (React.createElement(GridColumnMenuItemGroup, null,\n            React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', onClick: this.onFilterExpand }),\n            React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n                React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n                    React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear },\n                        React.createElement(\"div\", { className: 'k-filter-menu-container' },\n                            FilterUI ?\n                                React.createElement(FilterUI, __assign({}, filterUIProps)) :\n                                React.createElement(GridColumnMenuFilterUI, __assign({}, filterUIProps)),\n                            React.createElement(\"div\", { className: 'k-columnmenu-actions' },\n                                React.createElement(\"button\", { className: 'k-button', type: 'reset' }, localizationService\n                                    .toLanguageString(filterClearButton, messages[filterClearButton])),\n                                React.createElement(\"button\", { className: 'k-button k-primary', disabled: !isFilterValid }, localizationService\n                                    .toLanguageString(filterSubmitButton, messages[filterSubmitButton])))))))));\n    };\n    // tslint:disable:max-line-length\n    /**\n     * Can be used to check if filtering is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active filter indicators.\n     */\n    // tslint:enable:max-line-length\n    GridColumnMenuFilter.active = function (field, filter) {\n        return !!filterGroupByField(field, filter);\n    };\n    return GridColumnMenuFilter;\n}(React.Component));\nexport { GridColumnMenuFilter };\nregisterForLocalization(GridColumnMenuFilter);\n//# sourceMappingURL=GridColumnMenuFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { Checkbox } from '@progress/kendo-react-inputs';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle, searchPlaceholder, filterCheckAll } from '../messages';\nimport { filterBy } from '@progress/kendo-data-query';\n/**\n * @hidden\n */\nvar isArrayEqual = function (firstArray, secondArray) {\n    if (firstArray.length !== secondArray.length) {\n        return false;\n    }\n    return firstArray.every(function (ex, i) { return ex === secondArray[i]; });\n};\nvar GridColumnMenuCheckboxFilter = /** @class */ (function (_super) {\n    __extends(GridColumnMenuCheckboxFilter, _super);\n    function GridColumnMenuCheckboxFilter(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.isControlled = function () { return _this.props.expanded !== undefined; };\n        /**\n         * @hidden\n         */\n        _this.parseData = function (originalData, isUnique) {\n            var field = _this.props.column.field || '';\n            var data = originalData.map(function (item) { return item[field]; });\n            if (isUnique) {\n                return data.filter(function (item, index) { return data.indexOf(item) === index; });\n            }\n            return data;\n        };\n        /**\n         * @hidden\n         */\n        _this.getFilterIndex = function () {\n            var field = _this.props.column.field;\n            var currentFilter = _this.props.filter || { filters: [], logic: 'and' };\n            var compositeFilterIndex = currentFilter.filters.findIndex(function (filter) { return filter.filters && filter.filters[0].field === field; });\n            return compositeFilterIndex;\n        };\n        /**\n         * @hidden\n         */\n        _this.onFilterExpand = function () {\n            var isControlled = _this.isControlled();\n            var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n            if (_this.props.onExpandChange) {\n                _this.props.onExpandChange(nextValue);\n            }\n            if (!isControlled) {\n                _this.setState({\n                    expanded: nextValue\n                });\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleSearchChange = function (e) {\n            var filterExpression = {\n                logic: 'and',\n                filters: [\n                    { field: _this.props.column.field, operator: 'startswith', value: e.target.value, ignoreCase: true }\n                ]\n            };\n            _this.setState({\n                value: e.target.value,\n                data: _this.parseData(filterBy(_this.props.data || [], filterExpression), _this.props.uniqueData)\n            });\n        };\n        /**\n         * @hidden\n         */\n        _this.clear = function (e) {\n            e.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var updatedFilter = _this.state.currentFilter || null;\n            if (updatedFilter !== null) {\n                updatedFilter.filters.splice(_this.compositeFilterIndex, 1);\n                _this.props.onFilterChange(updatedFilter, e);\n            }\n            else {\n                _this.props.onFilterChange(null, e);\n            }\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.submit = function (e) {\n            e.preventDefault();\n            if (!_this.props.onFilterChange) {\n                return;\n            }\n            var updatedFilter = _this.state.currentFilter || null;\n            _this.props.onFilterChange(updatedFilter, e);\n            if (_this.props.onCloseMenu) {\n                _this.props.onCloseMenu();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.handleCheckBoxChange = function (e, value) {\n            var field = _this.props.column.field || '';\n            var newFilter = __assign({}, _this.state.currentFilter);\n            var filters = _this.state.currentFilter.filters.slice() || [];\n            var fieldFilters = [];\n            if (_this.compositeFilterIndex !== -1 && newFilter.filters[_this.compositeFilterIndex].filters) {\n                fieldFilters = newFilter.filters[_this.compositeFilterIndex].filters;\n            }\n            if (e.value && value === 'all') {\n                _this.state.data.forEach(function (item) {\n                    fieldFilters.push({ field: field, operator: 'eq', value: item });\n                });\n            }\n            else if (e.value) {\n                fieldFilters.push({ field: field, operator: 'eq', value: value });\n            }\n            else if (_this.state.currentFilter) {\n                var index = fieldFilters.findIndex(function (filter) { return filter.value === value; });\n                fieldFilters.splice(index, 1);\n            }\n            newFilter.logic = 'and';\n            if (_this.compositeFilterIndex !== -1) {\n                filters[_this.compositeFilterIndex] = {\n                    logic: 'or',\n                    filters: fieldFilters\n                };\n            }\n            else {\n                filters.push({\n                    logic: 'or',\n                    filters: fieldFilters\n                });\n            }\n            if (!e.value && value === 'all' || fieldFilters.length === 0) {\n                filters.splice(_this.compositeFilterIndex, 1);\n            }\n            newFilter.filters = filters;\n            _this.setState({ currentFilter: newFilter });\n        };\n        /**\n         * @hidden\n         */\n        _this.isAllSelected = function () {\n            var isAllChecked = false;\n            if (_this.state.currentFilter) {\n                var filters_1 = _this.state.currentFilter.filters.slice();\n                if (_this.compositeFilterIndex === -1) {\n                    return false;\n                }\n                isAllChecked = _this.state.data.every(function (item) {\n                    if (_this.compositeFilterIndex !== -1 && filters_1[_this.compositeFilterIndex].filters) {\n                        var index = filters_1[_this.compositeFilterIndex].filters.findIndex(function (filter) { return filter.value === item; });\n                        return index >= 0;\n                    }\n                    return false;\n                });\n                return isAllChecked;\n            }\n            return isAllChecked;\n        };\n        _this.compositeFilterIndex = _this.getFilterIndex();\n        _this.state = {\n            expanded: props.expanded || false,\n            value: '',\n            data: _this.parseData(_this.props.data, _this.props.uniqueData) || [],\n            dataFromProps: _this.parseData(_this.props.data, false) || [],\n            currentFilter: _this.props.filter || { filters: [], logic: 'and' }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    GridColumnMenuCheckboxFilter.prototype.componentDidUpdate = function () {\n        var field = this.props.column.field || '';\n        var data = this.props.data.map(function (item) { return item[field]; });\n        if (!isArrayEqual(data, this.state.dataFromProps)) {\n            this.setState({\n                data: data,\n                dataFromProps: data\n            });\n        }\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuCheckboxFilter.prototype.render = function () {\n        var _this = this;\n        var column = this.props.column;\n        if (!column || !column.field) {\n            return React.createElement(\"div\", null);\n        }\n        var localizationService = provideLocalizationService(this);\n        var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n        var filterValues = [];\n        if (this.state.currentFilter) {\n            var currentFilter = this.state.currentFilter.filters.slice();\n            this.compositeFilterIndex = currentFilter.findIndex(function (filter) {\n                if (filter.filters && filter.filters.length > 0) {\n                    return filter.filters[0].field === column.field;\n                }\n                return false;\n            });\n            if (this.compositeFilterIndex !== -1 && currentFilter[this.compositeFilterIndex].filters.length > 0) {\n                currentFilter[this.compositeFilterIndex].filters.forEach(function (filterItem) {\n                    if (filterItem.field === _this.props.column.field) {\n                        filterValues.push(filterItem.value);\n                    }\n                });\n            }\n        }\n        var searchBox = this.props.searchBox ?\n            React.createElement(this.props.searchBox, { value: this.state.value, onChange: this.handleSearchChange }) :\n            (React.createElement(\"div\", { className: \"k-textbox k-space-right\" },\n                React.createElement(\"input\", { placeholder: localizationService.toLanguageString(searchPlaceholder, messages[searchPlaceholder]), value: this.state.value, onChange: this.handleSearchChange }),\n                React.createElement(\"span\", { className: \"k-icon k-i-zoom\" })));\n        var uniqueFilterValues = filterValues.filter(function (item, index) { return filterValues.indexOf(item) === index; });\n        return (React.createElement(GridColumnMenuItemGroup, null,\n            React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', onClick: this.onFilterExpand }),\n            React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n                React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n                    React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear },\n                        React.createElement(\"div\", { className: 'k-filter-menu-container' },\n                            searchBox,\n                            React.createElement(\"ul\", { className: \"k-reset k-multicheck-wrap\" },\n                                React.createElement(\"li\", { className: \"k-item\" },\n                                    React.createElement(Checkbox, { label: localizationService.toLanguageString(filterCheckAll, messages[filterCheckAll]), onChange: function (e) { return _this.handleCheckBoxChange(e, 'all'); }, checked: this.isAllSelected() })),\n                                this.state.data.map(function (item, index) {\n                                    return (React.createElement(\"li\", { className: \"k-item\", key: index },\n                                        React.createElement(Checkbox, { label: String(item), onChange: function (e) { return _this.handleCheckBoxChange(e, item); }, checked: uniqueFilterValues.includes(item) })));\n                                })),\n                            React.createElement(\"div\", { className: 'k-columnmenu-actions' },\n                                React.createElement(\"button\", { className: 'k-button', type: 'reset' }, localizationService.toLanguageString(filterClearButton, messages[filterClearButton])),\n                                React.createElement(\"button\", { className: 'k-button k-primary' }, localizationService.toLanguageString(filterSubmitButton, messages[filterSubmitButton])))))))));\n    };\n    /**\n     * @hidden\n     */\n    GridColumnMenuCheckboxFilter.defaultProps = {\n        uniqueData: true\n    };\n    return GridColumnMenuCheckboxFilter;\n}(React.Component));\nexport { GridColumnMenuCheckboxFilter };\nregisterForLocalization(GridColumnMenuCheckboxFilter);\n//# sourceMappingURL=GridColumnMenuCheckboxFilter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n// tslint:disable:max-line-length\n/**\n * Represents the detail row class of the KendoReact Grid. Used to define custom details for each row. Can be applied for building the hierarchy. If `expandField` is set, the details for each row will be visible or hidden depending on the current data item and its `expandField` value.\n *\n * @example\n * ```jsx\n * class CustomGridDetailRow extends GridDetailRow {\n *     render() {\n *         const detailData = this.props.dataItem.MasterField2;\n *         return (\n *             <div>\n *               This is detail template with another grid inside it\n *               <Grid scrollable=\"none\" data={detailData} />\n *             </div>\n *         );\n *     }\n * }\n *\n * class App extends React.Component {\n *     constructor(props) {\n *         super(props);\n *         this.state = {\n *             data: [{MasterField1:'A1', MasterField2: [{DetailField1: 1, DetailField2: 2}]},\n *                   {MasterField1:'B1', MasterField2: [{DetailField1: 3, DetailField2: 4}]},\n *                   {MasterField1:'C1', MasterField2: [{DetailField1: 5, DetailField2: 6}]}]\n *         };\n *     }\n *     render() {\n *         return (\n *             <Grid\n *                  data={this.state.data}\n *                  detail={CustomGridDetailRow}\n *              >\n *              <GridColumn field=\"MasterField1\" />\n *             </Grid>\n *         );\n *     }\n * }\n * ReactDOM.render(\n *     <App />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridDetailRow = /** @class */ (function (_super) {\n    __extends(GridDetailRow, _super);\n    function GridDetailRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridDetailRow.prototype.render = function () {\n        return null;\n    };\n    return GridDetailRow;\n}(React.Component));\nexport { GridDetailRow };\n//# sourceMappingURL=GridDetailRow.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * Represents the GridToolbar component.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *     constructor(props) {\n *         super(props);\n *         this.state = {\n *             data: [{'Column1':'A1', 'Column2':'A2'},\n *                   {'Column1':'B1', 'Column2':'B2'},\n *                   {'Column1':'C1', 'Column2':'C2'}]\n *         };\n *         this.customClick = this.customClick.bind(this);\n *     }\n *\n *     customClick() {\n *         alert(\"Custom handler in custom toolbar\");\n *     }\n *     render() {\n *         return (\n *             <Grid data={this.state.data}>\n *                 <GridToolbar>\n *                     <button\n *                         title=\"Click\"\n *                         className=\"k-button k-primary\"\n *                         onClick={this.customClick}\n *                     >Click\n *                     </button>\n *                 </GridToolbar>\n *             </Grid>\n *         );\n *     }\n * }\n * ReactDOM.render(\n *     <App />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\nvar GridToolbar = /** @class */ (function (_super) {\n    __extends(GridToolbar, _super);\n    function GridToolbar() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    GridToolbar.prototype.render = function () {\n        return (React.createElement(\"div\", { className: \"k-header k-grid-toolbar\" }, this.props.children));\n    };\n    /**\n     * @hidden\n     */\n    GridToolbar.displayName = 'KendoReactGridToolbar';\n    return GridToolbar;\n}(React.Component));\nexport { GridToolbar };\n//# sourceMappingURL=GridToolbar.js.map","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getListItems } from '../../../actions/dashboard';\nimport Select from 'react-select';\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\n\nclass EnumList extends Component {\n    componentDidMount() {\n        const { component } = this.props;\n        if(this.props.item.options) {\n            getListItems(this.props.item.options.url.replace('http://localhost:8080/application/', ''), this.props.item.recid)\n        } else {\n            if(component.parentValues) {\n                getListItems(this.props.item.optionsString.replace('@objectId@', component.parentSelectedItems[0]).replace('@type@', component.parentValues.type).replace('@action@', 'list'), this.props.item.recid)\n            }\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.item.options && this.props.item.options.url !== prevProps.item.options.url) {\n            getListItems(this.props.item.options.url.replace('http://localhost:8080/application/', ''), this.props.item.recid)\n        }\n    }\n\n    render() {\n        const { item, onChange, checkValid, returnOptions, values } =  this.props;\n        const listItems = (item.optionValues) ? item.optionValues : [];\n        let refArray = [];\n        if(item.type === 'grid') {\n            refArray = item.typeReference.replace('{', '').replace('}', '').split(\",\");\n        }\n        return (\n            <div className=\"form-group\">\n                <Select\n                    className={(checkValid) ? 'not-valid-input' : ''}\n                    isMulti\n                    options={returnOptions(listItems, item)}\n                    value={returnOptions(values, item)}\n                    placeholder=\"\"\n                    onChange={(val) => {\n                        const items = [];\n                        val.map((value) => {\n                            items.push(listItems.find((c) => c.recid === value.value));\n                            return items;\n                        });\n                        onChange(items, item.name)\n                    }}\n                    isDisabled={item.readonly}\n                    maxMenuHeight={100}\n                />\n                {(item.type === 'grid') ? (\n                    <div>\n                        <br/>\n                        <Grid\n                            data={values}\n                        >\n                            {refArray.map((column) => (\n                                <Column\n                                    key={column}\n                                    field={column}\n                                    title={column}\n                                />\n                            ))}\n                        </Grid>\n                    </div>\n                ) : (null)}\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\nexport default connect(mapDispatchToProps)(EnumList);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getSearchItems } from '../../../actions/dashboard';\n\nclass SearchList extends Component {\n\n    constructor(props) {\n        super(props);\n\n        this.state = {\n            displayResults: false,\n            searchValue: '',\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        const {value, parentValue} = this.props;\n        if(prevProps.value !== value) {\n            if(value === '') {\n                if(parentValue) {\n                    this.setState({searchValue: ''});\n                }\n            } else {\n                this.setState({searchValue: value});\n            }\n        }\n    }\n\n    getSearchItems = (value) => {\n        const { parentValue } = this.props;\n        if(parentValue && parentValue !== '') {\n            getSearchItems(this.props.item.options.url.replace('http://localhost:8080/application/', '').replace('@id@', parentValue.recid)+'&request={\"search\":\"'+value+'\",\"max\":\"'+this.props.item.options.cacheMax+'\"}', this.props.item.recid);\n        } else {\n            getSearchItems(this.props.item.options.url.replace('http://localhost:8080/application/', '')+'&request={\"search\":\"'+value+'\",\"max\":\"'+this.props.item.options.cacheMax+'\"}', this.props.item.recid);\n        }\n        this.setState({\n            searchValue: value,\n            displayResults: true\n        })\n    }\n\n    selectItem = (searchValue) => {\n        this.props.onChange(searchValue, this.props.item.name);\n        this.setState({\n            searchValue: searchValue.text,\n            displayResults: false,\n        })\n    }\n\n    render() {\n        const { item } = this.props;\n        const searchItems = (item.searchValues) ? item.searchValues : [];\n        \n        return (\n            <div className=\"form-group search-list\">\n                <input\n                    className='form-control'\n                    type={item.type}\n                    name={item.name}\n                    value={this.state.searchValue ? this.state.searchValue : ''}\n                    onChange={(e) => this.getSearchItems(e.target.value)}\n                    disabled={item.readonly}\n                    placeholder=\"Type name in here\"\n                    autoComplete=\"off\"\n                />\n                {(this.state.displayResults) ? (\n                    <div className=\"result-list\">\n                        {searchItems.map((item, i) => (\n                            <p\n                                className=\"result-item\"\n                                onClick={() => this.selectItem(item)}\n                                key={i}\n                            >\n                                {item.text}\n                            </p>\n                        ))}\n                        {(searchItems.length === 0) ? (\n                            <p className=\"result-item\">\n                                No results found\n                            </p>\n                        ) : (\n                            null\n                        )}\n                    </div>\n                ) : (null)}\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\nexport default connect(mapDispatchToProps)(SearchList);\n","export default __webpack_public_path__ + \"assets/8f8f4eb80128c68d2535192a7b534b77.gif\";","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport Select from 'react-select';\nimport Datetime from 'react-datetime';\nimport Button from 'react-bootstrap/Button';\nimport Form from 'react-bootstrap/Form';\nimport { callMethodAction, getListItems } from '../../actions/dashboard';\nimport SelectList from './components/select-list';\nimport EnumList from './components/enum-list';\nimport SearchList from './components/search-list';\nimport UserSession from './../../components/utils/user-session';\nimport 'react-dropzone-uploader/dist/styles.css';\nimport Dropzone from 'react-dropzone-uploader';\nimport loading from '../../images/loading.gif';\nimport { EditorState, convertFromRaw } from 'draft-js';\nimport { Editor } from 'react-draft-wysiwyg';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport draftToMarkdown from 'draftjs-to-markdown';\nimport moment from 'moment';\n\nconst content = {\"entityMap\":{},\"blocks\":[{\"key\":\"637gr\",\"text\":\"Initialized from content state.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}]};\n\nclass RenderForm extends Component {\n\n    constructor(props) {\n        super(props);\n        const {formValues} = this.props;\n\n        this.user = UserSession.getUserData();\n\n        const contentState = convertFromRaw(content);\n\n        this.state = {\n            formValues: formValues ? formValues : {},\n            validated: true,\n            button: {},\n            initialFiles: [],\n            file: undefined,\n            submit_button_disabled: false,\n            editorState: EditorState.createEmpty(),\n            contentState,\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        const {formValues, form} = this.props;\n        let newFormValues = formValues;\n        if(formValues !== prevProps.formValues && this.props.modalType === 'edit') {\n            if(!(Object.keys(formValues).length === 0 && formValues.constructor === Object)) {\n                form.map((item) => {\n                    if(item.type === 'grid') {\n                        setTimeout(() => {\n                            const values = formValues[item.name];\n                            const displayValues = [];\n                            values.map((value) => {\n                                displayValues.push(item.optionValues.find((c) => c.recid === value['$id']));\n                                return displayValues;\n                            })\n                            newFormValues[item.name] = displayValues;\n                            this.setState({formValues, newFormValues});\n                        }, 300)\n                    }\n                    return item;\n                })\n            }\n            this.setState({formValues, newFormValues});\n        }\n    }\n\n    handleClick = (itemName) => {\n        const {formValues} =  this.props;\n        const initialFiles = this.state.initialFiles;\n        if(formValues[itemName] && formValues[itemName].length > 0) {\n            formValues[itemName].forEach((image) => {\n                fetch(image.content).then(res => {\n                    res.arrayBuffer().then(buf => {\n                      const file = new File([buf], image.name, { type: 'image/png' });\n                      initialFiles.push(file)\n                      this.setState({ initialFiles })\n                    })\n                })\n            })\n        }\n    }\n\n    returnDisplayOptions = (options) => {\n        const optionArray = [];\n        if(options){\n            if(options instanceof Array) {\n                options.map((option) => {\n                    optionArray.push({\n                        value: option.id,\n                        label: option.text,\n                    });\n                    return null;\n                })\n            }\n            if(options instanceof Object) {\n                try {\n                    JSON.parse(options).map((option) => {\n                        optionArray.push({\n                            value: option.id,\n                            label: option.text,\n                        });\n                        return null;\n                    })\n                } catch (e) {\n                    console.log(e);\n                }\n            }\n        }\n        return optionArray;\n    }\n\n    returnDisplayOption(item) {\n        if(item) {\n            return item.id\n        }\n        return ''\n    }\n\n    changeMultiselectValues = (values, itemName) => {\n        const stateArray = [];\n        if(values) {\n            values.map((val) => {\n                stateArray.push({\n                    id: val.value,\n                    text: val.label\n                });\n                return null;\n            });\n        }\n        const formValues = this.state.formValues;\n        formValues[itemName] = stateArray;\n        this.setState({formValues});\n    }\n\n    changeMultiselect = (items, itemName) => {\n        const stateArray = [];\n        items.map((item) => {\n            stateArray.push(item);\n            return item;\n        })\n        const formValues = this.state.formValues;\n        formValues[itemName] = stateArray.length > 0 ? stateArray : null;\n        this.setState({formValues});\n    }\n\n    changeSelectValues = (value, itemName) => {\n        const formValues = this.state.formValues;\n        this.props.form.forEach((field) => {\n            if(field.group === itemName) {\n                let newUrl = '';\n                if(field.options) {\n                    newUrl = field.options.url.replace('http://localhost:8080/application/', '').replace('@id@', value.recid);\n                    if(field.readonly === 'true') {\n                        formValues[field.name] = null;\n                        setTimeout(() => {\n                            if(field.optionValues[0]) {\n                                formValues[field.name] = field.optionValues[0];\n                                this.setState({formValues}, () => {\n                                    this.changeSelectValues(field.optionValues[0].recid, field.name);\n                                });\n                            }\n                        }, 1000);\n                    }\n                } else {\n                    let objectType = field.group.charAt(0).toUpperCase() + field.group.slice(1);\n                    objectType = objectType.substring(0, objectType.length -1);\n                    newUrl = field.optionsString.replace('@objectId@', value.recid).replace('@type@', objectType).replace('@action@', 'list')\n                    setTimeout(() => {\n                        formValues[field.name] = field.optionValues[0][field.actionExecution];\n                        this.setState({formValues});\n                    }, 2000);\n                }\n                getListItems(newUrl, field.recid);\n            }\n        })\n        formValues[itemName] = value;\n        this.setState({\n            formValues\n        });\n    }\n\n    checkIsValid = (item) => {\n        const { validated, formValues } = this.state;\n        let is_valid = false;\n        if(item.required && !validated && (typeof formValues[item.name] === 'undefined' || formValues[item.name] === null || formValues[item.name] === '')) {\n            is_valid = true;\n        }\n\n        return is_valid;\n    }\n\n    buildFormData = (request, data, parentKey) => {\n        if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {\n          Object.keys(data).forEach(key => {\n            this.buildFormData(request, data[key], parentKey ? `${parentKey}[${key}]` : `[${key}]`);\n          });\n        } else {\n            const value = data === null ? '' : data;\n            let finalKey = parentKey;\n            if(parentKey.indexOf('$') > -1 && !this.props.component.focus === 'Contract') {\n                finalKey = parentKey.replace('$','');\n            }\n            request[`data${finalKey}`] = value;\n        }\n    }\n\n    jsonToFormData = (data, request) => {\n        this.buildFormData(request, data);\n\n        return request;\n    }\n\n    handleFormAction = (e, formValues, action, method, responseAction) => {\n        e.preventDefault();\n        const { form } = this.props;\n        let validated = true;\n        form.map((item) => {\n            if(item.required && item.type!== 'form') {\n                if(item.type !== 'button' && (!formValues[item.name] || formValues[item.name] === '')) {\n                    validated = false;\n                }\n            }\n            return null;\n        });\n        if(validated) {\n            this.setState({submit_button_disabled: true});\n            const { components } = this.props.dashboard.mainActivity;\n            const { component } = this.props;\n\n            let request = {};\n            let targetComponent = component;\n            if(component.type === 'form') {\n                targetComponent = components.find((c) => c.name === component.parentValues.name);\n            }\n            if(!targetComponent.parentValues) {\n                request.parentId = this.user.workspaceId;\n                request.parentType = 'Workspace';\n                if(this.props.modalType === 'list') {\n                    request.objectType = 'Workspace';\n                    request.id = this.user.workspaceId;\n                } else {\n                    request.objectType = component.focus;\n                    request.id = component.selectedItems[0];\n                }\n            } else {\n                request.parentId = !(action === 'method') ? targetComponent.parentSelectedItems ? targetComponent.parentSelectedItems[0] : this.user.workspaceId : component.recid;\n                request.parentType = !(action === 'method') ? targetComponent.parentValues ? targetComponent.parentValues.type : 'Workspace': component.focus;\n                request.objectType = !(action === 'method') ? targetComponent.focus : component.focus;\n                request.id = !(action === 'method') ? targetComponent.selectedItems[0] : component.recid;\n            }\n            request.actionExecution = action;\n            request.method = method;\n            this.jsonToFormData(formValues, request);\n            request.recid = targetComponent.selectedItems[0];\n            callMethodAction(request, responseAction, targetComponent.recid);\n            setTimeout(() => {\n                this.props.onUpdateForm();\n                this.setState({submit_button_disabled: false});\n            }, 500);\n        } else {\n            this.setState({validated});\n        }\n    }\n\n    handleChangeStatus = (meta, status, itemName, file) => {\n        if(status === 'done') {\n            const formValues = this.state.formValues;\n\n            formValues[itemName] = formValues[itemName] ? formValues[itemName] : [];\n            const reader = new FileReader();\n            reader.readAsDataURL(file[0].file);\n            reader.onload = function() {\n                const imgObject = {\n                    name: meta.name,\n                    content: reader.result,\n                };\n                formValues[itemName].push(imgObject);\n            }\n            this.setState({formValues});\n        }\n    }\n\n    getDataUri = (url, callback) => {\n        let image = new Image();\n        image.onload = function () {\n            let canvas = document.createElement('canvas');\n            canvas.width = this.naturalWidth;\n            canvas.height = this.naturalHeight;\n            canvas.getContext('2d').drawImage(this, 0, 0);\n            callback(canvas.toDataURL('image/png'))\n        };\n        image.src = url;\n    }\n\n    onContentStateChange = (contentState) => {\n        this.setState({\n          contentState,\n        });\n    };\n\n    render() {\n        const { form, modalType } =  this.props;\n        const { submit_button_disabled } = this.state;\n        const button = {};\n        let formHeight = null;\n        if(form) {\n            form.map((item) => {\n                if(item.type === 'button') {\n                    button.id = item.recid;\n                    button.label = item.label;\n                    button.action = item.actionExecution\n                    button.method = item.method\n                    button.response = item.actionResponse\n                }\n                if(item.type === 'form' && item.optionsString != null) {\n                    formHeight = JSON.parse(item.optionsString).maxHeight\n                }\n                return null;\n            });\n        }\n\n        return (\n            <Form\n                onSubmit={e => this.handleFormAction(e, this.state.formValues, button.action, button.method, button.response)}\n            >\n                {form ? (<div style={ formHeight ? {maxHeight:formHeight, overflowY: 'scroll'} : {}}>\n                    <div>{form.map((item) => (\n                        <div key={item.recid}>\n                        {(item.type !== 'button' && item.type !== 'form') ? (\n                            <label className={(this.checkIsValid(item)) ? 'not-valid' : ''}>\n                                {item.label} {(item.required) ? '*' : (null)}\n                            </label>\n                        ) : (null)}\n                        {(item.type === 'text' || item.type === 'password' || item.type === 'email' || item.type === 'number' || item.type === 'tel') ? (\n                            <div className=\"form-group\">\n                                <input\n                                    className={(this.checkIsValid(item)) ? 'form-control not-valid-input' : 'form-control'}\n                                    type={item.type}\n                                    name={item.name}\n                                    defaultValue={this.state.formValues[item.name]}\n                                    onChange={(e) => {\n                                        e.preventDefault()\n                                        const formValues = this.state.formValues;\n                                        formValues[item.name] = e.target.value;\n                                        this.setState({\n                                            formValues\n                                        })\n                                        return false;\n                                    }}\n                                    disabled={(item.readonly === \"true\")}\n                                />\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'textarea' ) ? (\n                            <div className=\"form-group\">\n                                <textarea\n                                    className={(this.checkIsValid(item)) ? 'form-control not-valid-input' : 'form-control'}\n                                    name={item.name}\n                                    value={this.state.formValues[item.name]}\n                                    defaultValue={this.state.formValues[item.name]}\n                                    onChange={(e) => {\n                                        e.preventDefault()\n                                        const formValues = this.state.formValues;\n                                        formValues[item.name] = e.target.value;\n                                        this.setState({\n                                            formValues\n                                        })\n                                        return false;\n                                    }}\n                                    disabled={(item.readonly === \"true\")}\n                                ></textarea>\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'wysiwyg' ) ? (\n                            <div className=\"form-group\">\n                                <Editor\n                                    wrapperClassName=\"demo-wrapper\"\n                                    editorClassName=\"demo-editor\"\n                                    onContentStateChange={(e) => {\n                                        const formValues = this.state.formValues;\n                                        formValues[item.name] = draftToMarkdown(e);\n                                        this.setState({\n                                            formValues\n                                        })\n                                    }}\n                                />\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'checkbox' ) ? (\n                            <div className=\"form-group\">\n                                <input\n                                    type=\"checkbox\"\n                                    name={item.name}\n                                    defaultChecked={this.state.formValues[item.name]}\n                                    onChange={() => {\n                                        const formValues = this.state.formValues;\n                                        //const value = !formValues[item.name];\n                                        formValues[item.name] = !formValues[item.name];\n                                        this.setState({\n                                            formValues\n                                        })\n                                    }}\n                                    disabled={(item.readonly === \"true\")}\n                                />\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'datetime') ? (\n                            <div className=\"form-group\">\n                                <Datetime\n                                    className={(this.checkIsValid(item)) ? 'not-valid-input' : ''}\n                                    dateFormat=\"DD-MM-Y\"\n                                    timeFormat=\"HH:mm:ss\"\n                                    value={this.state.formValues[item.name] ? moment(this.state.formValues[item.name], 'DD-MM-YYYY HH:mm:ss').toDate() : null}\n                                    onChange={(result) => {\n                                        const formValues = this.state.formValues;\n                                        let formatted_date = moment(result._d).format(\"DD-MM-YYYY HH:mm:ss\");\n                                        formValues[item.name] = formatted_date;\n                                        this.setState({\n                                            formValues\n                                        })\n                                        return false;\n                                    }}\n                                />\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'date') ? (\n                            <div className=\"form-group\">\n                                <Datetime\n                                    className={(this.checkIsValid(item)) ? 'not-valid-input' : ''}\n                                    dateFormat=\"DD-MM-YYYY\"\n                                    timeFormat={false}\n                                    value={this.state.formValues[item.name]}\n                                    defaultValue={this.state.formValues[item.name]}\n                                    onChange={(result) => {\n                                        const date = result._d;\n                                        const formValues = this.state.formValues;\n                                        formValues[item.name] = moment(date).format(\"DD-MM-YYYY\");\n                                        this.setState({\n                                            formValues\n                                        })\n                                        return false;\n                                    }}\n                                    closeOnSelect\n                                    closeOnTab\n                                />\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'list') ? (\n                            (item.options.minLength !== '1') ? (\n                                <SelectList item={item} onChange={this.changeSelectValues} isDisabled={(item.readonly === 'true') ? true : false} value={this.returnDisplayOption(this.state.formValues[item.name])} />\n                            ) : (\n                                <SearchList item={item} onChange={this.changeSelectValues} parentValue={\n                                    (item.group) ? this.state.formValues[item.group] : ''\n                                } value={(this.state.formValues[item.name] && this.state.formValues[item.name].text ? this.state.formValues[item.name].text : '')}/>\n                            )\n                        ) : (null)}\n                        {(item.type === 'radio') ? (\n                            <div className=\"form-group\">\n\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'file') ? (\n                            <div className=\"form-group\">\n                                {(this.state.initialFiles.length === 0 && modalType === 'edit') ? (\n                                    <Button onClick={() => this.handleClick(item.name)}>Edit Files</Button>\n                                ) : (\n                                    <Dropzone\n                                        onChangeStatus={({ meta }, status, file) => this.handleChangeStatus(meta, status, item.name, file)}\n                                        accept=\"*\"\n                                        initialFiles={this.state.initialFiles}\n                                        disabled={(item.readonly === \"true\")}\n                                    />\n                                )}\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'enum') ? (\n                            <div className=\"form-group\">\n                                {(item.options && item.options.items) ? (\n                                    <Select\n                                        className={(this.checkIsValid(item)) ? 'not-valid-input' : ''}\n                                        isMulti\n                                        options={this.returnDisplayOptions(item.options.items, item)}\n                                        value={this.returnDisplayOptions(this.state.formValues[item.name], item)}\n                                        placeholder=\"\"\n                                        onChange={(val) => this.changeMultiselectValues(val, item.name)}\n                                        isDisabled={item.readonly}\n                                        maxMenuHeight={100}\n                                    />\n                                ) : (\n                                    <EnumList item={item} onChange={this.changeMultiselect} checkValid={this.checkIsValid(item)} returnOptions={this.returnDisplayOptions} values={this.state.formValues[item.name]} component={this.props.component}/>\n                                )}\n                            </div>\n                        ) : (null)}\n                        {(item.type === 'grid') ? (\n                            <div className=\"form-group\">\n                                <EnumList item={item} onChange={this.changeMultiselect} checkValid={this.checkIsValid(item)} returnOptions={this.returnDisplayOptions} values={this.state.formValues[item.name]} component={this.props.component}/>\n                            </div>\n                        ) : (null)}\n                        {(item.type !== 'button' && item.type !== 'form') ? (\n                            (this.checkIsValid(item)) ? (\n                                <span className=\"error-message\">This field is required</span>\n                            ) : (null)\n                        ) : (null) }\n                        </div>\n                    ))}</div>\n                    <div>\n                        <Button variant=\"primary\" type=\"submit\" className=\"submit-button\">\n                            {(submit_button_disabled) ? (\n                                <img src={loading} alt=\"loading\" className=\"loading-gif\"/>\n                            ) : (\n                                button.label\n                            )}\n                        </Button>\n                    </div>\n                </div>) : (null)}\n            </Form>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\nexport default connect(mapDispatchToProps)(RenderForm);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport Modal from 'react-bootstrap/Modal';\nimport RenderForm from '../../forms/render-form';\n\nclass FormModal extends Component {\n    render() {\n        const {form} =  this.props.dashboard.mainActivity;\n        const { component, modalType } = this.props;\n        let formTitle = '';\n        if(form) {\n            form.forEach((item) => {\n                if(item.type === 'form') {\n                    formTitle = item.label;\n                }\n            });\n        }\n        return (\n            <div>\n                {form ? (\n\n                    <Modal show={this.props.isOpen} onHide={this.props.onRequestClose} size={'lg'}>\n                        <Modal.Header closeButton>\n                            <Modal.Title>{formTitle}</Modal.Title>\n                        </Modal.Header>\n                        <Modal.Body>\n                            <RenderForm\n                                form={form}\n                                formValues={component.formFieldValuesResponse ? component.formFieldValuesResponse : {}}\n                                component={component}\n                                workspaceId={this.props.workspaceId}\n                                onUpdateForm={this.props.onUpdateForm}\n                                modalType={modalType}\n                            />\n                        </Modal.Body>\n                    </Modal>\n                ) : (null)}\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => {\n    return {\n        dashboard: state.dashboard,\n        config: state.config\n    }\n};\n\nexport default connect(mapDispatchToProps)(FormModal);","import React from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\n\nconst DeleteModal = (props)  => (\n    <div>\n        <Modal show={props.isOpen} onHide={props.onRequestClose}>\n            <Modal.Header closeButton>\n                <Modal.Title>Delete</Modal.Title>\n            </Modal.Header>\n            <Modal.Body>\n                <p>Are you sure you want to delete the item(s)</p>\n            </Modal.Body>\n            <Modal.Footer>\n                <Button variant=\"primary\" onClick={props.deleteItems}>\n                    Yes\n                </Button>\n                <Button variant=\"primary\" onClick={props.onRequestClose}>\n                    No\n                </Button>\n            </Modal.Footer>\n        </Modal>\n    </div>\n)\n\nexport default DeleteModal;","import React, { Component } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport Datetime from 'react-datetime';\nimport moment from 'moment';\n\nclass SearchModal extends Component {\n    constructor(props) {\n        super(props);\n\n        const searchVal = [];\n\n        this.props.searches.forEach((column) => {\n            if(!column.hidden) {\n                searchVal.push({\n                    field: column.field ,\n                    type: column.type,\n                    operator: (column.type === 'date' || column.type === 'datetime') ? 'is' : 'begins',\n                    value: '',\n                })\n            }\n        })\n\n        this.state = {\n            search: searchVal,\n            from: '',\n            to: '',\n            between: false,\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.search.length !== prevProps.search.length && prevProps.search.length !== 0) {\n            const searchVal = this.state.search;\n            searchVal.forEach((column) => {\n                column.operator = (column.type === 'date' || column.type === 'datetime') ? 'is' : 'begins';\n                column.value = '';\n            })\n\n            this.setState({\n                search: searchVal,\n            })\n        }\n    }\n\n    changeSearchOption = (column, event) => {\n        const search = this.state.search;\n        if(event.target.value === 'between') {\n            this.setState({between: true});\n        } else {\n            this.setState({between: false});\n        }\n        search.forEach((item) => {\n            if(item.field === column) {\n                item.operator = event.target.value\n            }\n        });\n        this.setState({search})\n    }\n\n    changeSearchValue = (column, value) => {\n        const search = this.state.search;\n        search.forEach((item) => {\n            if(item.field === column) {\n                if((item.type === 'date' || item.type === 'datetime') && item.operator === 'between') {\n                    let searchVal = [];\n                    searchVal.push(this.state.from);\n                    searchVal.push(this.state.to);\n                    item.value = searchVal;\n                } else {\n                    item.value = value;\n                }\n            }\n        });\n        this.setState({search}, () => this.props.onAdvancedSearch(this.state.search))\n    }\n\n    render() {\n        return (\n            <Modal size=\"lg\" show={this.props.isOpen} onHide={this.props.onRequestClose}>\n                <Modal.Header closeButton>\n                    <Modal.Title>Advanced Search</Modal.Title>\n                </Modal.Header>\n                <Modal.Body>\n                    <table className=\"search-table\">\n                        <tbody>\n                            {this.state.search.map((column) => (\n                                <tr key={column.field}>\n                                    <td className=\"search-name\">{column.field}</td>\n                                    <td className=\"search-type\">\n                                        {(column.type === 'date' || column.type === 'datetime') ? (\n                                            <select className=\"form-control\" onChange={(event) => this.changeSearchOption(column.field, event)} defaultValue={column.operator}>\n                                                <option value=\"is\">is</option>\n                                                <option value=\"between\">between</option>\n                                                <option value=\"less\">before</option>\n                                                <option value=\"more\">after</option>\n                                            </select>\n                                        ) : (\n                                            <select className=\"form-control\" onChange={(event) => this.changeSearchOption(column.field, event)} defaultValue={column.operator}>\n                                                <option value=\"is\">is</option>\n                                                <option value=\"begins\">begins</option>\n                                                <option value=\"contains\">contains</option>\n                                                <option value=\"ends\">ends</option>\n                                            </select>\n                                        )}\n                                    </td>\n                                    <td className=\"search-fields\">\n                                        {(column.type === 'text' || column.type === 'password' || column.type === 'email' || column.type === 'number' || column.type === 'tel') ? (\n                                            <div className=\"form-group\">\n                                                <input\n                                                    className=\"form-control\"\n                                                    type={column.type}\n                                                    name={column.name}\n                                                    value={column.value}\n                                                    onChange={(event) => this.changeSearchValue(column.field, event.target.value)}/>\n                                            </div>\n                                        ) : (null)}\n                                        {(column.type === 'date') ? (\n                                            <div className=\"form-group date-fields\">\n                                                <Datetime\n                                                    dateFormat=\"DD/MM/Y\"\n                                                    timeFormat={false}\n                                                    defaultValue={(column.operator === 'between') ? column.value[0] : column.value}\n                                                    onChange={(result) => {\n                                                        let formatted_date = (result._d.getMonth() + 1) + \"/\" + result._d.getDate() + \"/\" + result._d.getFullYear();\n                                                        this.setState({from: formatted_date}, () => {\n                                                            this.changeSearchValue(column.field, formatted_date);\n                                                        })\n                                                        return false;\n                                                    }}\n                                                />\n                                                {(this.state.between) ? (\n                                                    <span> - </span>\n                                                ) : (null)}\n                                                {(this.state.between) ? (\n                                                    <Datetime\n                                                        dateFormat=\"DD/MM/Y\"\n                                                        timeFormat={false}\n                                                        defaultValue={(column.operator === 'between') ? column.value[1] : column.value}\n                                                        onChange={(result) => {\n                                                            let formatted_date = (result._d.getMonth() + 1) + \"/\" + result._d.getDate() + \"/\" + result._d.getFullYear();\n                                                            this.setState({to: formatted_date}, () => {\n                                                                this.changeSearchValue(column.field, formatted_date);\n                                                            })\n                                                            return false;\n                                                        }}\n                                                    />\n                                                ) : (null)}\n                                            </div>\n                                        ) : (null)}\n                                        {(column.type === 'datetime') ? (\n                                            <div className=\"form-group date-fields\">\n                                                <Datetime\n                                                    dateFormat=\"DD-MM-Y\"\n                                                    timeFormat=\"HH:mm:ss\"\n                                                    defaultValue={(column.operator === 'between') ? column.value[0] : column.value}\n                                                    onChange={(result) => {\n                                                        let formatted_date = moment(result._d).format(\"DD-MM-YYYY HH:mm\");\n                                                        this.setState({from: formatted_date}, () => {\n                                                            this.changeSearchValue(column.field, formatted_date);\n                                                        })\n                                                        return false;\n                                                    }}\n                                                />\n                                                {(this.state.between) ? (\n                                                    <span> - </span>\n                                                ) : (null)}\n                                                {(this.state.between) ? (\n                                                    <Datetime\n                                                        dateFormat=\"DD-MM-Y\"\n                                                        timeFormat=\"HH:mm:ss\"\n                                                        defaultValue={(column.operator === 'between') ? column.value[1] : column.value}\n                                                        onChange={(result) => {\n                                                            let formatted_date = moment(result._d).format(\"DD-MM-YYYY HH:mm\");\n                                                            this.setState({to: formatted_date}, () => {\n                                                                this.changeSearchValue(column.field, formatted_date);\n                                                            })\n                                                            return false;\n                                                        }}\n                                                    />\n                                                ) : (null)}\n                                            </div>\n                                        ) : (null)}\n                                    </td>\n                                </tr>\n                            ))}\n                        </tbody>\n                    </table>\n                    <Button variant=\"primary\" type=\"submit\" className=\"submit-button\" onClick={this.props.searchFunc}>\n                        Advanced Search\n                    </Button>\n                </Modal.Body>\n            </Modal>\n        )\n    }\n}\n\nexport default SearchModal;","var matchesImpl;\nexport default function matches(node, selector) {\n  if (!matchesImpl) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n    matchesImpl = function matchesImpl(n, s) {\n      return nativeMatch.call(n, s);\n    };\n  }\n\n  return matchesImpl(node, selector);\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\nexport default function qsa(element, selector) {\n  return toArray(element.querySelectorAll(selector));\n}","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var handler = controlledValues[prop];\n      !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n      propTypes[prop] = readOnlyPropType(handler, displayName);\n    }\n  });\n  return propTypes;\n}\nexport function isProp(props, prop) {\n  return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n  var wasPropRef = useRef(propValue !== undefined);\n\n  var _useState = useState(defaultValue),\n      stateValue = _useState[0],\n      setState = _useState[1];\n\n  var isProp = propValue !== undefined;\n  var wasProp = wasPropRef.current;\n  wasPropRef.current = isProp;\n  /**\n   * If a prop switches from controlled to Uncontrolled\n   * reset its value to the defaultValue\n   */\n\n  if (!isProp && wasProp && stateValue !== defaultValue) {\n    setState(defaultValue);\n  }\n\n  return [isProp ? propValue : stateValue, useCallback(function (value) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (handler) handler.apply(void 0, [value].concat(args));\n    setState(value);\n  }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var _ref = result,\n        defaultValue = _ref[Utils.defaultKey(fieldName)],\n        propsValue = _ref[fieldName],\n        rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n\n    var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n        value = _useUncontrolledProp[0],\n        handler = _useUncontrolledProp[1];\n\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n *   if (!element) return\n *\n *   const calendar = new FullCalendar.Calendar(element)\n *\n *   return () => {\n *     calendar.destroy()\n *   }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n  return useState(null);\n}","import React from 'react';\nvar DropdownContext = React.createContext(null);\nexport default DropdownContext;","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n  var isMounted = useMounted();\n  return [state[0], useCallback(function (nextState) {\n    if (!isMounted()) return;\n    return state[1](nextState);\n  }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: element.offsetWidth,\n    height: element.offsetHeight\n  };\n}","export default function contains(parent, child) {\n  // $FlowFixMe: hasOwnProperty doesn't seem to work in tests\n  var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (isShadow) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView : window;\n  }\n\n  return node;\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n  Element); */\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n  HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nexport { isElement, isHTMLElement };","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe: assume body is always available\n  return (isElement(element) ? element.ownerDocument : element.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || // DOM Element detected\n    // $FlowFixMe: need a better way to handle this...\n    element.host || // ShadowRoot detected\n    // $FlowFixMe: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange !== 'auto') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n  return Math.max(min, Math.min(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n      _options$padding = options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n  state.modifiersData[name + \"#persistent\"] = {\n    padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: Math.round(x * dpr) / dpr || 0,\n    y: Math.round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive;\n\n  var _roundOffsets = roundOffsets(offsets),\n      x = _roundOffsets.x,\n      y = _roundOffsets.y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n    } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n    /*:: offsetParent = (offsetParent: Element); */\n\n\n    if (placement === top) {\n      sideY = bottom;\n      y -= offsetParent.clientHeight - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right;\n      x -= offsetParent.clientWidth - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n  var state = _ref3.state,\n      options = _ref3.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false\n    })));\n  }\n\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","export default function getBoundingClientRect(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    width: rect.width,\n    height: rect.height,\n    top: rect.top,\n    right: rect.right,\n    bottom: rect.bottom,\n    left: rect.left,\n    x: rect.left,\n    y: rect.top\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = getNodeName(scrollParent) === 'body';\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n  return Object.assign(Object.assign({}, rect), {}, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport contains from \"./contains.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(element);\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement);\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = Math.max(rect.top, accRect.top);\n    accRect.right = Math.min(rect.right, accRect.right);\n    accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n    accRect.left = Math.max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = element.ownerDocument.body;\n  var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = (variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements).filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  }); // $FlowFixMe: Flow seems to have problems with two array unions...\n\n  var overflows = placements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var _preventedOffset = within(_min, _offset, _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement);\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nexport * from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator();","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n      options: Object.assign(Object.assign({}, existing.options), current.options),\n      data: Object.assign(Object.assign({}, existing.data), current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n  defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\nvar initialPopperStyles = {\n  position: 'absolute',\n  top: '0',\n  left: '0',\n  opacity: '0',\n  pointerEvents: 'none'\n};\nvar initialArrowStyles = {}; // until docjs supports type exports...\n\nexport function toModifierMap(modifiers) {\n  var result = {};\n\n  if (!Array.isArray(modifiers)) {\n    return modifiers || result;\n  } // eslint-disable-next-line no-unused-expressions\n\n\n  modifiers == null ? void 0 : modifiers.forEach(function (m) {\n    result[m.name] = m;\n  });\n  return result;\n}\nexport function toModifierArray(map) {\n  if (map === void 0) {\n    map = {};\n  }\n\n  if (Array.isArray(map)) return map;\n  return Object.keys(map).map(function (k) {\n    map[k].name = k;\n    return map[k];\n  });\n}\n\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object}      options\n * @param {object=}     options.modifiers Popper.js modifiers\n * @param {boolean=}    options.enabled toggle the popper functionality on/off\n * @param {string=}     options.placement The popper element placement relative to the reference element\n * @param {string=}     options.strategy the positioning strategy\n * @param {boolean=}    options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=}   options.onCreate called when the popper is created\n * @param {function=}   options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\nfunction usePopper(referenceElement, popperElement, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$enabled = _ref.enabled,\n      enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n      _ref$placement = _ref.placement,\n      placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n      _ref$strategy = _ref.strategy,\n      strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n      _ref$eventsEnabled = _ref.eventsEnabled,\n      eventsEnabled = _ref$eventsEnabled === void 0 ? true : _ref$eventsEnabled,\n      userModifiers = _ref.modifiers,\n      popperOptions = _objectWithoutPropertiesLoose(_ref, [\"enabled\", \"placement\", \"strategy\", \"eventsEnabled\", \"modifiers\"]);\n\n  var popperInstanceRef = useRef();\n  var scheduleUpdate = useCallback(function () {\n    if (popperInstanceRef.current) {\n      popperInstanceRef.current.update();\n    }\n  }, []);\n\n  var _useSafeState = useSafeState(useState({\n    placement: placement,\n    scheduleUpdate: scheduleUpdate,\n    outOfBoundaries: false,\n    styles: initialPopperStyles,\n    arrowStyles: initialArrowStyles\n  })),\n      state = _useSafeState[0],\n      setState = _useSafeState[1];\n\n  var updateModifier = useMemo(function () {\n    return {\n      name: 'updateStateModifier',\n      enabled: true,\n      phase: 'afterWrite',\n      requires: ['computeStyles'],\n      fn: function fn(data) {\n        var _data$state$modifiers, _data$state$styles, _data$state$styles2;\n\n        setState({\n          scheduleUpdate: scheduleUpdate,\n          outOfBoundaries: !!((_data$state$modifiers = data.state.modifiersData.hide) == null ? void 0 : _data$state$modifiers.isReferenceHidden),\n          placement: data.state.placement,\n          styles: _extends({}, (_data$state$styles = data.state.styles) == null ? void 0 : _data$state$styles.popper),\n          arrowStyles: _extends({}, (_data$state$styles2 = data.state.styles) == null ? void 0 : _data$state$styles2.arrow),\n          state: data.state\n        });\n      }\n    };\n  }, [scheduleUpdate, setState]);\n  var modifiers = toModifierArray(userModifiers);\n  var eventsModifier = modifiers.find(function (m) {\n    return m.name === 'eventListeners';\n  });\n\n  if (!eventsModifier && eventsEnabled) {\n    eventsModifier = {\n      name: 'eventListeners',\n      enabled: true\n    };\n    modifiers = [].concat(modifiers, [eventsModifier]);\n  } // A placement difference in state means popper determined a new placement\n  // apart from the props value. By the time the popper element is rendered with\n  // the new position Popper has already measured it, if the place change triggers\n  // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n  useEffect(function () {\n    scheduleUpdate();\n  }, [state.placement, scheduleUpdate]);\n  useEffect(function () {\n    if (!popperInstanceRef.current || !enabled) return;\n    popperInstanceRef.current.setOptions({\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [updateModifier])\n    }); // intentionally NOT re-running on new modifiers\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [strategy, placement, eventsModifier.enabled, updateModifier, enabled]);\n  useEffect(function () {\n    if (!enabled || referenceElement == null || popperElement == null) {\n      return undefined;\n    }\n\n    popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends(_extends({}, popperOptions), {}, {\n      placement: placement,\n      strategy: strategy,\n      modifiers: [].concat(modifiers, [updateModifier])\n    }));\n    return function () {\n      if (popperInstanceRef.current != null) {\n        popperInstanceRef.current.destroy();\n        popperInstanceRef.current = undefined;\n        setState(function (s) {\n          return _extends(_extends({}, s), {}, {\n            styles: initialPopperStyles,\n            arrowStyles: initialArrowStyles\n          });\n        });\n      }\n    }; // This is only run once to _create_ the popper\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [enabled, referenceElement, popperElement]);\n  return state;\n}\n\nexport default usePopper;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n  return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n\n  return componentOrElement != null ? componentOrElement : null;\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n  return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref  The element boundary\n * @param {function} onRootClose\n * @param {object=}  options\n * @param {boolean=} options.disabled\n * @param {string=}  options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      disabled = _ref.disabled,\n      _ref$clickTrigger = _ref.clickTrigger,\n      clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n  var preventMouseRootCloseRef = useRef(false);\n  var onClose = onRootClose || noop;\n  var handleMouseCapture = useCallback(function (e) {\n    var currentTarget = getRefTarget(ref);\n    warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n    preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target);\n  }, [ref]);\n  var handleMouse = useEventCallback(function (e) {\n    if (!preventMouseRootCloseRef.current) {\n      onClose(e);\n    }\n  });\n  var handleKeyUp = useEventCallback(function (e) {\n    if (e.keyCode === escapeKeyCode) {\n      onClose(e);\n    }\n  });\n  useEffect(function () {\n    if (disabled || ref == null) return undefined;\n    var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n    // avoid false positives in the contains() check below if the target DOM\n    // element is removed in the React mouse callback.\n\n    var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n    var removeMouseListener = listen(doc, clickTrigger, handleMouse);\n    var removeKeyupListener = listen(doc, 'keyup', handleKeyUp);\n    var mobileSafariHackListeners = [];\n\n    if ('ontouchstart' in doc.documentElement) {\n      mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n        return listen(el, 'mousemove', noop);\n      });\n    }\n\n    return function () {\n      removeMouseCaptureListener();\n      removeMouseListener();\n      removeKeyupListener();\n      mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n  }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper, { toModifierMap } from './usePopper';\nimport useRootClose from './useRootClose';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object}  options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string}  options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object}  options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n  var _modifiers$arrow;\n\n  if (options === void 0) {\n    options = {};\n  }\n\n  var context = useContext(DropdownContext);\n\n  var _useCallbackRef = useCallbackRef(),\n      arrowElement = _useCallbackRef[0],\n      attachArrowRef = _useCallbackRef[1];\n\n  var hasShownRef = useRef(false);\n  var _options = options,\n      flip = _options.flip,\n      rootCloseEvent = _options.rootCloseEvent,\n      _options$popperConfig = _options.popperConfig,\n      popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n      _options$usePopper = _options.usePopper,\n      shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n  var show = (context == null ? void 0 : context.show) == null ? options.show : context.show;\n  var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n  if (show && !hasShownRef.current) {\n    hasShownRef.current = true;\n  }\n\n  var handleClose = function handleClose(e) {\n    context == null ? void 0 : context.toggle(false, e);\n  };\n\n  var _ref = context || {},\n      drop = _ref.drop,\n      setMenu = _ref.setMenu,\n      menuElement = _ref.menuElement,\n      toggleElement = _ref.toggleElement;\n\n  var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n  if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n  var modifiers = toModifierMap(popperConfig.modifiers);\n  var popper = usePopper(toggleElement, menuElement, _extends(_extends({}, popperConfig), {}, {\n    placement: placement,\n    enabled: !!(shouldUsePopper && show),\n    modifiers: _extends(_extends({}, modifiers), {}, {\n      eventListeners: {\n        enabled: !!show\n      },\n      arrow: _extends(_extends({}, modifiers.arrow), {}, {\n        enabled: !!arrowElement,\n        options: _extends(_extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options), {}, {\n          element: arrowElement\n        })\n      }),\n      flip: _extends({\n        enabled: !!flip\n      }, modifiers.flip)\n    })\n  }));\n  var menu;\n  var menuProps = {\n    ref: setMenu || noop,\n    'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n  };\n  var childArgs = {\n    show: show,\n    alignEnd: alignEnd,\n    hasShown: hasShownRef.current,\n    close: handleClose\n  };\n\n  if (!shouldUsePopper) {\n    menu = _extends(_extends({}, childArgs), {}, {\n      props: menuProps\n    });\n  } else {\n    menu = _extends(_extends(_extends({}, popper), childArgs), {}, {\n      props: _extends(_extends({}, menuProps), {}, {\n        style: popper.styles\n      }),\n      arrowProps: {\n        ref: attachArrowRef,\n        style: popper.arrowStyles\n      }\n    });\n  }\n\n  useRootClose(menuElement, handleClose, {\n    clickTrigger: rootCloseEvent,\n    disabled: !(menu && show)\n  });\n  return menu;\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: PropTypes.bool,\n  usePopper: PropTypes.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: PropTypes.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n  usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n  var children = _ref2.children,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n  var args = useDropdownMenu(options);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, args.hasShown ? children(args) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n  var _ref = useContext(DropdownContext) || {},\n      _ref$show = _ref.show,\n      show = _ref$show === void 0 ? false : _ref$show,\n      _ref$toggle = _ref.toggle,\n      toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n      setToggle = _ref.setToggle;\n\n  return [{\n    ref: setToggle || noop,\n    'aria-haspopup': true,\n    'aria-expanded': !!show\n  }, {\n    show: show,\n    toggle: toggle\n  }];\n}\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n  var children = _ref2.children;\n\n  var _useDropdownToggle = useDropdownToggle(),\n      props = _useDropdownToggle[0],\n      _useDropdownToggle$ = _useDropdownToggle[1],\n      show = _useDropdownToggle$.show,\n      toggle = _useDropdownToggle$.toggle;\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    show: show,\n    toggle: toggle,\n    props: props\n  }));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: PropTypes.func.isRequired,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: PropTypes.string,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: PropTypes.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: PropTypes.bool,\n\n  /**\n   * Sets the initial show position of the Dropdown.\n   */\n  defaultShow: PropTypes.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```ts static\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: PropTypes.func\n};\n\n/**\n * @displayName Dropdown\n */\nfunction Dropdown(_ref) {\n  var drop = _ref.drop,\n      alignEnd = _ref.alignEnd,\n      defaultShow = _ref.defaultShow,\n      rawShow = _ref.show,\n      rawOnToggle = _ref.onToggle,\n      _ref$itemSelector = _ref.itemSelector,\n      itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n      focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n      children = _ref.children;\n  var forceUpdate = useForceUpdate();\n\n  var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n      show = _useUncontrolledProp[0],\n      onToggle = _useUncontrolledProp[1];\n\n  var _useCallbackRef = useCallbackRef(),\n      toggleElement = _useCallbackRef[0],\n      setToggle = _useCallbackRef[1]; // We use normal refs instead of useCallbackRef in order to populate the\n  // the value as quickly as possible, otherwise the effect to focus the element\n  // may run before the state value is set\n\n\n  var menuRef = useRef(null);\n  var menuElement = menuRef.current;\n  var setMenu = useCallback(function (ref) {\n    menuRef.current = ref; // ensure that a menu set triggers an update for consumers\n\n    forceUpdate();\n  }, [forceUpdate]);\n  var lastShow = usePrevious(show);\n  var lastSourceEvent = useRef(null);\n  var focusInDropdown = useRef(false);\n  var toggle = useCallback(function (event) {\n    onToggle(!show, event);\n  }, [onToggle, show]);\n  var context = useMemo(function () {\n    return {\n      toggle: toggle,\n      drop: drop,\n      show: show,\n      alignEnd: alignEnd,\n      menuElement: menuElement,\n      toggleElement: toggleElement,\n      setMenu: setMenu,\n      setToggle: setToggle\n    };\n  }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n  if (menuElement && lastShow && !show) {\n    focusInDropdown.current = menuElement.contains(document.activeElement);\n  }\n\n  var focusToggle = useEventCallback(function () {\n    if (toggleElement && toggleElement.focus) {\n      toggleElement.focus();\n    }\n  });\n  var maybeFocusFirst = useEventCallback(function () {\n    var type = lastSourceEvent.current;\n    var focusType = focusFirstItemOnShow;\n\n    if (focusType == null) {\n      focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n    }\n\n    if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var first = qsa(menuRef.current, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  });\n  useEffect(function () {\n    if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n      focusInDropdown.current = false;\n      focusToggle();\n    } // only `show` should be changing\n  }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n  useEffect(function () {\n    lastSourceEvent.current = null;\n  });\n\n  var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!menuRef.current) return null;\n    var items = qsa(menuRef.current, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  var handleKeyDown = function handleKeyDown(event) {\n    var key = event.key;\n    var target = event.target; // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n    // in inscrutability\n\n    var isInput = /input|textarea/i.test(target.tagName);\n\n    if (isInput && (key === ' ' || key !== 'Escape' && menuRef.current && menuRef.current.contains(target))) {\n      return;\n    }\n\n    lastSourceEvent.current = event.type;\n\n    switch (key) {\n      case 'ArrowUp':\n        {\n          var next = getNextFocusedChild(target, -1);\n          if (next && next.focus) next.focus();\n          event.preventDefault();\n          return;\n        }\n\n      case 'ArrowDown':\n        event.preventDefault();\n\n        if (!show) {\n          toggle(event);\n        } else {\n          var _next = getNextFocusedChild(target, 1);\n\n          if (_next && _next.focus) _next.focus();\n        }\n\n        return;\n\n      case 'Escape':\n      case 'Tab':\n        onToggle(false, event);\n        break;\n\n      default:\n    }\n  };\n\n  return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n    value: context\n  }, children({\n    props: {\n      onKeyDown: handleKeyDown\n    }\n  }));\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are stricting equal to the last state value\n  var _useReducer = useReducer(function (state) {\n    return !state;\n  }, false),\n      dispatch = _useReducer[1];\n\n  return dispatch;\n}","import React from 'react';\nvar SelectableContext = React.createContext();\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\nexport default SelectableContext;","import React from 'react';\nvar NavContext = React.createContext(null);\nexport default NavContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SafeAnchor from './SafeAnchor';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nvar defaultProps = {\n  as: SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = useContext(SelectableContext);\n  var navContext = useContext(NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey;\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n    ref: ref,\n    href: href,\n    disabled: disabled,\n    className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n    onClick: handleClick\n  }), children);\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n  return !ref || typeof ref === 'function' ? ref : function (value) {\n    ref.current = value;\n  };\n};\n\nexport function mergeRefs(refA, refB) {\n  var a = toFnRef(refA);\n  var b = toFnRef(refB);\n  return function (value) {\n    if (a) a(value);\n    if (b) b(value);\n  };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n *   const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n *   const mergedRef = useMergedRefs(ref, attachRef);\n *\n *   return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n  return useMemo(function () {\n    return mergeRefs(refA, refB);\n  }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import React from 'react';\nexport default React.createContext(null);","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n  if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  var warningRef = useCallback(function (refValue) {\n    !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n  }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  return useMergedRefs(warningRef, ref);\n}","export default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { useCallback, useRef, useMemo } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\n\nfunction getMargins(element) {\n  var styles = getComputedStyle(element);\n  var top = parseFloat(styles.marginTop) || 0;\n  var right = parseFloat(styles.marginRight) || 0;\n  var bottom = parseFloat(styles.marginBottom) || 0;\n  var left = parseFloat(styles.marginLeft) || 0;\n  return {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left\n  };\n}\n\nexport default function usePopperMarginModifiers() {\n  var overlayRef = useRef(null);\n  var margins = useRef(null);\n  return [useCallback(function (overlay) {\n    if (!overlay || !(hasClass(overlay, 'popover') || hasClass(overlay, 'dropdown-menu'))) return;\n    margins.current = getMargins(overlay);\n    overlay.style.margin = 0;\n    overlayRef.current = overlay;\n  }, []), [useMemo(function () {\n    return {\n      name: 'offset',\n      options: {\n        offset: function offset(_ref) {\n          var placement = _ref.placement;\n          if (!margins.current) return [0, 0];\n          var _margins$current = margins.current,\n              top = _margins$current.top,\n              left = _margins$current.left,\n              bottom = _margins$current.bottom,\n              right = _margins$current.right;\n\n          switch (placement.split('-')[0]) {\n            case 'top':\n              return [0, bottom];\n\n            case 'left':\n              return [0, right];\n\n            case 'bottom':\n              return [0, top];\n\n            case 'right':\n              return [0, left];\n\n            default:\n              return [0, 0];\n          }\n        }\n      }\n    };\n  }, [margins])]];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar defaultProps = {\n  alignRight: false,\n  flip: true\n};\nvar DropdownMenu = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      showProps = _ref.show,\n      renderOnMount = _ref.renderOnMount,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? 'div' : _ref$as,\n      _ref$popperConfig = _ref.popperConfig,\n      popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"]);\n\n  var isNavbar = useContext(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n  var _usePopperMarginModif = usePopperMarginModifiers(),\n      popperRef = _usePopperMarginModif[0],\n      marginModifiers = _usePopperMarginModif[1];\n\n  var _useDropdownMenu = useDropdownMenu({\n    flip: flip,\n    rootCloseEvent: rootCloseEvent,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar,\n    popperConfig: _extends({}, popperConfig, {\n      modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n    })\n  }),\n      hasShown = _useDropdownMenu.hasShown,\n      placement = _useDropdownMenu.placement,\n      show = _useDropdownMenu.show,\n      alignEnd = _useDropdownMenu.alignEnd,\n      close = _useDropdownMenu.close,\n      menuProps = _useDropdownMenu.props;\n\n  menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n  if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n  if (typeof Component !== 'string') {\n    menuProps.show = show;\n    menuProps.close = close;\n    menuProps.alignRight = alignEnd;\n  }\n\n  var style = props.style;\n\n  if (placement) {\n    // we don't need the default popper style,\n    // menus are display: none when not shown.\n    style = _extends({}, style, {}, menuProps.style);\n    props['x-placement'] = placement;\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n    style: style,\n    className: classNames(className, prefix, show && 'show', alignEnd && prefix + \"-right\")\n  }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = React.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      split = _ref.split,\n      className = _ref.className,\n      children = _ref.children,\n      childBsPrefix = _ref.childBsPrefix,\n      _ref$as = _ref.as,\n      Component = _ref$as === void 0 ? Button : _ref$as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"split\", \"className\", \"children\", \"childBsPrefix\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n  if (childBsPrefix !== undefined) {\n    props.bsPrefix = childBsPrefix;\n  }\n\n  var _useDropdownToggle = useDropdownToggle(),\n      toggleProps = _useDropdownToggle[0],\n      toggle = _useDropdownToggle[1].toggle;\n\n  toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n  // underlying component, to allow it to render size and style variants.\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    onClick: toggle,\n    className: classNames(className, prefix, split && prefix + \"-split\")\n  }, toggleProps, props), children);\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar defaultProps = {\n  navbar: false\n};\nvar Dropdown = React.forwardRef(function (uncontrolledProps, ref) {\n  var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      _useUncontrolled$as = _useUncontrolled.as,\n      Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"]);\n\n  var onSelectCtx = useContext(SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document) source = 'rootClose';\n    onToggle(nextShow, event, {\n      source: source\n    });\n  });\n  var handleSelect = useEventCallback(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n    value: handleSelect\n  }, /*#__PURE__*/React.createElement(BaseDropdown, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n  }, function (_ref) {\n    var dropdownProps = _ref.props;\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, dropdownProps, {\n      ref: ref,\n      className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n    }));\n  }));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Toggle = DropdownToggle;\nDropdown.Menu = DropdownMenu;\nDropdown.Item = DropdownItem;\nDropdown.Header = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nDropdown.Divider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\nexport default Dropdown;","import React, { Component } from 'react';\nimport Dropdown from 'react-bootstrap/Dropdown';\n\n\nclass TopContextMenu extends Component {\n\n    render() {\n        let commandName = \"\";\n        this.props.parameters.map(parameter => {\n            if(parameter.name === 'command') {\n                commandName = parameter.definition;\n            }\n            return null\n        })\n        const commandArray = [];\n        JSON.parse(commandName).forEach((command) => {\n            if(command.active === 1) {\n                if(command.name === 'add') {\n                    commandArray.push({\n                        name: command.name,\n                        label: command.label,\n                    })\n                }\n                if(command.name === 'remove') {\n                    commandArray.push({\n                        name: command.name,\n                        label: command.label,\n                    })\n                }\n            }\n        })\n\n        return (\n            <div>\n                <Dropdown>\n                    <Dropdown.Toggle variant=\"primary\" id=\"dropdown-basic\" className=\"btn-rounded\">\n                        Menu\n                    </Dropdown.Toggle>\n\n                    <Dropdown.Menu>\n                        {commandArray.map((command) =>\n                            <Dropdown.Item key={command.name} href=\"#\" onClick={() => {\n                                if(command.name === 'add') {\n                                    this.props.displayForm(null, this.props.component.focus, 'new')\n                                }\n                                if(command.name === 'remove') {\n                                    this.props.showDeleteModal()\n                                }\n                            }}>\n                                {command.label}\n                            </Dropdown.Item>\n                        )}\n                        {this.props.menuItems.map((item, i) => (\n                            <Dropdown.Item key={i} href=\"#\" onClick={() =>\n                                (item.actionExecution === 'method') ? this.props.handleClick(null) : this.props.displayForm(null, item.method, item.type)\n                            }>\n                                <i className={item.icon ? item.icon : ''}></i> {item.icon} {item.link}\n                            </Dropdown.Item>\n                        ))}\n                        <Dropdown.Item href=\"#\" onClick={ () => this.props.exportComponent() }>\n                            Export\n                        </Dropdown.Item>\n                    </Dropdown.Menu>\n                </Dropdown>\n            </div>\n        );\n    }\n}\n\nexport default TopContextMenu;\n\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar TabStripNavigationItem = /** @class */ (function (_super) {\n    __extends(TabStripNavigationItem, _super);\n    function TabStripNavigationItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onClick = function () {\n            if (_this.props.onSelect) {\n                _this.props.onSelect(_this.props.index);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    TabStripNavigationItem.prototype.render = function () {\n        var _a;\n        var _b = this.props, active = _b.active, disabled = _b.disabled, _c = _b.title, title = _c === void 0 ? 'Untitled' : _c;\n        var props = {\n            'aria-selected': active,\n            'role': 'tab',\n            onClick: !disabled ? this.onClick : undefined\n        };\n        var itemClasses = classNames((_a = {},\n            _a['k-item'] = true,\n            _a['k-state-default'] = !(disabled || active),\n            _a['k-state-disabled'] = disabled,\n            _a['k-state-active'] = active,\n            _a['k-tab-on-top'] = active,\n            _a));\n        return (React.createElement(\"li\", __assign({}, props, { className: itemClasses }),\n            React.createElement(\"span\", { className: \"k-link\" }, title)));\n    };\n    /**\n     * @hidden\n     */\n    TabStripNavigationItem.propTypes = {\n        active: PropTypes.bool,\n        disabled: PropTypes.bool,\n        index: PropTypes.number,\n        onSelect: PropTypes.func,\n        title: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.element\n        ])\n    };\n    return TabStripNavigationItem;\n}(React.Component));\nexport default TabStripNavigationItem;\n//# sourceMappingURL=TabStripNavigationItem.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TabStripNavigationItem from './TabStripNavigationItem';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar times = function (count) { return Array.apply(null, Array(count)); };\nvar TabStripNavigation = /** @class */ (function (_super) {\n    __extends(TabStripNavigation, _super);\n    function TabStripNavigation() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    TabStripNavigation.prototype.render = function () {\n        var _a = this.props, selected = _a.selected, children = _a.children, onSelect = _a.onSelect, onKeyDown = _a.onKeyDown;\n        var tabsCount = React.Children.count(children);\n        var childElements = React.Children.toArray(children);\n        var tabs;\n        if (children) {\n            tabs = times(tabsCount)\n                .map(function (_, index, array) { return ({\n                first: index === 0,\n                last: index === array.length - 1\n            }); })\n                .map(function (_, index) {\n                var tabProps = {\n                    active: selected === index,\n                    disabled: childElements[index].props.disabled,\n                    index: index,\n                    title: childElements[index].props.title,\n                    onSelect: onSelect\n                };\n                return (React.createElement(TabStripNavigationItem, __assign({ key: index }, tabProps)));\n            });\n        }\n        var navClasses = classNames('k-tabstrip-items', 'k-reset');\n        return (React.createElement(\"ul\", { className: navClasses, role: 'tablist', tabIndex: this.props.tabIndex, onKeyDown: onKeyDown }, tabs));\n    };\n    /**\n     * @hidden\n     */\n    TabStripNavigation.propTypes = {\n        children: PropTypes.oneOfType([\n            PropTypes.element,\n            PropTypes.arrayOf(PropTypes.element)\n        ]),\n        onSelect: PropTypes.func,\n        onKeyDown: PropTypes.func,\n        selected: PropTypes.number,\n        tabIndex: PropTypes.number\n    };\n    return TabStripNavigation;\n}(React.Component));\nexport default TabStripNavigation;\n//# sourceMappingURL=TabStripNavigation.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Fade } from '@progress/kendo-react-animation';\nimport { classNames, guid } from '@progress/kendo-react-common';\nvar TabStripContent = /** @class */ (function (_super) {\n    __extends(TabStripContent, _super);\n    function TabStripContent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.contentId = guid();\n        _this.childFactory = function (child) {\n            return React.cloneElement(child, __assign({}, child.props, { in: child.props.children.props.id === String(_this.contentId + _this.props.selected) }));\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    TabStripContent.prototype.render = function () {\n        var _a = this.props, children = _a.children, selected = _a.selected;\n        var selectedTab = children && typeof selected === 'number' &&\n            React.Children.toArray(children)[selected];\n        var contentClasses = classNames('k-content', 'k-state-active', selectedTab && selectedTab.props.contentClassName);\n        return (React.createElement(\"div\", { className: contentClasses, style: this.props.style }, this.renderContent(children)));\n    };\n    TabStripContent.prototype.renderContent = function (children) {\n        var _this = this;\n        return !this.props.keepTabsMounted\n            ? this.renderChild(React.Children.toArray(children)[this.props.selected], this.props.selected)\n            : React.Children.map(this.props.children, function (tab, idx) {\n                return _this.renderChild(tab, idx);\n            });\n    };\n    TabStripContent.prototype.renderChild = function (tab, idx) {\n        var visible = idx === this.props.selected;\n        var contentProps = {\n            'role': 'tabpanel',\n            'aria-expanded': true,\n            'style': {\n                'display': visible ? undefined : 'none'\n            }\n        };\n        var animationStyle = {\n            position: 'initial',\n            display: visible ? undefined : 'none'\n        };\n        if (tab.props.disabled) {\n            return null;\n        }\n        return this.props.animation\n            ? (React.createElement(Fade, { appear: true, exit: this.props.keepTabsMounted, style: animationStyle, childFactory: this.props.keepTabsMounted ? this.childFactory : undefined },\n                React.createElement(\"div\", __assign({}, contentProps, { id: String(this.contentId + idx), key: idx }), tab.props.children)))\n            : (React.createElement(\"div\", __assign({}, contentProps, { key: idx }), tab.props.children));\n    };\n    /**\n     * @hidden\n     */\n    TabStripContent.propTypes = {\n        animation: PropTypes.bool,\n        children: PropTypes.oneOfType([\n            PropTypes.element,\n            PropTypes.arrayOf(PropTypes.element)\n        ]),\n        selected: PropTypes.number,\n        style: PropTypes.object\n    };\n    return TabStripContent;\n}(React.Component));\nexport default TabStripContent;\n//# sourceMappingURL=TabStripContent.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport TabStripNavigation from './TabStripNavigation';\nimport TabStripContent from './TabStripContent';\nimport { Keys, classNames } from '@progress/kendo-react-common';\n// tslint:enable:max-line-length\nvar TabStrip = /** @class */ (function (_super) {\n    __extends(TabStrip, _super);\n    function TabStrip() {\n        var _a;\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._element = null;\n        _this.keyBinding = (_a = {},\n            _a[Keys.left] = function () { return _this.prevNavigatableTab(); },\n            _a[Keys.right] = function () { return _this.nextNavigatableTab(); },\n            _a[Keys.down] = function () { return _this.nextNavigatableTab(); },\n            _a[Keys.up] = function () { return _this.prevNavigatableTab(); },\n            _a[Keys.home] = function () { return 0; },\n            _a[Keys.end] = function () { return (React.Children.count(_this.props.children) - 1); },\n            _a);\n        /**\n         * @hidden\n         */\n        _this.onSelect = function (index) {\n            if (_this.props.selected !== index) {\n                if (_this.props.onSelect) {\n                    _this.props.onSelect({\n                        selected: index\n                    });\n                }\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onKeyDown = function (event) {\n            var handler;\n            switch (event.keyCode) {\n                case Keys.left:\n                    handler = _this.keyBinding[_this.invertKeys(Keys.left, Keys.right)];\n                    break;\n                case Keys.right:\n                    handler = _this.keyBinding[_this.invertKeys(Keys.right, Keys.left)];\n                    break;\n                case Keys.up:\n                    handler = _this.keyBinding[Keys.up];\n                    break;\n                case Keys.down:\n                    handler = _this.keyBinding[Keys.down];\n                    break;\n                default:\n                    break;\n            }\n            if (handler) {\n                event.preventDefault();\n                _this.onSelect(handler());\n            }\n        };\n        _this.renderContent = function (tabProps) {\n            var selected = tabProps.selected, children = tabProps.children, tabContentStyle = tabProps.tabContentStyle;\n            var childrenCount = React.Children.count(children);\n            if (selected < childrenCount && selected > -1) {\n                return (React.createElement(TabStripContent, __assign({ index: selected }, tabProps, { style: tabContentStyle })));\n            }\n            return null;\n        };\n        _this.firstNavigatableTab = function () {\n            var children = _this.children();\n            var length = React.Children.count(children);\n            if (children) {\n                for (var i = 0; i < length; i++) {\n                    if (!children[i].props.disabled) {\n                        return i;\n                    }\n                }\n            }\n        };\n        _this.lastNavigatableTab = function () {\n            var children = _this.children();\n            var length = React.Children.count(children);\n            if (children) {\n                for (var i = length - 1; i > 0; i--) {\n                    if (!children[i].props.disabled) {\n                        return i;\n                    }\n                }\n            }\n        };\n        _this.prevNavigatableTab = function () {\n            var children = _this.children();\n            var selected = _this.props.selected;\n            var index = selected ? selected - 1 : -1;\n            if (index < 0) {\n                return _this.lastNavigatableTab();\n            }\n            if (children) {\n                for (var i = index; i > -1; i--) {\n                    if (!children[i].props.disabled) {\n                        return i;\n                    }\n                    if (i === 0) {\n                        return _this.lastNavigatableTab();\n                    }\n                }\n            }\n        };\n        _this.nextNavigatableTab = function () {\n            var children = _this.children();\n            var selected = _this.props.selected;\n            var index = selected ? selected + 1 : 1;\n            var childrenCount = React.Children.count(children);\n            if (index >= childrenCount) {\n                return _this.firstNavigatableTab();\n            }\n            if (children) {\n                for (var i = index; i < childrenCount; i++) {\n                    if (!children[i].props.disabled) {\n                        return i;\n                    }\n                    if (i + 1 === childrenCount) {\n                        return _this.firstNavigatableTab();\n                    }\n                }\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    TabStrip.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var tabProps = __assign({}, this.props, { children: this.children(), onKeyDown: this.onKeyDown, onSelect: this.onSelect });\n        var tabPosition = tabProps.tabPosition, _b = tabProps.tabIndex, tabIndex = _b === void 0 ? 0 : _b;\n        var bottom = tabPosition === 'bottom';\n        var componentClasses = classNames('k-widget', 'k-header', 'k-floatwrap', 'k-tabstrip', (_a = {},\n            _a['k-tabstrip-left'] = tabPosition === 'left',\n            _a['k-tabstrip-right'] = tabPosition === 'right',\n            _a['k-tabstrip-bottom'] = tabPosition === 'bottom',\n            _a['k-tabstrip-top'] = tabPosition === 'top',\n            _a), this.props.className);\n        return (React.createElement(\"div\", { ref: function (div) { return _this._element = div; }, dir: this.props.dir, className: componentClasses, style: this.props.style },\n            !bottom && React.createElement(TabStripNavigation, __assign({}, tabProps, { tabIndex: tabIndex })),\n            this.renderContent(tabProps),\n            bottom && React.createElement(TabStripNavigation, __assign({}, tabProps, { tabIndex: tabIndex }))));\n    };\n    TabStrip.prototype.invertKeys = function (original, inverted) {\n        var rtl = this._element && (getComputedStyle(this._element).direction === 'rtl') || false;\n        return rtl ? inverted : original;\n    };\n    TabStrip.prototype.children = function () {\n        return React.Children.toArray(this.props.children).filter(function (c) { return c; });\n    };\n    /**\n     * @hidden\n     */\n    TabStrip.propTypes = {\n        animation: PropTypes.bool,\n        children: PropTypes.node,\n        onSelect: PropTypes.func,\n        selected: PropTypes.number,\n        style: PropTypes.object,\n        tabContentStyle: PropTypes.object,\n        tabPosition: PropTypes.string,\n        tabIndex: PropTypes.number,\n        className: PropTypes.string,\n        dir: PropTypes.string\n    };\n    /**\n     * @hidden\n     */\n    TabStrip.defaultProps = {\n        animation: true,\n        tabPosition: 'top',\n        keepTabsMounted: false\n    };\n    return TabStrip;\n}(React.Component));\nexport default TabStrip;\n//# sourceMappingURL=TabStrip.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar TabStripTab = /** @class */ (function (_super) {\n    __extends(TabStripTab, _super);\n    function TabStripTab() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    TabStripTab.propTypes = {\n        disabled: PropTypes.bool,\n        contentClassName: PropTypes.string,\n        children: PropTypes.oneOfType([\n            PropTypes.element,\n            PropTypes.node\n        ]),\n        title: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.element,\n            PropTypes.node\n        ])\n    };\n    return TabStripTab;\n}(React.Component));\nexport default TabStripTab;\n//# sourceMappingURL=TabStripTab.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n    var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass;\n    if (imageUrl) {\n        return (React.createElement(\"img\", { role: \"presentation\", className: 'k-image', src: imageUrl }));\n    }\n    else if (icon) {\n        var iconClasses = classNames('k-icon', 'k-i-' + icon);\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n    }\n    else if (iconClass) {\n        return (React.createElement(\"span\", { role: \"presentation\", className: iconClass }));\n    }\n    return null;\n}\n// tslint:enable:max-line-length\nvar PanelBarItem = /** @class */ (function (_super) {\n    __extends(PanelBarItem, _super);\n    function PanelBarItem() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.handleItemClick = function () {\n            var _a = _this.props, onSelect = _a.onSelect, disabled = _a.disabled, id = _a.id;\n            if (onSelect && !disabled) {\n                onSelect.call(undefined, {\n                    uniquePrivateKey: _this.props.uniquePrivateKey,\n                    id: id,\n                    target: _this\n                });\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    PanelBarItem.prototype.render = function () {\n        var _a;\n        var _b = this.props, id = _b.id, children = _b.children, title = _b.title, uniquePrivateKey = _b.uniquePrivateKey, disabled = _b.disabled, selected = _b.selected, focused = _b.focused, expanded = _b.expanded, className = _b.className, root = _b.root, headerClassName = _b.headerClassName, animation = _b.animation;\n        var panelBarItemAriaAttributes = {\n            'role': 'treeitem',\n            'aria-disabled': disabled,\n            'aria-hidden': !disabled && !expanded,\n            'aria-selected': !disabled && selected,\n            'aria-expanded': !disabled && expanded && !!children\n        };\n        var panelBarItemClassName = classNames({\n            'k-item': true,\n            'k-state-default': !disabled,\n            'k-state-expanded': expanded && !!children,\n            'k-state-disabled': disabled\n        }, className);\n        var panelBarHeaderClassName = classNames({\n            'k-link': true,\n            'k-header': root,\n            'k-state-selected': !disabled && selected,\n            'k-state-focused': !disabled && focused\n        }, headerClassName);\n        var panelBarItemArrowClassName = classNames((_a = {},\n            _a['k-icon'] = true,\n            _a['k-i-arrow-n'] = expanded && !!children,\n            _a['k-panelbar-collapse'] = expanded && !!children,\n            _a['k-i-arrow-s'] = !expanded && !!children,\n            _a['k-panelbar-expand'] = !expanded && !!children,\n            _a));\n        var animationStyle = { display: 'block' };\n        var icon = iconElement(this.props);\n        var arrow = (!disabled && children) ? React.createElement(\"span\", { className: panelBarItemArrowClassName }) : null;\n        var content = (!disabled && expanded) ?\n            (React.createElement(\"div\", { role: \"group\", className: \"k-panel k-group\" }, children))\n            : null;\n        var child = ((animation !== undefined ? animation : true) && !disabled && children) ?\n            (React.createElement(Reveal, { transitionEnterDuration: 200, transitionExitDuration: 200, key: uniquePrivateKey + '_animation', style: animationStyle, children: content }))\n            : content;\n        return (React.createElement(\"div\", __assign({ id: id, className: panelBarItemClassName }, panelBarItemAriaAttributes),\n            React.createElement(\"span\", { className: panelBarHeaderClassName, onClick: this.handleItemClick },\n                icon,\n                title,\n                arrow),\n            child));\n    };\n    /**\n     * @hidden\n     */\n    PanelBarItem.propTypes = {\n        animation: PropTypes.bool,\n        children: PropTypes.any,\n        className: PropTypes.string,\n        expanded: PropTypes.bool,\n        disabled: PropTypes.bool,\n        onSelect: PropTypes.func,\n        selected: PropTypes.bool,\n        root: PropTypes.bool,\n        title: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.element\n        ]),\n        id: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.number\n        ]),\n        focused: PropTypes.bool\n    };\n    /**\n     * @hidden\n     */\n    PanelBarItem.defaultProps = {\n        title: 'Untitled'\n    };\n    return PanelBarItem;\n}(React.PureComponent));\nexport default PanelBarItem;\n//# sourceMappingURL=PanelBarItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport PanelBarItem from './PanelBarItem';\n/**\n * @hidden\n */\nexport var renderChildren = function (animation, state, handleSelect, children, parentExpanded, root, parentPrivateKey) {\n    if (animation === void 0) { animation = true; }\n    if (parentExpanded === void 0) { parentExpanded = true; }\n    if (root === void 0) { root = true; }\n    if (parentPrivateKey === void 0) { parentPrivateKey = []; }\n    return React.Children.map(children, function (child, idx) {\n        if (child && child.type === PanelBarItem) {\n            var nestedChildren = void 0;\n            var privateKey = parentPrivateKey.length ?\n                parentPrivateKey[parentPrivateKey.length - 1] + (\".\" + idx)\n                : \".\" + idx;\n            if (child.props.children) {\n                nestedChildren =\n                    renderChildren(animation, state, handleSelect, child.props.children, (state.expanded || []).indexOf(privateKey) > -1 && parentExpanded, false, parentPrivateKey.concat([privateKey]));\n            }\n            return React.cloneElement(child, __assign({}, child.props, { animation: child.props.animation !== undefined ? child.props.animation : animation, id: child.props.id || \"k-panelbar-item-default-\" + privateKey, uniquePrivateKey: privateKey, parentUniquePrivateKey: parentPrivateKey, parentExpanded: parentExpanded, root: root, expanded: (state.expanded || []).indexOf(privateKey) > -1 && parentExpanded, focused: state.focused === privateKey && state.wrapperFocused, selected: state.selected === privateKey, children: nestedChildren, onSelect: handleSelect }));\n        }\n        else {\n            return React.createElement(\"div\", { className: \"k-content\" }, child);\n        }\n    });\n};\n/**\n * @hidden\n */\nexport var getInitialState = function (props, expandMode, result, _, parentExpanded, parentPrivateKey) {\n    if (result === void 0) { result = {\n        expanded: props.expanded || [],\n        selected: props.selected || '',\n        focused: props.focused || '.0',\n        wrapperFocused: false\n    }; }\n    if (_ === void 0) { _ = true; }\n    if (parentExpanded === void 0) { parentExpanded = true; }\n    if (parentPrivateKey === void 0) { parentPrivateKey = []; }\n    React.Children.map(props.children, function (child, idx) {\n        if (child && child.type === PanelBarItem) {\n            var privateKey = parentPrivateKey.length ?\n                parentPrivateKey[parentPrivateKey.length - 1] + (\".\" + idx)\n                : \".\" + idx;\n            if (!child.props.disabled && parentExpanded) {\n                if (child.props.selected) {\n                    result.selected = privateKey;\n                }\n                if (child.props.focused) {\n                    result.focused = privateKey;\n                }\n                if (child.props.expanded) {\n                    if (expandMode === 'multiple') {\n                        result.expanded.push(privateKey);\n                    }\n                    else if (expandMode === 'single') {\n                        result.expanded = [privateKey];\n                    }\n                }\n                if (child.props.children) {\n                    result = getInitialState(child.props, expandMode, result, false, !!child.props.expanded, parentPrivateKey.concat([privateKey]));\n                }\n            }\n        }\n    });\n    return result;\n};\n/**\n * @hidden\n */\nexport function flatVisibleItems(data, flattedItems, _) {\n    if (flattedItems === void 0) { flattedItems = []; }\n    if (_ === void 0) { _ = null; }\n    (data || []).forEach(function (item) {\n        if (!item.disabled) {\n            flattedItems.push(item);\n            if (item.expanded && item.children) {\n                flatVisibleItems(item.children, flattedItems);\n            }\n        }\n    });\n    return flattedItems;\n}\n/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * Represents the PanelBarUtils functions.\n */\nexport var PanelBarUtils;\n(function (PanelBarUtils) {\n    /**\n     * Maps a collection of PanelBarItemProps to PanelBarItem components\n     * ([see example]({% slug customization_panelbar %})).\n     * Contained in the `PanelBarUtils` object.\n     *\n     * @param items - A collection of PanelBarItemProps.\n     * @return {PanelBarItem[]} Returns an array of PanelBarItem components.\n     */\n    function mapItemsToComponents(items) {\n        return items.map(function (item, idx) {\n            var children;\n            if (item.content) {\n                children = item.content;\n            }\n            if (item.children) {\n                children = (mapItemsToComponents(item.children));\n            }\n            return (React.createElement(PanelBarItem, __assign({}, item, { children: children, key: item.id || idx })));\n        });\n    }\n    PanelBarUtils.mapItemsToComponents = mapItemsToComponents;\n})(PanelBarUtils || (PanelBarUtils = {}));\n/**\n * @hidden\n */\nexport var isArrayEqual = function (firstArray, secondArray) {\n    if (firstArray.length !== secondArray.length) {\n        return false;\n    }\n    return firstArray.every(function (ex, i) { return ex === secondArray[i]; });\n};\n//# sourceMappingURL=util.js.map","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var NavigationAction;\n(function (NavigationAction) {\n    NavigationAction[NavigationAction[\"Toggle\"] = 0] = \"Toggle\";\n    NavigationAction[NavigationAction[\"Next\"] = 1] = \"Next\";\n    NavigationAction[NavigationAction[\"Previous\"] = 2] = \"Previous\";\n})(NavigationAction || (NavigationAction = {}));\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n    function NavigationService(onNavigate) {\n        this.onNavigate = onNavigate;\n    }\n    NavigationService.prototype.navigate = function (event, rtl) {\n        var keyCode = event.keyCode;\n        var action;\n        switch (keyCode) {\n            case Keys.left:\n                action = !rtl ? NavigationAction.Previous : NavigationAction.Next;\n                break;\n            case Keys.up:\n                action = NavigationAction.Previous;\n                break;\n            case Keys.right:\n                action = !rtl ? NavigationAction.Next : NavigationAction.Previous;\n                break;\n            case Keys.down:\n                action = NavigationAction.Next;\n                break;\n            case Keys.space:\n                action = NavigationAction.Toggle;\n                break;\n            case Keys.enter:\n                action = NavigationAction.Toggle;\n                break;\n            default:\n                action = null;\n                break;\n        }\n        if (action !== null) {\n            event.preventDefault();\n            this.onNavigate(action);\n        }\n    };\n    return NavigationService;\n}());\nexport default NavigationService;\n//# sourceMappingURL=navigationService.js.map","import * as React from 'react';\nimport { isArrayEqual } from '../util';\n/**\n * @hidden\n */\nvar SelectionService = /** @class */ (function () {\n    function SelectionService(onSelectCallback, onFocusCallback, expandMode) {\n        var _this = this;\n        this.flatChildren = function (children, flattenChildren) {\n            if (flattenChildren === void 0) { flattenChildren = []; }\n            React.Children.forEach(children, function (child) {\n                if (child && child.props && !child.props.disabled) {\n                    flattenChildren.push(child);\n                    if (child.props.children) {\n                        _this.flatChildren(child.props.children, flattenChildren);\n                    }\n                }\n            });\n            return flattenChildren;\n        };\n        this.flatVisibleChildren = function (children, flattenVisibleChildren) {\n            if (flattenVisibleChildren === void 0) { flattenVisibleChildren = []; }\n            React.Children.forEach(children, function (child) {\n                if (child && child.props && !child.props.disabled && (child.props.expanded || child.props.parentExpanded)) {\n                    flattenVisibleChildren.push(child);\n                    if (child.props.children) {\n                        _this.flatVisibleChildren(child.props.children, flattenVisibleChildren);\n                    }\n                }\n            });\n            return flattenVisibleChildren;\n        };\n        this.onSelect = onSelectCallback;\n        this.onFocus = onFocusCallback;\n        this.expandMode = expandMode;\n    }\n    SelectionService.prototype.select = function (uniquePrivateKey, children, expanded) {\n        var flattenChildren = this.flatChildren(React.Children.toArray(children));\n        var selectedChild;\n        var newExpanded;\n        flattenChildren.forEach(function (child) {\n            if (child.props.uniquePrivateKey === uniquePrivateKey) {\n                selectedChild = child;\n            }\n        });\n        switch (this.expandMode) {\n            case 'single':\n                newExpanded = selectedChild.props.parentUniquePrivateKey.concat([selectedChild.props.uniquePrivateKey]);\n                if (isArrayEqual(expanded, newExpanded)) {\n                    if (selectedChild.props.parentUniquePrivateKey) {\n                        newExpanded = selectedChild.props.parentUniquePrivateKey.slice();\n                    }\n                    else {\n                        newExpanded = [];\n                    }\n                }\n                break;\n            case 'multiple':\n                newExpanded = expanded.slice();\n                var index = newExpanded.indexOf(selectedChild.props.uniquePrivateKey);\n                index === -1 ? newExpanded.push(selectedChild.props.uniquePrivateKey) : newExpanded.splice(index, 1);\n                break;\n            default:\n                newExpanded = expanded.slice();\n                break;\n        }\n        this.onSelect(selectedChild, newExpanded);\n    };\n    SelectionService.prototype.focus = function (currentFocus, step, children) {\n        var flattenChildren = this.flatVisibleChildren(React.Children.toArray(children));\n        var focusedChild;\n        flattenChildren.forEach(function (child, ixd) {\n            if (child.props.uniquePrivateKey === currentFocus) {\n                var index = ixd + step < 0 ?\n                    0 : ixd + step >= flattenChildren.length\n                    ? flattenChildren.length - 1\n                    : ixd + step;\n                focusedChild = flattenChildren[index];\n            }\n        });\n        this.onFocus(focusedChild);\n    };\n    SelectionService.prototype.setExpandMode = function (expandMode) {\n        this.expandMode = expandMode;\n    };\n    return SelectionService;\n}());\nexport default SelectionService;\n//# sourceMappingURL=selectionService.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport PanelBarItem from './PanelBarItem';\nimport { renderChildren, getInitialState } from './util';\nimport SelectionService from './services/selectionService';\nimport NavigationService, { NavigationAction } from './services/navigationService';\nimport { classNames } from '@progress/kendo-react-common';\nvar PanelBar = /** @class */ (function (_super) {\n    __extends(PanelBar, _super);\n    function PanelBar(props) {\n        var _this = _super.call(this, props) || this;\n        _this._element = null;\n        /**\n         * @hidden\n         */\n        _this.handleSelect = function (event) {\n            var state = __assign({}, _this.state, { selected: _this.selected });\n            _this._selectionService.select(event.uniquePrivateKey, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children), state.expanded);\n            _this._selectionService.focus(event.uniquePrivateKey, 0, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n        };\n        /**\n         * @hidden\n         */\n        _this.onSelect = function (child, expanded) {\n            _this.setState({ selected: child.props.uniquePrivateKey, expanded: expanded }, function () {\n                if (_this.props.onSelect) {\n                    _this.props.onSelect.call(undefined, {\n                        target: child,\n                        action: 'select'\n                    });\n                }\n            });\n        };\n        /**\n         * @hidden\n         */\n        _this.onFocus = function (child) {\n            _this.activeDescendant = child.props.id;\n            _this.setState({ focused: child.props.uniquePrivateKey });\n        };\n        /**\n         * @hidden\n         */\n        _this.onNavigate = function (action) {\n            var state = __assign({}, _this.state, { selected: _this.selected });\n            switch (action) {\n                case NavigationAction.Previous:\n                    _this._selectionService.focus(state.focused, -1, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n                    break;\n                case NavigationAction.Next:\n                    _this._selectionService.focus(state.focused, 1, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children));\n                    break;\n                case NavigationAction.Toggle:\n                    _this._selectionService.select(state.focused, renderChildren(_this.props.animation, state, _this.handleSelect, _this.props.children), state.expanded);\n                    break;\n                default:\n            }\n        };\n        _this.handleWrapperFocus = function () {\n            clearTimeout(_this.nextTickId);\n            if (!_this.state.wrapperFocused) {\n                _this.setState({ wrapperFocused: true });\n            }\n        };\n        _this.handleWrapperBlur = function () {\n            _this.nextTick(function () {\n                _this.setState({ wrapperFocused: false });\n            });\n        };\n        _this.handleKeyDown = function (event) {\n            var rtl = _this._element && (getComputedStyle(_this._element).direction === 'rtl') || false;\n            var target = event.target, currentTarget = event.currentTarget;\n            if (target === currentTarget) {\n                _this._navigationService.navigate(event, rtl);\n            }\n        };\n        _this.state = getInitialState(props, props.expandMode || 'multiple');\n        _this._selectionService = new SelectionService(_this.onSelect, _this.onFocus, _this.props.expandMode || 'multiple');\n        _this._navigationService = new NavigationService(_this.onNavigate);\n        return _this;\n    }\n    Object.defineProperty(PanelBar.prototype, \"selected\", {\n        get: function () {\n            var _a = this.props.selected, selected = _a === void 0 ? this.state.selected : _a;\n            return selected;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    PanelBar.prototype.componentDidUpdate = function (prevProps) {\n        var newProps = this.props;\n        if (newProps.expandMode !== prevProps.expandMode) {\n            this._selectionService.setExpandMode(newProps.expandMode);\n        }\n    };\n    /**\n     * @hidden\n     */\n    PanelBar.prototype.render = function () {\n        var _this = this;\n        var ariaProps = {\n            'aria-activedescendant': this.activeDescendant\n        };\n        var state = __assign({}, this.state, { selected: this.selected });\n        var children = renderChildren(this.props.animation, state, this.handleSelect, this.props.children);\n        var className = classNames('k-widget', 'k-panelbar', this.props.className);\n        return (React.createElement(\"div\", __assign({ ref: function (div) { _this._element = div; }, dir: this.props.dir, role: 'tree', tabIndex: 0, onKeyDown: this.handleKeyDown, onFocus: this.handleWrapperFocus, onBlur: this.handleWrapperBlur, className: className, style: this.props.style }, ariaProps), children));\n    };\n    PanelBar.prototype.nextTick = function (f) {\n        // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n        // XXX: https://github.com/facebook/react/issues/3751\n        // Handles multiple focus events happening at the same time.\n        clearTimeout(this.nextTickId);\n        this.nextTickId = setTimeout(function () { return f(); });\n    };\n    /**\n     * @hidden\n     */\n    PanelBar.propTypes = {\n        animation: PropTypes.bool,\n        children: function (props, propName) {\n            var prop = props[propName];\n            if (prop) {\n                if (Array.isArray(prop)) {\n                    for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n                        var value = prop_1[_i];\n                        if (!value.type || value.type !== PanelBarItem) {\n                            return new Error('PanelBar children should be either PanelBarItem or Array of PanelBarItem.');\n                        }\n                    }\n                }\n                else {\n                    if (prop.type !== PanelBarItem) {\n                        return new Error('PanelBar child should be either PanelBarItem or Array of PanelBarItem.');\n                    }\n                }\n            }\n        },\n        dir: PropTypes.string,\n        selected: PropTypes.string,\n        expanded: PropTypes.arrayOf(PropTypes.string),\n        focused: PropTypes.string,\n        expandMode: PropTypes.oneOf(['single', 'multiple']),\n        className: PropTypes.string,\n        onSelect: PropTypes.func,\n        style: PropTypes.object\n    };\n    /**\n     * @hidden\n     */\n    PanelBar.defaultProps = {\n        expandMode: 'multiple',\n        animation: true\n    };\n    return PanelBar;\n}(React.Component));\nexport default PanelBar;\n//# sourceMappingURL=PanelBar.js.map","/**\n * @hidden\n */\nexport var EMPTY_ID = '';\n/**\n * @hidden\n */\nexport var ZERO_LEVEL_ZERO_ITEM_ID = '0';\n/**\n * @hidden\n */\nexport var SEPARATOR = '_';\n/**\n * @hidden\n */\nexport function getItemById(itemId, items) {\n    if (isIdZeroLevel(itemId)) {\n        return items[Number(itemId)];\n    }\n    else {\n        var rootParentItem = items[Number(getRootParentId(itemId))];\n        return rootParentItem.items ?\n            getItemById(getIdWithoutRootParentId(itemId), rootParentItem.items) : undefined;\n    }\n}\n/**\n * @hidden\n */\nexport function getRootParentId(itemId) {\n    return isIdEmptyOrZeroLevel(itemId) ? itemId : itemId.split(SEPARATOR)[0];\n}\n/**\n * @hidden\n */\nexport function getIdWithoutRootParentId(itemId) {\n    if (isIdEmptyOrZeroLevel(itemId)) {\n        return itemId;\n    }\n    else {\n        var firstSeparatorIndex = itemId.indexOf(SEPARATOR);\n        return itemId.substring(firstSeparatorIndex + 1);\n    }\n}\n/**\n * @hidden\n */\nexport function getFirstChildId(itemId) {\n    return createId('0', itemId);\n}\n/**\n * @hidden\n */\nexport function shouldOpenItem(itemId, lastItemIdToBeOpened) {\n    if (lastItemIdToBeOpened.indexOf(itemId) === 0) {\n        return lastItemIdToBeOpened.length === itemId.length ||\n            lastItemIdToBeOpened.charAt(itemId.length) === SEPARATOR;\n    }\n    else {\n        return false;\n    }\n}\n/**\n * @hidden\n */\nexport function createId(childId, parentId) {\n    return parentId ? parentId + SEPARATOR + childId : childId;\n}\n/**\n * @hidden\n */\nexport function getDirectParentId(itemId) {\n    var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n    return lastSeparatorIndex < 0 ? EMPTY_ID : itemId.substring(0, lastSeparatorIndex);\n}\n/**\n * @hidden\n */\nexport function isIdEmptyOrZeroLevel(itemId) {\n    return itemId === EMPTY_ID || itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function isIdZeroLevel(itemId) {\n    return itemId !== EMPTY_ID && itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function isIdFirstLevel(itemId) {\n    return getSeparatorOccurances(itemId) === 1;\n}\n/**\n * @hidden\n */\nexport function isFirstItemFromSiblings(itemId) {\n    return getShortId(itemId) === ZERO_LEVEL_ZERO_ITEM_ID;\n}\n/**\n * @hidden\n */\nexport function getShortId(itemId) {\n    var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n    return lastSeparatorIndex < 0 ? itemId : itemId.substring(lastSeparatorIndex + 1);\n}\n/**\n * @hidden\n */\nexport function getDirectSiblingIdForLevelZero(next, shortItemId, siblingsCount) {\n    if (!isIdZeroLevel(shortItemId)) {\n        return shortItemId;\n    }\n    return next ?\n        Number(shortItemId) < siblingsCount - 1 ? (Number(shortItemId) + 1).toString() : '0' :\n        Number(shortItemId) > 0 ? (Number(shortItemId) - 1).toString() : (siblingsCount - 1).toString();\n}\nfunction getSeparatorOccurances(itemId) {\n    return itemId.split(SEPARATOR).length - 1;\n}\n//# sourceMappingURL=itemsIdsUtils.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar MenuItem = /** @class */ (function (_super) {\n    __extends(MenuItem, _super);\n    function MenuItem() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    MenuItem.prototype.render = function () {\n        return null;\n    };\n    /**\n     * @hidden\n     */\n    MenuItem.propTypes = {\n        text: PropTypes.string,\n        url: PropTypes.string,\n        icon: PropTypes.string,\n        disabled: PropTypes.bool,\n        cssClass: PropTypes.string,\n        cssStyle: PropTypes.object,\n        render: PropTypes.any,\n        linkRender: PropTypes.any,\n        contentRender: PropTypes.any,\n        data: PropTypes.any\n    };\n    return MenuItem;\n}(React.Component));\nexport default MenuItem;\n//# sourceMappingURL=MenuItem.js.map","import * as React from 'react';\nimport { createId, ZERO_LEVEL_ZERO_ITEM_ID } from './itemsIdsUtils';\nimport MenuItem from '../components/MenuItem';\n/**\n * @hidden\n */\nexport default function prepareInputItemsForInternalWork(models, menuChildren) {\n    if (models && models.length > 0) {\n        return {\n            items: convertInputModelsToInternalOnesHelper(models),\n            inputItems: models\n        };\n    }\n    else if (getMenuItemChildComponents(menuChildren).length > 0) {\n        var inputModels = convertInputComponentsToInputModelsHelper(getMenuItemChildComponents(menuChildren));\n        return { items: convertInputModelsToInternalOnesHelper(inputModels), inputItems: inputModels };\n    }\n    else {\n        return { items: [], inputItems: [] };\n    }\n}\nfunction copyInputItemWithoutChildren(inputModel, inputComponent) {\n    var result = {};\n    var _a = inputModel ? inputModel : inputComponent.props, text = _a.text, url = _a.url, icon = _a.icon, disabled = _a.disabled, cssClass = _a.cssClass, cssStyle = _a.cssStyle, render = _a.render, linkRender = _a.linkRender, contentRender = _a.contentRender, data = _a.data;\n    if (text !== undefined) {\n        result.text = text;\n    }\n    if (url !== undefined) {\n        result.url = url;\n    }\n    if (icon !== undefined) {\n        result.icon = icon;\n    }\n    if (disabled !== undefined) {\n        result.disabled = disabled;\n    }\n    if (cssClass !== undefined) {\n        result.cssClass = cssClass;\n    }\n    if (cssStyle !== undefined) {\n        result.cssStyle = cssStyle;\n    }\n    if (render !== undefined) {\n        result.render = render;\n    }\n    if (linkRender !== undefined) {\n        result.linkRender = linkRender;\n    }\n    if (contentRender !== undefined) {\n        result.contentRender = contentRender;\n    }\n    if (data !== undefined) {\n        result.data = data;\n    }\n    return result;\n}\nfunction getMenuItemChildComponents(menuChildren) {\n    return React.Children.toArray(menuChildren)\n        .filter(function (child) { return child && child.type === MenuItem; });\n}\nfunction convertInputComponentsToInputModelsHelper(components) {\n    var result = [];\n    for (var index = 0; index < components.length; index++) {\n        var comp = components[index];\n        var model = copyInputItemWithoutChildren(undefined, comp);\n        var items = convertInputComponentsToInputModelsHelper(getMenuItemChildComponents(comp.props.children));\n        if (items.length > 0) {\n            model.items = items;\n        }\n        result.push(model);\n    }\n    return result;\n}\nfunction convertInputModelsToInternalOnesHelper(inputModels, parentId) {\n    var result = [];\n    for (var index = 0; index < inputModels.length; index++) {\n        var inputModel = inputModels[index];\n        var internalModel = copyInputItemWithoutChildren(inputModel);\n        internalModel.id = createId(index.toString(), parentId);\n        internalModel.isLastFromSiblings = index === inputModels.length - 1;\n        internalModel.items = copyOrCreateModelChildren(inputModel, internalModel);\n        result.push(internalModel);\n    }\n    return result;\n}\nfunction copyOrCreateModelChildren(inputModel, internalModel) {\n    if (inputModel.contentRender) {\n        return [{\n                contentParentItemId: internalModel.id,\n                id: createId(ZERO_LEVEL_ZERO_ITEM_ID, internalModel.id),\n                isLastFromSiblings: true,\n                contentRender: inputModel.contentRender,\n                items: []\n            }];\n    }\n    else if (inputModel.items) {\n        return convertInputModelsToInternalOnesHelper(inputModel.items, internalModel.id);\n    }\n    else {\n        return [];\n    }\n}\n//# sourceMappingURL=prepareInputItemsForInternalWork.js.map","import { Keys } from '@progress/kendo-react-common';\nimport { getFirstChildId, isIdZeroLevel, getRootParentId, isIdFirstLevel, getDirectParentId, getShortId, createId, getDirectSiblingIdForLevelZero, getItemById as getItemByIdUtil } from './itemsIdsUtils';\nvar NO_WHITESPACE_REGEX = /\\S/;\n/**\n * @hidden\n * Returns the `itemId` (string) for applicable key codes even when the id has not changed.\n * For key codes that are not applicable, returns `undefined`.\n */\nexport default function getNewItemIdUponKeyboardNavigation(sourceItems, sourceItemId, keyCode, key, isMenuVertical, isDirectionRightToLeft) {\n    var sourceItem = getItemById();\n    switch (keyCode) {\n        case Keys.left:\n            return getIdUponLeftKey();\n        case Keys.right:\n            return getIdUponRightKey();\n        case Keys.up:\n            return getIdUponUpKey();\n        case Keys.down:\n            return getIdUponDownKey();\n        case Keys.enter:\n        case Keys.space:\n            return getIdUponEnterAndSpaceKeys();\n        case Keys.home:\n            return getIdUponHomeKey();\n        case Keys.end:\n            return getIdUponEndKey();\n        case Keys.esc:\n            return getIdUponEscKey();\n        default:\n            return isSearchableKey() ? getIdUponSearchByChar() : sourceItemId;\n    }\n    function getIdUponLeftKey() {\n        if (isMenuVertical) {\n            return isDirectionRightToLeft ? getIdUponRightKeyForVerticalMenu() : getIdUponLeftKeyForVerticalMenu();\n        }\n        else {\n            return isDirectionRightToLeft ?\n                getIdUponRightKeyForHorizontalMenu() : getIdUponLeftKeyForHorizontalMenu();\n        }\n    }\n    function getIdUponRightKey() {\n        if (isMenuVertical) {\n            return isDirectionRightToLeft ? getIdUponLeftKeyForVerticalMenu() : getIdUponRightKeyForVerticalMenu();\n        }\n        else {\n            return isDirectionRightToLeft ?\n                getIdUponLeftKeyForHorizontalMenu() : getIdUponRightKeyForHorizontalMenu();\n        }\n    }\n    function getIdUponDownKey() {\n        if (isMenuVertical) {\n            return getNextSiblingId();\n        }\n        else {\n            if (isIdZeroLevel(sourceItemId)) {\n                return getFirstChildIdForEnabledItemOrGetSameId();\n            }\n            else {\n                return getNextSiblingId();\n            }\n        }\n    }\n    function getIdUponUpKey() {\n        if (isMenuVertical) {\n            return getPrevSiblingId();\n        }\n        else {\n            if (isIdZeroLevel(sourceItemId)) {\n                return getLastChildIdForEnabledItemOrGetSameId();\n            }\n            else {\n                return getPrevSiblingId();\n            }\n        }\n    }\n    function getIdUponEnterAndSpaceKeys() {\n        if (sourceItem.disabled) {\n            return sourceItemId;\n        }\n        else {\n            return hasChildren() ? getFirstChildId(sourceItemId) : getRootParentId(sourceItemId);\n        }\n    }\n    function getIdUponHomeKey() {\n        return getSiblings()[0].id;\n    }\n    function getIdUponEndKey() {\n        var siblings = getSiblings();\n        return siblings[siblings.length - 1].id;\n    }\n    function getIdUponEscKey() {\n        return isIdZeroLevel(sourceItemId) ? sourceItemId : getDirectParentId(sourceItemId);\n    }\n    function getIdUponSearchByChar() {\n        var searchChar = key.toLowerCase();\n        var siblings = getSiblings();\n        var currentItemIndex = Number(getShortId(sourceItemId));\n        var itemsToSearch = siblings.slice(currentItemIndex + 1).concat(siblings.slice(0, currentItemIndex + 1));\n        var matchedSibling = itemsToSearch.find(function (item) {\n            return (item.text || '').toLowerCase().startsWith(searchChar);\n        });\n        return matchedSibling ? matchedSibling.id : sourceItemId;\n    }\n    //#region Left Key Internals\n    function getIdUponLeftKeyForHorizontalMenu() {\n        if (isIdZeroLevel(sourceItemId)) {\n            return getPrevSiblingId();\n        }\n        else if (isIdFirstLevel(sourceItemId)) {\n            return getFirstChildIdForEnabledItemOrGetSameId(getPrevSiblingId(getRootParentId(sourceItemId)));\n        }\n        else {\n            return getDirectParentId(sourceItemId);\n        }\n    }\n    function getIdUponLeftKeyForVerticalMenu() {\n        if (isIdZeroLevel(sourceItemId)) {\n            return getLastChildIdForEnabledItemOrGetSameId();\n        }\n        else {\n            return getDirectParentId(sourceItemId);\n        }\n    }\n    //#endregion\n    //#region Right Key Internals\n    function getIdUponRightKeyForHorizontalMenu() {\n        if (isIdZeroLevel(sourceItemId)) {\n            return getNextSiblingId();\n        }\n        else {\n            return getFirstChildIdForEnabledItemOrGetSameId(hasChildren() ? sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));\n        }\n    }\n    function getIdUponRightKeyForVerticalMenu() {\n        return getFirstChildIdForEnabledItemOrGetSameId(isIdZeroLevel(sourceItemId) || hasChildren() ?\n            sourceItemId : getNextSiblingId(getRootParentId(sourceItemId)));\n    }\n    //#endregion\n    //#region Utils\n    function getFirstChildIdForEnabledItemOrGetSameId(itemId) {\n        return getFirstOrLastChildIdForEnabledItemOrGetSameId(true, itemId);\n    }\n    function getLastChildIdForEnabledItemOrGetSameId(itemId) {\n        return getFirstOrLastChildIdForEnabledItemOrGetSameId(false, itemId);\n    }\n    function isSearchableKey() {\n        return key.length === 1 && NO_WHITESPACE_REGEX.test(key);\n    }\n    function getItemById(itemId, items) {\n        if (itemId === undefined) {\n            itemId = sourceItemId;\n        }\n        if (items === undefined) {\n            items = sourceItems;\n        }\n        return getItemByIdUtil(itemId, items);\n    }\n    function hasChildren(itemId) {\n        return getItemById(itemId).items.length > 0;\n    }\n    function getPrevSiblingId(itemId) {\n        return getSiblingId(false, itemId);\n    }\n    function getNextSiblingId(itemId) {\n        return getSiblingId(true, itemId);\n    }\n    function getLastChildId(itemId) {\n        var itemChildren = getItemById(itemId).items;\n        return itemChildren[itemChildren.length - 1].id;\n    }\n    function getSiblings() {\n        return isIdZeroLevel(sourceItemId) ?\n            sourceItems : getItemById(getDirectParentId(sourceItemId), sourceItems).items;\n    }\n    function getFirstOrLastChildIdForEnabledItemOrGetSameId(getFirstChild, itemId) {\n        if (itemId === undefined) {\n            itemId = sourceItemId;\n        }\n        var item = getItemById(itemId);\n        if (hasChildren(itemId) && !item.disabled) {\n            return getFirstChild ? getFirstChildId(itemId) : getLastChildId(itemId);\n        }\n        else {\n            return itemId;\n        }\n    }\n    function getSiblingId(next, itemId) {\n        if (itemId === undefined) {\n            itemId = sourceItemId;\n        }\n        if (isIdZeroLevel(itemId)) {\n            return getDirectSiblingIdForLevelZero(next, itemId, sourceItems.length);\n        }\n        else {\n            var directParentId = getDirectParentId(itemId);\n            var shortId = getShortId(itemId);\n            var siblingsCount = getItemById(directParentId).items.length;\n            return createId(getDirectSiblingIdForLevelZero(next, shortId, siblingsCount), directParentId);\n        }\n    }\n    //#endregion\n}\n//# sourceMappingURL=getNewItemIdUponKeyboardNavigation.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar MenuItemLink = /** @class */ (function (_super) {\n    __extends(MenuItemLink, _super);\n    function MenuItemLink() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    MenuItemLink.prototype.render = function () {\n        if (this.props.url) {\n            return (React.createElement(\"a\", { className: this.getMenuItemClassName(), role: \"presentation\", href: this.props.url, tabIndex: -1 }, this.props.children));\n        }\n        else {\n            return (React.createElement(\"span\", { className: this.getMenuItemClassName(), role: \"presentation\" }, this.props.children));\n        }\n    };\n    MenuItemLink.prototype.getMenuItemClassName = function () {\n        return classNames('k-link', 'k-menu-link', {\n            'k-state-active': this.props.opened\n        });\n    };\n    /**\n     * @hidden\n     */\n    MenuItemLink.propTypes = {\n        opened: PropTypes.bool,\n        url: PropTypes.string\n    };\n    return MenuItemLink;\n}(React.Component));\nexport default MenuItemLink;\n//# sourceMappingURL=MenuItemLink.js.map","/**\n * @hidden\n */\nvar POPUP_ALIGN = {\n    vertical: 'top',\n    horizontal: 'left'\n};\n/**\n * @hidden\n */\nvar POPUP_ALIGN_RTL = {\n    vertical: 'top',\n    horizontal: 'right'\n};\n/**\n * @hidden\n */\nvar VERTICAL_COLLISION = {\n    vertical: 'flip',\n    horizontal: 'fit'\n};\n/**\n * @hidden\n */\nvar HORIZONTAL_COLLISION = {\n    vertical: 'fit',\n    horizontal: 'flip'\n};\n/**\n * @hidden\n */\nexport var POPUP_SETTINGS_RTL = {\n    downward: {\n        anchorAlign: {\n            vertical: 'bottom',\n            horizontal: 'right'\n        },\n        popupAlign: POPUP_ALIGN_RTL,\n        collision: VERTICAL_COLLISION\n    },\n    leftward: {\n        anchorAlign: {\n            vertical: 'top',\n            horizontal: 'left'\n        },\n        popupAlign: POPUP_ALIGN_RTL,\n        collision: HORIZONTAL_COLLISION\n    }\n};\n/**\n * @hidden\n */\nexport var POPUP_SETTINGS = {\n    downward: {\n        anchorAlign: {\n            vertical: 'bottom',\n            horizontal: 'left'\n        },\n        popupAlign: POPUP_ALIGN,\n        collision: VERTICAL_COLLISION\n    },\n    rightward: {\n        anchorAlign: {\n            vertical: 'top',\n            horizontal: 'right'\n        },\n        popupAlign: POPUP_ALIGN,\n        collision: HORIZONTAL_COLLISION\n    }\n};\n//# sourceMappingURL=consts.js.map","import { POPUP_SETTINGS, POPUP_SETTINGS_RTL } from '../consts';\nimport { isIdZeroLevel } from './itemsIdsUtils';\n/**\n * @hidden\n */\nexport function getPopupSettings(itemId, isMenuVertical, isDirectionRightToLeft) {\n    var childrenPosition = getChildrenPosition(itemId, isMenuVertical, isDirectionRightToLeft);\n    if (isDirectionRightToLeft) {\n        return childrenPosition === 'downward' ? POPUP_SETTINGS_RTL.downward : POPUP_SETTINGS_RTL.leftward;\n    }\n    else {\n        return childrenPosition === 'downward' ? POPUP_SETTINGS.downward : POPUP_SETTINGS.rightward;\n    }\n}\n/**\n * @hidden\n */\nexport function getChildrenPosition(itemId, isMenuVertical, isDirectionRightToLeft) {\n    if (isIdZeroLevel(itemId)) {\n        if (isMenuVertical) {\n            return isDirectionRightToLeft ? 'leftward' : 'rightward';\n        }\n        else {\n            return 'downward';\n        }\n    }\n    else {\n        return isDirectionRightToLeft ? 'leftward' : 'rightward';\n    }\n}\n/**\n * @hidden\n */\nexport function convertBoolDirectionToString(isDirectionRightToLeft) {\n    return isDirectionRightToLeft ? 'rtl' : 'ltr';\n}\n/**\n * @hidden\n */\nexport function getDOMElementId(menuGuid, itemId) {\n    return menuGuid + \"_\" + itemId;\n}\n//# sourceMappingURL=misc.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getChildrenPosition } from '../utils/misc';\n/**\n * @hidden\n */\nexport var downArrowClass = 'k-i-arrow-60-down';\n/**\n * @hidden\n */\nexport var rightArrowClass = 'k-i-arrow-60-right';\n/**\n * @hidden\n */\nexport var leftArrowClass = 'k-i-arrow-60-left';\nvar MenuItemArrow = /** @class */ (function (_super) {\n    __extends(MenuItemArrow, _super);\n    function MenuItemArrow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @hidden\n     */\n    MenuItemArrow.prototype.render = function () {\n        return React.createElement(\"span\", { className: this.getArrowClassName(), role: \"presentation\" });\n    };\n    MenuItemArrow.prototype.getArrowClassName = function () {\n        var _a;\n        var childrenPosition = getChildrenPosition(this.props.itemId, this.props.verticalMenu === true, this.props.dir === 'rtl');\n        return classNames('k-icon', 'k-menu-expand-arrow', (_a = {},\n            _a[downArrowClass] = childrenPosition === 'downward',\n            _a[rightArrowClass] = childrenPosition === 'rightward',\n            _a[leftArrowClass] = childrenPosition === 'leftward',\n            _a));\n    };\n    /**\n     * @hidden\n     */\n    MenuItemArrow.propTypes = {\n        itemId: PropTypes.string,\n        dir: PropTypes.string,\n        verticalMenu: PropTypes.bool\n    };\n    return MenuItemArrow;\n}(React.Component));\nexport default MenuItemArrow;\n//# sourceMappingURL=MenuItemArrow.js.map","export var avatarShape;\n(function (avatarShape) {\n    avatarShape[\"CIRCLE\"] = \"circle\";\n    avatarShape[\"SQUARE\"] = \"square\";\n    avatarShape[\"ROUNDED\"] = \"rounded\";\n})(avatarShape || (avatarShape = {}));\nexport var avatarType;\n(function (avatarType) {\n    avatarType[\"INITIALS\"] = \"initials\";\n    avatarType[\"IMAGE\"] = \"image\";\n    avatarType[\"ICON\"] = \"icon\";\n})(avatarType || (avatarType = {}));\nexport var cardOrientation;\n(function (cardOrientation) {\n    cardOrientation[\"HORIZONTAL\"] = \"horizontal\";\n    cardOrientation[\"VERTICAL\"] = \"vertical\";\n})(cardOrientation || (cardOrientation = {}));\nexport var cardType;\n(function (cardType) {\n    cardType[\"DEFAULT\"] = \"default\";\n    cardType[\"primary\"] = \"primary\";\n    cardType[\"INFO\"] = \"info\";\n    cardType[\"SUCCESS\"] = \"success\";\n    cardType[\"WARNING\"] = \"warning\";\n    cardType[\"ERROR\"] = \"error\";\n})(cardType || (cardType = {}));\nexport var cardActionsLayout;\n(function (cardActionsLayout) {\n    cardActionsLayout[\"START\"] = \"start\";\n    cardActionsLayout[\"CENTER\"] = \"center\";\n    cardActionsLayout[\"END\"] = \"end\";\n    cardActionsLayout[\"STRETCHED\"] = \"stretched\";\n})(cardActionsLayout || (cardActionsLayout = {}));\n//# sourceMappingURL=Enums.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { shouldOpenItem, isFirstItemFromSiblings } from '../utils/itemsIdsUtils';\nimport MenuItemLink from './MenuItemLink';\nimport MenuItemArrow from './MenuItemArrow';\nimport MenuItemInternalsList from './MenuItemInternalsList';\nimport { getPopupSettings, convertBoolDirectionToString, getDOMElementId } from '../utils/misc';\n/**\n * @hidden\n */\nvar MenuItemInternal = /** @class */ (function (_super) {\n    __extends(MenuItemInternal, _super);\n    function MenuItemInternal(props) {\n        var _this = _super.call(this, props) || this;\n        _this.isFirstRender = true;\n        _this.onMouseOver = function (event) {\n            _this.props.onMouseOver(_this.props.item.id);\n            event.stopPropagation();\n        };\n        _this.onMouseLeave = function (event) {\n            _this.props.onMouseLeave(_this.props.item.id);\n            event.stopPropagation();\n        };\n        _this.state = { opened: false };\n        return _this;\n    }\n    MenuItemInternal.prototype.componentDidMount = function () {\n        var focusedItemId = this.props.focusedItemId;\n        var currentItemId = this.props.item.id;\n        // If the menu item component has been just mounted due to\n        // keyboard navigation and it is the selected one.\n        if (focusedItemId && focusedItemId === currentItemId) {\n            this.itemElement.focus();\n        }\n        this.isFirstRender = false;\n    };\n    MenuItemInternal.prototype.componentDidUpdate = function (prevProps) {\n        var focusedItemId = this.props.focusedItemId;\n        var currentItemId = this.props.item.id;\n        if (focusedItemId) {\n            // If the item has been navigated to via the keyboard navigation\n            // (Clicking and focusing an item also come here).\n            if (prevProps.focusedItemId !== focusedItemId\n                && focusedItemId === currentItemId\n                // https://github.com/telerik/kendo-react/issues/216 :\n                // No need to focus the wrapping menu item DOM element\n                // when a child DOM element was clicked.\n                && !this.itemElement.contains(document.activeElement)) {\n                this.itemElement.focus();\n            }\n        }\n        else if (document.activeElement === this.itemElement) {\n            this.itemElement.blur();\n        }\n    };\n    MenuItemInternal.prototype.render = function () {\n        var _this = this;\n        var item = this.props.item;\n        var itemId = item.id;\n        return [\n            (React.createElement(\"li\", { className: this.getMenuItemClassName(item), style: item.cssStyle, tabIndex: itemId === this.props.tabbableItemId ? 0 : -1, onMouseOver: this.onMouseOver, onMouseLeave: this.onMouseLeave, onMouseDown: function (event) { return _this.props.onMouseDown(event); }, onBlur: function () { return _this.props.onBlur(itemId); }, onFocus: function () { return _this.props.onFocus(itemId); }, onClick: function (event) { return _this.props.onClick(event, itemId); }, role: \"menuitem\", \"aria-disabled\": item.disabled ? true : undefined, \"aria-haspopup\": item.items.length > 0 ? true : undefined, \"aria-expanded\": item.items.length > 0 ? this.Opened : undefined, \"aria-label\": item.text, \"aria-owns\": this.Opened ? getDOMElementId(this.props.menuGuid, itemId) : undefined, ref: function (el) { return _this.itemElement = el; }, key: \"0\" }, this.contentRender ? this.renderContent() : this.renderMenuItemLink())),\n            this.renderPopupIfOpened()\n        ];\n    };\n    MenuItemInternal.prototype.renderContent = function () {\n        var itemId = this.props.item.contentParentItemId;\n        return (React.createElement(\"div\", { className: \"k-content\", role: \"presentation\" },\n            React.createElement(this.contentRender, { item: this.props.onOriginalItemNeeded(itemId), itemId: itemId })));\n    };\n    MenuItemInternal.prototype.renderMenuItemLink = function () {\n        var item = this.props.item;\n        if (this.linkRender) {\n            return (React.createElement(this.linkRender, { item: this.props.onOriginalItemNeeded(item.id), itemId: item.id, opened: this.Opened, dir: convertBoolDirectionToString(this.props.isDirectionRightToLeft) }));\n        }\n        else {\n            var textOrItemRender = this.itemRender ?\n                React.createElement(this.itemRender, { item: this.props.onOriginalItemNeeded(item.id), itemId: item.id, key: \"1\" }) :\n                item.text;\n            return (React.createElement(MenuItemLink, { url: item.url, opened: this.Opened }, [\n                this.renderMenuIconIfApplicable(),\n                textOrItemRender,\n                this.renderArrowIfApplicable()\n            ]));\n        }\n    };\n    MenuItemInternal.prototype.renderPopupIfOpened = function () {\n        if (this.Opened) {\n            var itemId = this.props.item.id;\n            var _a = getPopupSettings(itemId, this.props.isMenuVertical, this.props.isDirectionRightToLeft), anchorAlign = _a.anchorAlign, popupAlign = _a.popupAlign, collision = _a.collision;\n            return (React.createElement(Popup, { anchor: this.itemElement, show: true, popupClass: this.getPopupClassName(), anchorAlign: anchorAlign, popupAlign: popupAlign, collision: collision, animate: false, key: \"1\" },\n                React.createElement(MenuItemInternalsList, { parentItemId: itemId, items: this.props.item.items, menuGuid: this.props.menuGuid, focusedItemId: this.props.focusedItemId, lastItemIdToBeOpened: this.props.lastItemIdToBeOpened, tabbableItemId: this.props.tabbableItemId, itemRender: this.props.itemRender, linkRender: this.props.linkRender, isMenuVertical: this.props.isMenuVertical, isDirectionRightToLeft: this.props.isDirectionRightToLeft, className: \"k-group k-menu-group k-reset\", onMouseOver: this.props.onMouseOver, onMouseLeave: this.props.onMouseLeave, onMouseDown: this.props.onMouseDown, onBlur: this.props.onBlur, onFocus: this.props.onFocus, onClick: this.props.onClick, onOriginalItemNeeded: this.props.onOriginalItemNeeded })));\n        }\n        else {\n            return null;\n        }\n    };\n    MenuItemInternal.prototype.renderMenuIconIfApplicable = function () {\n        return this.props.item.icon ?\n            React.createElement(\"span\", { className: \"k-icon k-i-\" + this.props.item.icon, role: \"presentation\", key: \"0\" }) : null;\n    };\n    MenuItemInternal.prototype.renderArrowIfApplicable = function () {\n        return this.props.item.items.length > 0 ?\n            (React.createElement(MenuItemArrow, { itemId: this.props.item.id, verticalMenu: this.props.isMenuVertical, dir: convertBoolDirectionToString(this.props.isDirectionRightToLeft), key: \"2\" })) : null;\n    };\n    Object.defineProperty(MenuItemInternal.prototype, \"itemRender\", {\n        get: function () {\n            return this.props.item.render || this.props.itemRender;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MenuItemInternal.prototype, \"linkRender\", {\n        get: function () {\n            return this.props.item.linkRender || this.props.linkRender;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MenuItemInternal.prototype, \"contentRender\", {\n        get: function () {\n            return this.props.item.contentParentItemId ? this.props.item.contentRender : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MenuItemInternal.prototype, \"Opened\", {\n        get: function () {\n            var props = this.props;\n            return props.item.items.length > 0 &&\n                shouldOpenItem(props.item.id, props.lastItemIdToBeOpened) &&\n                // HACK: Wait for the second render because otherwise the scenario of\n                // popup inside popup throws an error (for example, hover of item with id '0_0').\n                !this.isFirstRender;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MenuItemInternal.prototype.getPopupClassName = function () {\n        return classNames('k-menu-popup', { 'k-rtl': this.props.isDirectionRightToLeft });\n    };\n    MenuItemInternal.prototype.getMenuItemClassName = function (item) {\n        return classNames('k-item', 'k-menu-item', {\n            'k-first': isFirstItemFromSiblings(item.id),\n            'k-last': item.isLastFromSiblings,\n            'k-state-disabled': item.disabled\n        }, item.cssClass);\n    };\n    return MenuItemInternal;\n}(React.Component));\nexport default MenuItemInternal;\n//# sourceMappingURL=MenuItemInternal.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport MenuItemInternal from './MenuItemInternal';\nimport { getDOMElementId } from './../utils/misc';\n/**\n * @hidden\n */\nvar MenuItemInternalsList = /** @class */ (function (_super) {\n    __extends(MenuItemInternalsList, _super);\n    function MenuItemInternalsList() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.onMouseOver = function (event) {\n            _this.props.onMouseOver(_this.props.parentItemId);\n            event.stopPropagation();\n        };\n        _this.onMouseLeave = function (event) {\n            _this.props.onMouseLeave(_this.props.parentItemId);\n            event.stopPropagation();\n        };\n        return _this;\n    }\n    MenuItemInternalsList.prototype.render = function () {\n        var parentItemId = this.props.parentItemId;\n        return (React.createElement(\"ul\", { className: this.props.className, role: parentItemId !== undefined ? 'menu' : 'menubar', id: parentItemId !== undefined ? getDOMElementId(this.props.menuGuid, parentItemId) : undefined, onMouseOver: parentItemId !== undefined ? this.onMouseOver : undefined, onMouseLeave: parentItemId !== undefined ? this.onMouseLeave : undefined, \"aria-orientation\": this.props['aria-orientation'] }, this.renderChildItems()));\n    };\n    MenuItemInternalsList.prototype.renderChildItems = function () {\n        var _this = this;\n        return this.props.items.length > 0 ? (this.props.items.map(function (item, index) {\n            return (React.createElement(MenuItemInternal, { item: item, isMenuVertical: _this.props.isMenuVertical, isDirectionRightToLeft: _this.props.isDirectionRightToLeft, focusedItemId: _this.props.focusedItemId, lastItemIdToBeOpened: _this.props.lastItemIdToBeOpened, tabbableItemId: _this.props.tabbableItemId, itemRender: _this.props.itemRender, linkRender: _this.props.linkRender, menuGuid: _this.props.menuGuid, onMouseOver: _this.props.onMouseOver, onMouseLeave: _this.props.onMouseLeave, onMouseDown: _this.props.onMouseDown, onBlur: _this.props.onBlur, onFocus: _this.props.onFocus, onClick: _this.props.onClick, onOriginalItemNeeded: _this.props.onOriginalItemNeeded, key: index }));\n        })) : null;\n    };\n    return MenuItemInternalsList;\n}(React.Component));\nexport default MenuItemInternalsList;\n//# sourceMappingURL=MenuItemInternalsList.js.map","/**\n * @hidden\n */\nvar DirectionHolder = /** @class */ (function () {\n    function DirectionHolder() {\n        // The phase changes in the following sequence:\n        // NotInitialized -> Initialized -> NewValueReceived.\n        this.phase = 'Initialized';\n    }\n    DirectionHolder.prototype.getIsDirectionRightToLeft = function () {\n        return this.isDirectionRightToLeft;\n    };\n    DirectionHolder.prototype.setIsDirectionRightToLeft = function (value) {\n        this.phase = this.phase === 'NotInitialized' ? 'Initialized' : 'NewValueReceived';\n        this.previousIsDirectionRightToLeft = this.isDirectionRightToLeft;\n        this.isDirectionRightToLeft = value;\n    };\n    DirectionHolder.prototype.hasDirectionChanged = function () {\n        return this.phase === 'NewValueReceived' ?\n            this.previousIsDirectionRightToLeft !== this.isDirectionRightToLeft : false;\n    };\n    return DirectionHolder;\n}());\nexport default DirectionHolder;\n//# sourceMappingURL=DirectionHolder.js.map","/**\n * @hidden\n */\nvar MouseOverHandler = /** @class */ (function () {\n    function MouseOverHandler(openOnClick, resetMenu, openItem) {\n        this.openOnClick = openOnClick;\n        this.resetMenu = resetMenu;\n        this.openItem = openItem;\n        this.openOnClick = openOnClick;\n        this.isMouseOverEnabled = openOnClick ? false : true;\n    }\n    Object.defineProperty(MouseOverHandler.prototype, \"OpenOnClick\", {\n        set: function (value) {\n            if (Boolean(value) !== Boolean(this.openOnClick)) {\n                this.mouseDown = false;\n                this.isMouseOverEnabled = value ? false : true;\n            }\n            this.openOnClick = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MouseOverHandler.prototype.handleItemSelectedViaKeyboard = function () {\n        if (this.openOnClick) {\n            this.isMouseOverEnabled = false;\n            this.resetMenu();\n        }\n    };\n    Object.defineProperty(MouseOverHandler.prototype, \"IsMouseOverEnabled\", {\n        get: function () {\n            return this.isMouseOverEnabled;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MouseOverHandler.prototype.handleItemMouseDown = function () {\n        this.mouseDown = true;\n    };\n    MouseOverHandler.prototype.handleItemFocus = function () {\n        // Keep opening on mouse over upon tabbing\n        // and keyboard navigation. However, discard the event\n        // upon click because a cycle occurs and the item does not open.\n        if (this.openOnClick && !this.mouseDown) {\n            this.isMouseOverEnabled = true;\n        }\n        this.mouseDown = false;\n    };\n    MouseOverHandler.prototype.handleItemClick = function (itemId, clickedItemIsWithDefaultClose) {\n        if (this.openOnClick) {\n            if (this.isMouseOverEnabled) {\n                if (clickedItemIsWithDefaultClose) {\n                    this.isMouseOverEnabled = false;\n                    this.resetMenu();\n                }\n            }\n            else {\n                this.isMouseOverEnabled = true;\n                this.openItem(itemId);\n            }\n        }\n    };\n    return MouseOverHandler;\n}());\nexport default MouseOverHandler;\n//# sourceMappingURL=MouseOverHandler.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, guid, dispatchEvent } from '@progress/kendo-react-common';\nimport { getDirectParentId, isIdEmptyOrZeroLevel, EMPTY_ID, ZERO_LEVEL_ZERO_ITEM_ID, getRootParentId, getItemById } from '../utils/itemsIdsUtils';\nimport prepareInputItemsForInternalWork from '../utils/prepareInputItemsForInternalWork';\nimport getNewItemIdUponKeyboardNavigation from '../utils/getNewItemIdUponKeyboardNavigation';\nimport { getHoverOpenDelay, getHoverCloseDelay } from '../utils/hoverDelay';\nimport MenuItemInternalsList from './MenuItemInternalsList';\nimport DirectionHolder from '../utils/DirectionHolder';\nimport MouseOverHandler from '../utils/MouseOverHandler';\nvar initialItemsIds = {\n    focusedItemId: EMPTY_ID,\n    hoveredItemId: EMPTY_ID,\n    tabbableItemId: ZERO_LEVEL_ZERO_ITEM_ID\n};\n/**\n * Represents the [KendoReact Menu component]({% slug overview_menu %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    render() {\n *        return (\n *            <Menu>\n *                <MenuItem text=\"Item1\" />\n *                <MenuItem text=\"Item2\">\n *                    <MenuItem text=\"Item2.1\" />\n *                    <MenuItem text=\"Item2.2\" />\n *                </MenuItem>\n *                <MenuItem text=\"Item3\" />\n *            </Menu>\n *        );\n *    }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n    __extends(Menu, _super);\n    function Menu(props) {\n        var _this = _super.call(this, props) || this;\n        _this.guid = guid();\n        _this.directionHolder = new DirectionHolder();\n        /**\n         * Resets the selection and opening of Menu items.\n         */\n        _this.reset = function () {\n            _this.clearItemHoverAndLeaveRequestsIfApplicable();\n            _this.setState(initialItemsIds);\n        };\n        _this.onKeyDown = function (event) {\n            // The focusedItemId may be empty when contentRender is used.\n            // For example, content with input.\n            if (_this.state.focusedItemId !== EMPTY_ID) {\n                var currentItem = getItemById(_this.state.focusedItemId, _this.items);\n                var newItemId = getNewItemIdUponKeyboardNavigation(_this.items, currentItem.id, event.keyCode, event.key, _this.props.vertical, _this.directionHolder.getIsDirectionRightToLeft());\n                if (currentItem.id !== newItemId) {\n                    event.preventDefault();\n                    _this.setFocusedItemId(newItemId);\n                }\n                if ((event.keyCode === Keys.enter || event.keyCode === Keys.space) && !currentItem.disabled) {\n                    _this.mouseOverHandler.handleItemSelectedViaKeyboard();\n                    _this.dispatchSelectEventIfWired(event, currentItem.id);\n                    if (!event.isDefaultPrevented() && currentItem.items.length === 0 && currentItem.url) {\n                        window.location.assign(currentItem.url);\n                    }\n                }\n            }\n        };\n        _this.onItemMouseOver = function (itemId) {\n            if (_this.mouseOverHandler.IsMouseOverEnabled) {\n                // The `over` event can get fired even without actually leaving the item.\n                // For example, move the mouse little by little over the item content.\n                _this.clearItemHoverAndLeaveRequestsIfApplicable();\n                _this.itemHoverRequest = setTimeout(function () {\n                    _this.setHoveredItemId(itemId);\n                    _this.itemHoverRequest = null;\n                }, getHoverOpenDelay(_this.props));\n            }\n        };\n        _this.onItemMouseLeave = function (itemId) {\n            if (_this.mouseOverHandler.IsMouseOverEnabled && _this.isItemWithDefaultClose(itemId)) {\n                // Both the `leave` and `hover` requests are cleared\n                // to be defensive and consistent with the `over` handler.\n                _this.clearItemHoverAndLeaveRequestsIfApplicable();\n                _this.itemLeaveRequest = setTimeout(function () {\n                    _this.setHoveredItemId(EMPTY_ID);\n                    _this.itemLeaveRequest = null;\n                }, getHoverCloseDelay(_this.props));\n            }\n        };\n        _this.onItemMouseDown = function () {\n            _this.mouseOverHandler.handleItemMouseDown();\n        };\n        _this.onItemFocus = function (itemId) {\n            _this.setFocusedItemId(itemId);\n            _this.mouseOverHandler.handleItemFocus();\n        };\n        _this.onItemClick = function (event, itemId) {\n            var item = getItemById(itemId, _this.items);\n            if (!item.disabled) {\n                _this.setFocusedItemId(itemId);\n                _this.mouseOverHandler.handleItemClick(itemId, _this.isItemWithDefaultClose(itemId));\n                _this.dispatchSelectEventIfWired(event, itemId);\n                if (!event.isDefaultPrevented() && item.url) {\n                    window.location.assign(item.url);\n                }\n            }\n        };\n        _this.onItemBlur = function (itemId) {\n            if (_this.isItemWithDefaultClose(itemId)) {\n                _this.setFocusedItemId(EMPTY_ID);\n            }\n        };\n        _this.getInputItem = function (itemId) {\n            return getItemById(itemId, _this.inputItems);\n        };\n        _this.mouseOverHandler = new MouseOverHandler(_this.props.openOnClick, _this.reset, _this.onItemMouseOver);\n        _this.state = Object.assign({}, initialItemsIds, { isFirstRender: true });\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Menu.prototype.render = function () {\n        var _this = this;\n        this.prepareItems();\n        if (!this.state.isFirstRender) {\n            this.directionHolder.setIsDirectionRightToLeft(this.checkIsDirectionRightToLeft());\n        }\n        var lastItemIdToBeOpened = this.state.hoveredItemId ?\n            this.state.hoveredItemId :\n            this.state.focusedItemId ? getDirectParentId(this.state.focusedItemId) : EMPTY_ID;\n        return (React.createElement(\"div\", { onKeyDown: this.onKeyDown, style: this.props.style, className: this.getMenuWrapperClassName(), ref: function (el) { return _this.menuWrapperEl = el; } },\n            React.createElement(MenuItemInternalsList, { className: this.getMenuClassName(), \"aria-orientation\": this.props.vertical ? 'vertical' : undefined, items: this.items, isMenuVertical: this.props.vertical, isDirectionRightToLeft: this.directionHolder.getIsDirectionRightToLeft(), focusedItemId: this.state.focusedItemId, lastItemIdToBeOpened: lastItemIdToBeOpened, tabbableItemId: this.state.tabbableItemId, itemRender: this.props.itemRender, linkRender: this.props.linkRender, menuGuid: this.guid, onMouseLeave: this.onItemMouseLeave, onMouseOver: this.onItemMouseOver, onMouseDown: this.onItemMouseDown, onFocus: this.onItemFocus, onClick: this.onItemClick, onBlur: this.onItemBlur, onOriginalItemNeeded: this.getInputItem })));\n    };\n    /**\n     * @hidden\n     */\n    Menu.prototype.componentDidMount = function () {\n        this.setState({ isFirstRender: false });\n    };\n    /**\n     * @hidden\n     */\n    Menu.prototype.componentDidUpdate = function (prevProps) {\n        // Reset the Menu upon big UI changes\n        // to avoid misleading the user and to\n        // keep the component consistent.\n        if (Boolean(prevProps.vertical) !== Boolean(this.props.vertical) ||\n            this.directionHolder.hasDirectionChanged()) {\n            this.reset();\n        }\n        this.mouseOverHandler.OpenOnClick = this.props.openOnClick;\n    };\n    /**\n     * @hidden\n     */\n    Menu.prototype.componentWillUnmount = function () {\n        this.clearItemHoverAndLeaveRequestsIfApplicable();\n    };\n    Menu.prototype.setFocusedItemId = function (focusedItemId) {\n        this.setState(function (prevState) {\n            var tabbableItemId = focusedItemId === EMPTY_ID ?\n                prevState.tabbableItemId : getRootParentId(focusedItemId);\n            var hoveredItemId = focusedItemId === EMPTY_ID ||\n                (isIdEmptyOrZeroLevel(prevState.hoveredItemId) && isIdEmptyOrZeroLevel(focusedItemId)) ?\n                prevState.hoveredItemId : EMPTY_ID;\n            return { hoveredItemId: hoveredItemId, focusedItemId: focusedItemId, tabbableItemId: tabbableItemId };\n        });\n    };\n    Menu.prototype.setHoveredItemId = function (hoveredItemId) {\n        this.setState(function (prevState) {\n            if (isIdEmptyOrZeroLevel(hoveredItemId) && isIdEmptyOrZeroLevel(prevState.focusedItemId)) {\n                return {\n                    hoveredItemId: hoveredItemId,\n                    focusedItemId: prevState.focusedItemId,\n                    tabbableItemId: prevState.tabbableItemId\n                };\n            }\n            else {\n                return { hoveredItemId: hoveredItemId, focusedItemId: EMPTY_ID, tabbableItemId: ZERO_LEVEL_ZERO_ITEM_ID };\n            }\n        });\n    };\n    Menu.prototype.getMenuWrapperClassName = function () {\n        return classNames({\n            'k-rtl': this.directionHolder.getIsDirectionRightToLeft()\n        }, this.props.className);\n    };\n    Menu.prototype.getMenuClassName = function () {\n        return classNames('k-widget', 'k-reset', 'k-header', 'k-menu', { 'k-menu-horizontal': !this.props.vertical }, { 'k-menu-vertical': this.props.vertical });\n    };\n    Menu.prototype.clearItemHoverAndLeaveRequestsIfApplicable = function () {\n        if (this.itemHoverRequest) {\n            clearTimeout(this.itemHoverRequest);\n            this.itemHoverRequest = null;\n        }\n        if (this.itemLeaveRequest) {\n            clearTimeout(this.itemLeaveRequest);\n            this.itemLeaveRequest = null;\n        }\n    };\n    Menu.prototype.isItemWithDefaultClose = function (itemId) {\n        return !this.props.customCloseItemIds || this.props.customCloseItemIds.indexOf(itemId) === -1;\n    };\n    Menu.prototype.checkIsDirectionRightToLeft = function () {\n        return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n            this.menuWrapperEl && getComputedStyle(this.menuWrapperEl).direction === 'rtl';\n    };\n    Menu.prototype.prepareItems = function () {\n        var _a = prepareInputItemsForInternalWork(this.props.items, this.props.children), items = _a.items, inputItems = _a.inputItems;\n        this.items = items;\n        this.inputItems = inputItems;\n    };\n    Menu.prototype.dispatchSelectEventIfWired = function (event, itemId) {\n        dispatchEvent(this.props.onSelect, event, this, { item: this.getInputItem(itemId), itemId: itemId });\n    };\n    /**\n     * @hidden\n     */\n    Menu.propTypes = {\n        vertical: PropTypes.bool,\n        items: PropTypes.arrayOf(PropTypes.object),\n        style: PropTypes.object,\n        dir: PropTypes.string,\n        hoverOpenDelay: PropTypes.number,\n        hoverCloseDelay: PropTypes.number,\n        openOnClick: PropTypes.bool,\n        itemRender: PropTypes.any,\n        linkRender: PropTypes.any,\n        customCloseItemIds: PropTypes.arrayOf(PropTypes.string),\n        onSelect: PropTypes.func\n    };\n    /**\n     * @hidden\n     */\n    Menu.defaultProps = { vertical: false };\n    return Menu;\n}(React.Component));\nexport default Menu;\n//# sourceMappingURL=Menu.js.map","/**\n * @hidden\n */\nexport function getHoverOpenDelay(props) {\n    if (props.hoverOpenDelay !== undefined) {\n        return props.hoverOpenDelay;\n    }\n    else {\n        return props.openOnClick ? 0 : 100;\n    }\n}\n/**\n * @hidden\n */\nexport function getHoverCloseDelay(props) {\n    return props.hoverCloseDelay !== undefined ? props.hoverCloseDelay : 100;\n}\n//# sourceMappingURL=hoverDelay.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar SplitterPane = /** @class */ (function (_super) {\n    __extends(SplitterPane, _super);\n    function SplitterPane() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SplitterPane.prototype.render = function () {\n        var _a;\n        var _b = this.props, size = _b.size, collapsed = _b.collapsed, overlay = _b.overlay, containsSplitter = _b.containsSplitter, collapsible = _b.collapsible, resizable = _b.resizable, scrollable = _b.scrollable, keepMounted = _b.keepMounted;\n        var fixedSize = size && size.length > 0;\n        var style = {\n            flexBasis: size\n        };\n        var paneClasses = classNames('k-pane', (_a = {},\n            _a['k-state-hidden'] = collapsed,\n            _a['hidden'] = collapsed,\n            _a['k-pane-flex'] = containsSplitter,\n            _a['k-pane-static'] = !resizable && !collapsible || fixedSize,\n            _a['k-scrollable'] = scrollable,\n            _a));\n        return (React.createElement(\"div\", { style: style, className: paneClasses },\n            !collapsed || keepMounted ? this.props.children : undefined,\n            overlay ? React.createElement(\"div\", { className: 'k-splitter-overlay k-overlay' }) : undefined));\n    };\n    return SplitterPane;\n}(React.Component));\nexport { SplitterPane };\n//# sourceMappingURL=SplitterPane.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { classNames, Draggable, Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar SplitterBar = /** @class */ (function (_super) {\n    __extends(SplitterBar, _super);\n    function SplitterBar(props) {\n        var _this = _super.call(this, props) || this;\n        _this.onDrag = function (data, isFirst, isLast) {\n            var event = data.event;\n            var _a = _this.props, onDrag = _a.onDrag, index = _a.index;\n            var element = _this.draggable && _this.draggable.element;\n            if (!isLast && event) {\n                event.originalEvent.preventDefault();\n            }\n            if (element && !_this.isStatic && _this.isDraggable) {\n                onDrag(event, element, index, isFirst, isLast);\n            }\n        };\n        _this.onFocus = function () {\n            _this.setState({\n                focused: true\n            });\n        };\n        _this.onBlur = function () {\n            _this.setState({\n                focused: false\n            });\n        };\n        _this.onToggle = function (event) {\n            var _a = _this.props, onToggle = _a.onToggle, index = _a.index, prev = _a.prev, next = _a.next;\n            if (prev.collapsible || next.collapsible) {\n                onToggle(prev.collapsible ? index : index + 1, event);\n            }\n        };\n        _this.onPrevToggle = function (event) {\n            var _a = _this.props, onToggle = _a.onToggle, index = _a.index, prev = _a.prev;\n            if (prev.collapsible) {\n                onToggle(index, event);\n            }\n        };\n        _this.onNextToggle = function (event) {\n            var _a = _this.props, onToggle = _a.onToggle, index = _a.index, next = _a.next;\n            if (next.collapsible) {\n                onToggle(index + 1, event);\n            }\n        };\n        _this.onKeyDown = function (event) {\n            var keyCode = event && event.keyCode;\n            var isHorizontal = _this.isHorizontal;\n            var index = _this.props.index;\n            var element = _this.draggable && _this.draggable.element;\n            var onKeyboardResize = function (el, idx, offset) {\n                event.preventDefault();\n                _this.props.onKeyboardResize(el, idx, offset, event);\n            };\n            if (!element) {\n                return;\n            }\n            if (keyCode === Keys.enter) {\n                event.preventDefault();\n                _this.onToggle(event);\n            }\n            else if (_this.isDraggable) {\n                if (isHorizontal && keyCode === Keys.left) {\n                    onKeyboardResize(element, index, -10);\n                }\n                else if (isHorizontal && keyCode === Keys.right) {\n                    onKeyboardResize(element, index, 10);\n                }\n                else if (!isHorizontal && keyCode === Keys.up) {\n                    onKeyboardResize(element, index, -10);\n                }\n                else if (!isHorizontal && keyCode === Keys.down) {\n                    onKeyboardResize(element, index, 10);\n                }\n            }\n        };\n        _this.previousArrowClass = function (isHorizontal) {\n            var _a;\n            var prev = _this.props.prev;\n            var isCollapsible = prev.collapsible;\n            var isCollapsed = prev.collapsed;\n            return classNames('k-icon', (_a = {},\n                _a['k-hidden'] = !isCollapsible,\n                _a['k-collapse-prev'] = isCollapsible,\n                _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && !isCollapsed,\n                _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && isCollapsed,\n                _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && !isCollapsed,\n                _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && isCollapsed,\n                _a));\n        };\n        _this.nextArrowClass = function (isHorizontal) {\n            var _a;\n            var next = _this.props.next;\n            var isCollapsible = next.collapsible;\n            var isCollapsed = next.collapsed;\n            return classNames('k-icon', (_a = {},\n                _a['k-hidden'] = !isCollapsible,\n                _a['k-collapse-next'] = isCollapsible,\n                _a['k-i-arrow-60-right'] = isCollapsible && isHorizontal && !isCollapsed,\n                _a['k-i-arrow-60-left'] = isCollapsible && isHorizontal && isCollapsed,\n                _a['k-i-arrow-60-down'] = isCollapsible && !isHorizontal && !isCollapsed,\n                _a['k-i-arrow-60-up'] = isCollapsible && !isHorizontal && isCollapsed,\n                _a));\n        };\n        _this.state = {\n            focused: false\n        };\n        return _this;\n    }\n    Object.defineProperty(SplitterBar.prototype, \"isStatic\", {\n        get: function () {\n            var _a = this.props, prev = _a.prev, next = _a.next;\n            var betweenResizablePanes = prev.resizable && next.resizable;\n            var nearCollapsiblePane = prev.collapsible || next.collapsible;\n            return !betweenResizablePanes && !nearCollapsiblePane;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SplitterBar.prototype, \"isDraggable\", {\n        get: function () {\n            var _a = this.props, prev = _a.prev, next = _a.next;\n            var betweenResizablePanes = prev.resizable && next.resizable;\n            var nearCollapsedPane = prev.collapsed || next.collapsed;\n            return !!betweenResizablePanes && !nearCollapsedPane;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SplitterBar.prototype, \"isHorizontal\", {\n        get: function () {\n            return this.props.orientation === 'horizontal';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SplitterBar.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var isDraggable = this.isDraggable;\n        var isStatic = this.isStatic;\n        var isHorizontal = this.isHorizontal;\n        var barClasses = classNames('k-splitbar', (_a = {},\n            _a['k-state-focused'] = this.state.focused,\n            _a['k-splitbar-horizontal'] = isHorizontal,\n            _a['k-splitbar-vertical'] = !isHorizontal,\n            _a['k-splitbar-draggable-horizontal'] = isHorizontal && isDraggable,\n            _a['k-splitbar-draggable-vertical'] = !isHorizontal && isDraggable,\n            _a['k-splitbar-static-horizontal'] = isHorizontal && isStatic,\n            _a['k-splitbar-static-vertical'] = !isHorizontal && isStatic,\n            _a));\n        var previousArrowClass = this.previousArrowClass(isHorizontal);\n        var nextArrowClass = this.nextArrowClass(isHorizontal);\n        return (React.createElement(Draggable, { onPress: function (event) { return _this.onDrag(event, true, false); }, onDrag: function (event) { return _this.onDrag(event, false, false); }, onRelease: function (event) { return _this.onDrag(event, false, true); }, ref: function (component) { _this.draggable = component; } },\n            React.createElement(\"div\", { tabIndex: isStatic ? -1 : 0, role: 'separator', className: barClasses, style: { touchAction: 'none' }, onFocus: this.onFocus, onBlur: this.onBlur, onDoubleClick: this.onToggle, onKeyDown: this.onKeyDown },\n                React.createElement(\"div\", { className: previousArrowClass, onClick: this.onPrevToggle }),\n                React.createElement(\"div\", { className: 'k-resize-handle' }),\n                React.createElement(\"div\", { className: nextArrowClass, onClick: this.onNextToggle }))));\n    };\n    return SplitterBar;\n}(React.Component));\nexport { SplitterBar };\n//# sourceMappingURL=SplitterBar.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { SplitterPane } from './SplitterPane';\nimport { SplitterBar } from './SplitterBar';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar PANE_DEFAULTS = {\n    collapsible: false,\n    collapsed: false,\n    resizable: true,\n    scrollable: true\n};\n/**\n * @hidden\n */\nvar DOUBLE_CLICK_WAIT_TIME = 150;\n/**\n * Represents the [KendoReact Splitter component]({% slug overview_splitter %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n *    render() {\n *        return (\n *            <div>\n *                <Splitter\n *                    style={{height: 400}}\n *                    orientation={'vertical'}\n *                >\n *                    <div>Pane 1</div>\n *                    <div>Pane 2</div>\n *                    <div>Pane 3</div>\n *                </Splitter>\n *            </div>\n *        );\n *    }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n    __extends(Splitter, _super);\n    /**\n     * @hidden\n     */\n    function Splitter(props) {\n        var _this = _super.call(this, props) || this;\n        _this.validatePanes = function (panesOptions) {\n            var withoutSize = panesOptions.filter(function (pane) { return pane.size === undefined; });\n            if (!withoutSize.length) {\n                throw new Error('The Splitter should have at least one pane without a set size.');\n            }\n        };\n        _this.mapPaneOptions = function (panes, panesContent) {\n            var orientation = _this.orientation;\n            var _a = _this.state, dragIndex = _a.dragIndex, isDragging = _a.isDragging;\n            var paneOptions = [];\n            for (var index = 0; index < panesContent.length; index++) {\n                var containsSplitter = false;\n                var paneContent = panesContent[index];\n                if (React.isValidElement(paneContent)) {\n                    containsSplitter = paneContent.type.displayName === 'Splitter';\n                }\n                var overlay = false;\n                if (isDragging && dragIndex !== undefined) {\n                    overlay = dragIndex === index || dragIndex + 1 === index;\n                }\n                paneOptions.push(__assign({}, PANE_DEFAULTS, { orientation: orientation,\n                    containsSplitter: containsSplitter,\n                    overlay: overlay }, (panes || [])[index]));\n            }\n            return paneOptions;\n        };\n        _this.mapSplitterPanes = function (panes, panesContent) {\n            return panes.map(function (pane, index) {\n                var splitterBar;\n                var paneKey = index * 2;\n                var barKey = paneKey + 1;\n                if (index + 1 < panes.length) {\n                    var next = panes[index + 1];\n                    splitterBar = (React.createElement(SplitterBar, { key: barKey, index: index, orientation: pane.orientation, prev: pane, next: next, onDrag: _this.onBarDragResize, onToggle: _this.onBarToggle, onKeyboardResize: _this.onBarKeyboardResize }));\n                }\n                var splitterPane = (React.createElement(SplitterPane, __assign({ key: paneKey }, pane), panesContent[index]));\n                return [splitterPane, splitterBar];\n            });\n        };\n        _this.onBarToggle = function (index, event) {\n            var panesOptions = _this.panesOptions(_this.panesContent);\n            var updatedState = panesOptions.map(function (pane, idx) {\n                var paneProps = _this.getPaneProps(pane);\n                if (idx === index) {\n                    return __assign({}, paneProps, { collapsed: !pane.collapsed });\n                }\n                else {\n                    return __assign({}, paneProps);\n                }\n            });\n            if (_this.props.onLayoutChange) {\n                _this.props.onLayoutChange(updatedState, true, event);\n            }\n            if (_this.props.onChange) {\n                _this.props.onChange({\n                    newState: updatedState,\n                    isLast: true,\n                    nativeEvent: event\n                });\n            }\n        };\n        _this.onBarDragResize = function (event, barElement, index, isFirst, isLast) {\n            var time = new Date().getTime();\n            var pageX = event.pageX, pageY = event.pageY;\n            var _a = _this.surroudingPanes(barElement), prevElement = _a.prevElement, nextElement = _a.nextElement;\n            if (!prevElement || !nextElement) {\n                return;\n            }\n            if (isFirst) {\n                _this.setState({\n                    isDragging: true,\n                    dragIndex: index,\n                    startTime: time,\n                    originalX: pageX,\n                    originalY: pageY,\n                    originalPrevSize: _this.elementSize(prevElement),\n                    originalNextSize: _this.elementSize(nextElement)\n                });\n                return;\n            }\n            var _b = _this.state, originalPrevSize = _b.originalPrevSize, originalNextSize = _b.originalNextSize, startTime = _b.startTime, originalX = _b.originalX, originalY = _b.originalY;\n            if (!isFirst && time - startTime < DOUBLE_CLICK_WAIT_TIME) {\n                if (isLast) {\n                    _this.resetDragState();\n                }\n                return;\n            }\n            var delta;\n            if (_this.orientation === 'vertical') {\n                delta = pageY - originalY;\n            }\n            else if (_this.isRtl) {\n                delta = originalX - pageX;\n            }\n            else {\n                delta = pageX - originalX;\n            }\n            _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, isLast, event);\n            if (isLast) {\n                _this.resetDragState();\n            }\n        };\n        _this.onBarKeyboardResize = function (barElement, index, delta, event) {\n            var _a = _this.surroudingPanes(barElement), prevElement = _a.prevElement, nextElement = _a.nextElement;\n            var originalPrevSize = _this.elementSize(prevElement);\n            var originalNextSize = _this.elementSize(nextElement);\n            _this.resize(index, index + 1, originalPrevSize, originalNextSize, delta, true, event);\n        };\n        _this.containerSize = function () {\n            if (!_this._container) {\n                return 0;\n            }\n            return _this.elementSize(_this._container, true);\n        };\n        _this.panesOptions = function (panesContent) {\n            return _this.mapPaneOptions(_this.panes, panesContent);\n        };\n        _this.elementSize = function (el, isContainer) {\n            var sizeType = isContainer ? 'client' : 'offset';\n            if (_this.orientation === 'vertical') {\n                return el[sizeType + \"Height\"];\n            }\n            else {\n                return el[sizeType + \"Width\"];\n            }\n        };\n        _this.clamp = function (min, max, v) { return Math.min(max, Math.max(min, v)); };\n        _this.fixedSize = function (size) { return size && size.length > 0; };\n        _this.state = {\n            isDragging: false,\n            dragIndex: undefined,\n            startTime: 0,\n            originalX: 0,\n            originalY: 0,\n            originalPrevSize: 0,\n            originalNextSize: 0,\n            panes: props.defaultPanes || []\n        };\n        return _this;\n    }\n    Object.defineProperty(Splitter.prototype, \"isControlledState\", {\n        get: function () {\n            return this.props.panes !== undefined;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Splitter.prototype, \"panes\", {\n        get: function () {\n            return this.panesDuringOnChange !== undefined ?\n                this.panesDuringOnChange :\n                (this.isControlledState ? this.props.panes : this.state.panes);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Splitter.prototype, \"orientation\", {\n        get: function () {\n            return this.props.orientation || 'horizontal';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Splitter.prototype, \"isRtl\", {\n        get: function () {\n            return this._container && (getComputedStyle(this._container).direction === 'rtl') || false;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Splitter.prototype, \"panesContent\", {\n        get: function () {\n            return React.Children.toArray(this.props.children).filter(function (c) { return c; });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Splitter.prototype.render = function () {\n        var _this = this;\n        var panesContent = this.panesContent;\n        var panesOptions = this.panesOptions(panesContent);\n        var className = classNames('k-widget', 'k-splitter', 'k-splitter-flex', \"k-splitter-\" + this.orientation, this.props.className);\n        this.validatePanes(panesOptions);\n        return (React.createElement(\"div\", { style: this.props.style, ref: function (ref) { return _this._container = ref; }, className: className }, this.mapSplitterPanes(panesOptions, panesContent)));\n    };\n    Splitter.prototype.surroudingPanes = function (barElement) {\n        return {\n            prevElement: barElement.previousElementSibling,\n            nextElement: barElement.nextElementSibling\n        };\n    };\n    Splitter.prototype.isPercent = function (size) {\n        return /%$/.test(size);\n    };\n    Splitter.prototype.toPixels = function (size, splitterSize) {\n        var result = parseInt(size, 10);\n        if (this.isPercent(size)) {\n            result = (splitterSize * result / 100);\n        }\n        return result;\n    };\n    Splitter.prototype.resetDragState = function () {\n        this.setState({\n            isDragging: false,\n            dragIndex: undefined,\n            startTime: 0,\n            originalX: 0,\n            originalY: 0,\n            originalPrevSize: 0,\n            originalNextSize: 0\n        });\n    };\n    Splitter.prototype.resize = function (prevIndex, nextIndex, originalPrevSize, originalNextSize, delta, isLast, event) {\n        var _this = this;\n        var panesOptions = this.panesOptions(this.panesContent);\n        var prevOptions = panesOptions[prevIndex];\n        var nextOptions = panesOptions[nextIndex];\n        var total = originalPrevSize + originalNextSize;\n        var splitterSize = this.containerSize();\n        var px = function (s) { return _this.toPixels(s, splitterSize); };\n        var prevDragState = {\n            index: prevIndex,\n            initialSize: originalPrevSize,\n            min: px(prevOptions.min) || total - px(nextOptions.max) || 0,\n            max: px(prevOptions.max) || total - px(nextOptions.min) || total\n        };\n        var nextDragState = {\n            index: nextIndex,\n            initialSize: originalNextSize,\n            min: px(nextOptions.min) || total - px(prevOptions.max) || 0,\n            max: px(nextOptions.max) || total - px(prevOptions.min) || total\n        };\n        var resize = function (paneState, change) {\n            var pane = panesOptions[paneState.index];\n            var newSize = _this.clamp(paneState.min, paneState.max, paneState.initialSize + change);\n            if (_this.isPercent(pane.size || '')) {\n                return 100 * newSize / splitterSize + '%';\n            }\n            else {\n                return newSize + 'px';\n            }\n        };\n        var prevSize;\n        var nextSize;\n        if (this.fixedSize(prevOptions.size) && this.fixedSize(nextOptions.size)) {\n            prevSize = resize(prevDragState, delta);\n            nextSize = resize(nextDragState, -delta);\n        }\n        else if (nextOptions.collapsible || this.fixedSize(nextOptions.size)) {\n            nextSize = resize(nextDragState, -delta);\n        }\n        else {\n            prevSize = resize(prevDragState, delta);\n        }\n        var updatedState = panesOptions.map(function (pane, idx) {\n            var paneProps = _this.getPaneProps(pane);\n            if (idx === prevIndex) {\n                return __assign({}, paneProps, { size: prevSize });\n            }\n            else if (idx === nextIndex) {\n                return __assign({}, paneProps, { size: nextSize });\n            }\n            else {\n                return __assign({}, paneProps);\n            }\n        });\n        this.panesDuringOnChange = updatedState;\n        if (!this.isControlledState) {\n            this.setState({\n                panes: updatedState\n            });\n        }\n        if (this.props.onLayoutChange) {\n            this.props.onLayoutChange(updatedState, isLast, event);\n        }\n        if (this.props.onChange) {\n            this.props.onChange({\n                newState: updatedState,\n                isLast: isLast,\n                nativeEvent: event\n            });\n        }\n        this.panesDuringOnChange = undefined;\n    };\n    Splitter.prototype.getPaneProps = function (pane) {\n        var orientation = pane.orientation, overlay = pane.overlay, containsSplitter = pane.containsSplitter, others = __rest(pane, [\"orientation\", \"overlay\", \"containsSplitter\"]);\n        return others;\n    };\n    /**\n     * @hidden\n     */\n    Splitter.displayName = 'Splitter';\n    return Splitter;\n}(React.Component));\nexport { Splitter };\n//# sourceMappingURL=Splitter.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cardType } from './interfaces/Enums';\nimport { cardOrientation } from './interfaces/Enums';\nvar Card = function (props) {\n    var _a;\n    return (React.createElement(\"div\", { dir: props.dir, style: props.style, className: classNames('k-card', props.className, (_a = {}, _a[\"k-state-\" + props.type] = props.type !== cardType.DEFAULT, _a), props.orientation !== cardOrientation.HORIZONTAL ? 'k-card-vertical' : 'k-card-horizontal') }, props.children));\n};\nCard.propTypes = {\n    className: PropTypes.string,\n    type: PropTypes.oneOf(['default', 'primary', 'info', 'success', 'warning', 'error']),\n    orientation: PropTypes.oneOf(['horizontal', 'vertical'])\n};\nCard.defaultProps = {\n    type: cardType.DEFAULT,\n    orientation: cardOrientation.VERTICAL,\n    dir: 'ltr'\n};\nexport default Card;\n//# sourceMappingURL=Card.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardHeader = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-header', props.className) }, props.children));\n};\nCardHeader.propTypes = {\n    className: PropTypes.string\n};\nexport default CardHeader;\n//# sourceMappingURL=CardHeader.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardTitle = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-title', props.className) }, props.children));\n};\nCardTitle.propTypes = {\n    className: PropTypes.string\n};\nexport default CardTitle;\n//# sourceMappingURL=CardTitle.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardBody = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-body', props.className) }, props.children));\n};\nCardBody.propTypes = {\n    className: PropTypes.string\n};\nexport default CardBody;\n//# sourceMappingURL=CardBody.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cardActionsLayout, cardOrientation } from './interfaces/Enums';\nvar CardActions = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-actions', props.className, \"k-card-actions-\" + props.layout, props.orientation !== cardOrientation.VERTICAL ? 'k-card-actions-horizontal' : 'k-card-actions-vertical') }, props.children));\n};\nCardActions.propTypes = {\n    layout: PropTypes.oneOf(['stretched', 'start', 'center', 'end']),\n    orientation: PropTypes.oneOf(['horizontal', 'vertical'])\n};\nCardActions.defaultProps = {\n    layout: cardActionsLayout.START,\n    orientation: cardOrientation.HORIZONTAL\n};\nexport default CardActions;\n//# sourceMappingURL=CardActions.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardImage = function (props) {\n    return (React.createElement(\"img\", { style: props.style, className: classNames('k-card-image', props.className), src: props.src }));\n};\nCardImage.propTypes = {\n    className: PropTypes.string,\n    src: PropTypes.string\n};\nCardImage.defaultProps = {\n    src: ''\n};\nexport default CardImage;\n//# sourceMappingURL=CardImage.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardSubtitle = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-subtitle', props.className) }, props.children));\n};\nCardSubtitle.propTypes = {\n    className: PropTypes.string\n};\nexport default CardSubtitle;\n//# sourceMappingURL=CardSubtitle.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nvar CardFooter = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-footer', props.className) }, props.children));\n};\nCardFooter.propTypes = {\n    className: PropTypes.string\n};\nexport default CardFooter;\n//# sourceMappingURL=CardFooter.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { avatarType, avatarShape } from './interfaces/Enums';\nvar Avatar = function (props) {\n    return (React.createElement(\"div\", { style: props.style, className: classNames('k-avatar', \"k-avatar-\" + props.shape, \"k-avatar-\" + props.type, props.className) }, props.children));\n};\nAvatar.propTypes = {\n    className: PropTypes.string,\n    shape: PropTypes.oneOf(['circle', 'square', 'rounded']),\n    type: PropTypes.oneOf(['initials', 'image', 'icon'])\n};\nAvatar.defaultProps = {\n    type: avatarType.INITIALS,\n    shape: avatarShape.SQUARE\n};\nexport default Avatar;\n//# sourceMappingURL=Avatar.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nvar defaultContext = {\n    animation: true,\n    expanded: false,\n    mode: 'overlay',\n    position: 'start',\n    mini: false,\n    dir: 'ltr',\n    width: 240,\n    miniWidth: 50\n};\n/** @hidden */\nexport var DrawerContext = React.createContext(defaultContext);\n//# sourceMappingURL=DrawerContext.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, getTabIndex } from '@progress/kendo-react-common';\nimport { DrawerContext } from './context/DrawerContext';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n *    const App = () => {\n *      const [stateVisible, setStateVisible] = React.useState(true);\n *      const handleClick = () => { setStateVisible(prevState => !prevState); };\n *\n *      return (\n *        <Drawer expanded={stateVisible} mode={'push'}>\n *            <DrawerNavigation>\n *                <DrawerItem text=\"Inbox\" icon=\"k-i-inbox\" />\n *                <DrawerItem separator={true} />\n *                <DrawerItem text=\"Notifications\" icon=\"k-i-bell\" disabled={true}/>\n *                <DrawerItem text=\"Calendar\" icon=\"k-i-calendar\"/>\n *                <DrawerItem separator={true} />\n *                <DrawerItem text=\"Attachments\" icon=\"k-i-hyperlink-email\" selected={true}/>\n *                <DrawerItem text=\"Favourites\" icon=\"k-i-star-outline\"/>\n *            </DrawerNavigation>\n *            <DrawerContent><button className=\"k-button\" onClick={handleClick}>Toggle the drawer state</button></DrawerContent>\n *        </Drawer>\n *      );\n *    };\n *\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerItem = React.forwardRef(function (props, target) {\n    var className = props.className, style = props.style, text = props.text, icon = props.icon, separator = props.separator, disabled = props.disabled, selected = props.selected, onSelect = props.onSelect, index = props.index, tabIndex = props.tabIndex, children = props.children, others = __rest(props, [\"className\", \"style\", \"text\", \"icon\", \"separator\", \"disabled\", \"selected\", \"onSelect\", \"index\", \"tabIndex\", \"children\"]);\n    var _a = React.useContext(DrawerContext), expanded = _a.expanded, mini = _a.mini, item = _a.item;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        focus: focusElement,\n        props: props\n    }); });\n    var itemClassNames = classNames('k-drawer-item', {\n        'k-state-selected': selected,\n        'k-state-disabled': disabled\n    }, className);\n    var handleClick = React.useCallback(function () {\n        if (onSelect && !disabled) {\n            var handle = {\n                element: elementRef,\n                focus: focusElement,\n                props: props\n            };\n            onSelect(handle, index);\n        }\n    }, [onSelect, index, disabled]);\n    var drawerItemContent = (React.createElement(React.Fragment, null,\n        props.icon && React.createElement(\"span\", { className: 'k-icon ' + props.icon }),\n        !expanded && mini ? null : React.createElement(\"span\", { className: 'k-item-text' }, props.text)));\n    return (separator ? React.createElement(\"li\", { className: 'k-drawer-item k-drawer-separator' }) :\n        (React.createElement(\"li\", __assign({ ref: elementRef, className: itemClassNames, style: style, \"aria-selected\": selected, \"aria-disabled\": disabled, role: \"option\", onClick: handleClick, tabIndex: getTabIndex(tabIndex, disabled) }, others), !item ? drawerItemContent : props.children)));\n});\nDrawerItem.propTypes = {\n    className: PropTypes.string,\n    style: PropTypes.object,\n    text: PropTypes.string,\n    icon: PropTypes.string,\n    separator: PropTypes.bool,\n    selected: PropTypes.bool,\n    disabled: PropTypes.bool,\n    targetItem: PropTypes.any\n};\nDrawerItem.displayName = 'KendoDrawerItem';\n//# sourceMappingURL=DrawerItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DrawerContext } from './context/DrawerContext';\nimport { DrawerItem } from './DrawerItem';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DEFAULT_EXPANDED_WIDTH = 240;\n/**\n * @hidden\n */\nvar DEFAULT_MINI_WIDTH = 50;\n/**\n * @hidden\n */\nvar DEFAULT_ANIMATION = { type: 'slide', duration: 200 };\n/**\n * @hidden\n */\nvar NO_ANIMATION = { type: 'slide', duration: 0 };\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n *   const App = () => {\n *       const [expanded, setExpanded] = React.useState(true);\n *       const handleClick = () => setExpanded(prevState => !prevState);\n *\n *       return (\n *           <Drawer expanded={expanded} position='start' mode='push'>\n *               <DrawerNavigation>\n *                   <ul className=\"k-drawer-items\">\n *                       <li className=\"k-drawer-item k-state-selected\">\n *                           <span className=\"k-item-text\">Home</span>\n *                       </li>\n *                       <li className=\"k-drawer-item\">\n *                           <span className=\"k-item-text\">Products</span>\n *                       </li>\n *                       <li className=\"k-drawer-item\">\n *                           <span className=\"k-item-text\">About</span>\n *                       </li>\n *                   </ul>\n *               </DrawerNavigation>\n *               <DrawerContent>\n *                   <button className=\"k-button\" onClick={handleClick}>Toggle the drawer state</button>\n *               </DrawerContent>\n *           </Drawer>\n *       );\n *   };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerNavigation = React.forwardRef(function (props, target) {\n    var children = props.children, className = props.className, style = props.style;\n    var _a = React.useContext(DrawerContext), animation = _a.animation, expanded = _a.expanded, mode = _a.mode, position = _a.position, onOverlayClick = _a.onOverlayClick, mini = _a.mini, dir = _a.dir, width = _a.width, miniWidth = _a.miniWidth, items = _a.items, item = _a.item, onSelect = _a.onSelect;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    var customSettings = typeof animation !== 'boolean' ? animation : animation === false ? NO_ANIMATION : DEFAULT_ANIMATION;\n    var navWidth = width ? width : DEFAULT_EXPANDED_WIDTH;\n    var navMiniWidth = miniWidth ? miniWidth : DEFAULT_MINI_WIDTH;\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); });\n    var navigationClassNames = React.useMemo(function () { return 'k-widget k-drawer ' + classNames({\n        'k-drawer-start': position === 'start',\n        'k-drawer-end': position === 'end'\n    }, className); }, [position]);\n    var expandPush = {\n        opacity: 1,\n        flexBasis: navWidth,\n        WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n        transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n    };\n    var expandOverlay = {\n        opacity: 1,\n        transform: 'translateX(0px)',\n        WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n        transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n    };\n    var collapsePush = {\n        opacity: !mini ? 0 : 1,\n        flexBasis: !mini ? 0 : navMiniWidth,\n        WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n        transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n    };\n    var collapseOverlay = {\n        opacity: 0,\n        transform: 'translateX(-100%)',\n        WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n        transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n    };\n    var collapseOverlayRtl = {\n        opacity: 0,\n        transform: 'translateX(100%)',\n        WebkitTransition: 'all ' + (customSettings && customSettings.duration) + 'ms',\n        transition: 'all ' + (customSettings && customSettings.duration) + 'ms'\n    };\n    var collapseOverlayMini = {\n        transform: 'translateX(0%)',\n        WebkitTransitionDuration: (customSettings && customSettings.duration) + 'ms',\n        transitionDuration: (customSettings && customSettings.duration) + 'ms'\n    };\n    var drawerAnimation = expanded ?\n        mode === 'push' ? expandPush : expandOverlay :\n        mode === 'push' ? collapsePush :\n            (dir === 'ltr' && position === 'start') || (dir === 'rtl' && position === 'end') ?\n                mini ? collapseOverlayMini : collapseOverlay :\n                mini ? collapseOverlayMini : collapseOverlayRtl;\n    var drawerItems = (items && (React.createElement(\"ul\", { className: 'k-drawer-items' }, items\n        .map(function (element, index) {\n        var drawerItemProps = __assign({ index: index }, element, { onSelect: onSelect });\n        var ItemComp = item || DrawerItem;\n        return (React.createElement(ItemComp, __assign({ key: index }, drawerItemProps)));\n    }))));\n    var drawerNavigation = (React.createElement(\"div\", { style: customSettings ? __assign({}, drawerAnimation, style) : style, className: navigationClassNames, ref: elementRef },\n        React.createElement(\"div\", { className: 'k-drawer-wrapper', style: !expanded && mini && mode === 'overlay' ? { width: navMiniWidth } : { width: navWidth } }, drawerItems || children)));\n    return (mode === 'overlay' ?\n        (React.createElement(React.Fragment, null,\n            expanded && React.createElement(\"div\", { className: \"k-overlay\", onClick: onOverlayClick }),\n            drawerNavigation))\n        : drawerNavigation);\n});\nDrawerNavigation.propTypes = {\n    children: PropTypes.any,\n    className: PropTypes.string,\n    style: PropTypes.object,\n    item: PropTypes.any,\n    tabIndex: PropTypes.number\n};\nDrawerNavigation.displayName = 'KendoDrawerNavigation';\n//# sourceMappingURL=DrawerNavigation.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DrawerContext } from './context/DrawerContext';\nimport { DrawerNavigation } from './DrawerNavigation';\nimport { classNames, useDir } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n *   const items = [\n *       { text: 'Inbox', icon: 'k-i-inbox', selected: true },\n *       { separator: true },\n *       { text: 'Notifications', icon: 'k-i-bell', disabled: true },\n *       { text: 'Calendar', icon: 'k-i-calendar' },\n *       { separator: true },\n *       { text: 'Attachments', icon: 'k-i-hyperlink-email' },\n *       { text: 'Favourites', icon: 'k-i-star-outline' }\n *   ];\n *\n *   const [expanded, setExpanded] = React.useState(true);\n *   const handleClick = () => setExpanded(prevState => !prevState);\n *\n *   return (\n *       <Drawer expanded={expanded} position='start' mode='push' items={items}>\n *           <DrawerContent>\n *               <button className=\"k-button\" onClick={handleClick}>Toggle the drawer state</button>\n *           </DrawerContent>\n *       </Drawer>\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Drawer = React.forwardRef(function (props, target) {\n    var expanded = props.expanded, mode = props.mode, position = props.position, className = props.className, children = props.children, style = props.style, animation = props.animation, mini = props.mini, width = props.width, miniWidth = props.miniWidth, items = props.items, item = props.item, tabIndex = props.tabIndex, onOverlayClick = props.onOverlayClick, onSelect = props.onSelect;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); });\n    var handleSelect = React.useCallback(function (itemTarget, itemIndex) {\n        if (items && onSelect) {\n            onSelect.call(undefined, {\n                itemTarget: itemTarget,\n                itemIndex: itemIndex\n            });\n        }\n    }, [items, onSelect]);\n    var dir = useDir(elementRef, props.dir);\n    var drawerClassNames = classNames({\n        'k-drawer-container': true,\n        'k-drawer-expanded': expanded,\n        'k-drawer-overlay': mode === 'overlay',\n        'k-drawer-push': mode === 'push',\n        'k-drawer-mini': mini\n    }, className);\n    return (React.createElement(DrawerContext.Provider, { value: {\n            animation: animation,\n            expanded: expanded,\n            mode: mode,\n            position: position,\n            mini: mini,\n            dir: dir,\n            items: items,\n            item: item,\n            width: width,\n            miniWidth: miniWidth,\n            onOverlayClick: onOverlayClick,\n            onSelect: handleSelect\n        } },\n        React.createElement(\"div\", { className: drawerClassNames, ref: elementRef, dir: dir, style: style, tabIndex: tabIndex },\n            items && React.createElement(DrawerNavigation, null),\n            children)));\n});\nDrawer.propTypes = {\n    animation: PropTypes.any,\n    expanded: PropTypes.bool,\n    children: PropTypes.any,\n    className: PropTypes.string,\n    dir: PropTypes.string,\n    mode: PropTypes.string,\n    position: PropTypes.string,\n    mini: PropTypes.bool,\n    style: PropTypes.object,\n    tabIndex: PropTypes.number,\n    width: PropTypes.number,\n    miniWidth: PropTypes.number,\n    selected: PropTypes.number,\n    onSelect: PropTypes.func,\n    onOverlayClick: PropTypes.func\n};\nvar defaultProps = {\n    animation: true,\n    expanded: false,\n    mode: 'overlay',\n    position: 'start',\n    mini: false,\n    dir: 'ltr',\n    width: 240,\n    miniWidth: 50\n};\nDrawer.defaultProps = defaultProps;\nDrawer.displayName = 'KendoDrawer';\n//# sourceMappingURL=Drawer.js.map","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Drawer component]({% slug overview_drawer %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n *   const items = [\n *       { text: 'Inbox', icon: 'k-i-inbox', selected: true },\n *       { separator: true },\n *       { text: 'Notifications', icon: 'k-i-bell', disabled: true },\n *       { text: 'Calendar', icon: 'k-i-calendar' },\n *       { separator: true },\n *       { text: 'Attachments', icon: 'k-i-hyperlink-email' },\n *       { text: 'Favourites', icon: 'k-i-star-outline' }\n *   ];\n *\n *   const [expanded, setExpanded] = React.useState(true);\n *   const handleClick = () => setExpanded(prevState => !prevState);\n *\n *   return (\n *       <Drawer expanded={expanded} position='start' mode='push' items={items}>\n *           <DrawerContent>\n *               <button className=\"k-button\" onClick={handleClick}>Toggle the drawer state</button>\n *           </DrawerContent>\n *       </Drawer>\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var DrawerContent = React.forwardRef(function (props, target) {\n    var children = props.children, className = props.className, style = props.style;\n    var elementRef = React.useRef(null);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef\n    }); });\n    var contentClassNames = classNames({\n        'k-drawer-content': true\n    }, className);\n    return (React.createElement(\"div\", { className: contentClassNames, style: style, ref: elementRef }, children));\n});\nDrawerContent.propTypes = {\n    children: PropTypes.any,\n    className: PropTypes.string,\n    style: PropTypes.object\n};\nDrawerContent.displayName = 'KendoDrawerContent';\n//# sourceMappingURL=DrawerContent.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nvar defaultContext = {\n    linear: false,\n    mode: 'steps',\n    value: 0\n};\n/** @hidden */\nexport var StepperContext = React.createContext(defaultContext);\n//# sourceMappingURL=StepperContext.js.map","var _a;\n/**\n * @hidden\n */\nexport var optionalText = 'stepper.optionalText';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n    _a[optionalText] = '(Optional)',\n    _a);\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { StepperContext } from './context/StepperContext';\nimport { classNames, focusFirstFocusableChild, dispatchEvent } from '@progress/kendo-react-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { DEFAULT_ANIMATION_DURATION, NO_ANIMATION } from './contants';\nimport { messages, optionalText } from './messages';\n/**\n * Represents the [KendoReact Step component]({% slug overview_stepper %}).\n *\n * @example\n * ```jsx\n * const steps = [\n *    { label: 'Step 1' },\n *    { label: 'Step 2' },\n *    { label: 'Step 3', optional: true }\n * ];\n *\n * const App = () => {\n *   return (\n *       <Stepper items={steps} value={1}/>\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Step = React.forwardRef(function (props, target) {\n    var \n    // content\n    children = props.children, className = props.className, current = props.current, disabled = props.disabled, focused = props.focused, icon = props.icon, index = props.index, isValid = props.isValid, label = props.label, optional = props.optional, style = props.style, tabIndex = props.tabIndex, text = props.text, others = __rest(props, [\"children\", \"className\", \"current\", \"disabled\", \"focused\", \"icon\", \"index\", \"isValid\", \"label\", \"optional\", \"style\", \"tabIndex\", \"text\"]);\n    var _a = React.useContext(StepperContext), animationDuration = _a.animationDuration, isVertical = _a.isVertical, item = _a.item, linear = _a.linear, mode = _a.mode, numOfSteps = _a.numOfSteps, value = _a.value, onChange = _a.onChange, onFocus = _a.onFocus;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            focusFirstFocusableChild(elementRef.current);\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var allowClick = !linear || (index === value - 1 || index === value || index === value + 1);\n    var isInLabel = mode === 'labels' || (Boolean(icon) && Boolean(label));\n    var localizationService = useLocalization();\n    var localizeMessage = function (message) {\n        return localizationService.toLanguageString(message, messages[message]);\n    };\n    var optionalMessage = localizeMessage(optionalText);\n    var progressAnimation = typeof animationDuration === 'number'\n        ? animationDuration\n        : animationDuration !== false\n            ? DEFAULT_ANIMATION_DURATION\n            : NO_ANIMATION;\n    var handleClick = React.useCallback(function (event) {\n        if (onChange && !disabled) {\n            dispatchEvent(onChange, event, getImperativeHandle(), { value: index });\n        }\n    }, [onChange, value, disabled]);\n    var handleFocus = React.useCallback(function (event) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled]);\n    var itemClassNames = React.useMemo(function () { return classNames('k-step', {\n        'k-step-first': index === 0,\n        'k-step-last': numOfSteps && index === numOfSteps - 1,\n        'k-step-done': index < value,\n        'k-step-current': current,\n        'k-step-optional': optional,\n        'k-step-disabled': disabled,\n        'k-step-focus': focused,\n        'k-step-error': isValid !== undefined && !isValid,\n        'k-step-success': isValid\n    }, className); }, [index, numOfSteps, value, current, optional, disabled, focused, isValid, className]);\n    var itemStyles = React.useMemo(function () { return (__assign({ maxWidth: !isVertical ? \"calc(100% / \" + numOfSteps + \")\" : undefined }, style)); }, [isVertical, numOfSteps, style]);\n    var stepIndicator = (React.createElement(React.Fragment, null, mode !== 'labels' ?\n        React.createElement(\"span\", { className: \"k-step-indicator\", \"aria-hidden\": true, style: { transitionDuration: progressAnimation + 'ms' } }, icon\n            ? !isInLabel && isValid !== undefined\n                ? React.createElement(\"span\", { className: \"k-step-indicator-icon k-icon \" + (isValid ? 'k-i-check' : 'k-i-warning') })\n                : React.createElement(\"span\", { className: \"k-step-indicator-icon k-icon \" + icon })\n            : isValid !== undefined\n                ? React.createElement(\"span\", { className: \"k-step-indicator-icon k-icon \" + (isValid ? 'k-i-check' : 'k-i-warning') })\n                : React.createElement(\"span\", { className: \"k-step-indicator-text\" }, text ? text : index + 1)) :\n        null));\n    var stepLabel = (React.createElement(React.Fragment, null, optional && !label\n        ? React.createElement(\"span\", { className: \"k-step-label\" },\n            React.createElement(\"span\", { className: \"k-step-label-optional\" }, optionalMessage))\n        : label\n            ? React.createElement(\"span\", { className: \"k-step-label\" },\n                React.createElement(\"span\", { className: \"k-step-text\" }, label),\n                isInLabel && isValid !== undefined &&\n                    React.createElement(\"span\", { className: \"k-step-indicator-icon k-icon \" + (isValid ? 'k-i-check' : 'k-i-warning'), \"aria-hidden\": \"true\" }),\n                optional && React.createElement(\"span\", { className: \"k-step-label-optional\" }, optionalMessage))\n            : null));\n    var stepLink = (React.createElement(React.Fragment, null,\n        stepIndicator,\n        stepLabel));\n    return (React.createElement(\"li\", __assign({ ref: elementRef, className: itemClassNames, style: itemStyles }, others),\n        React.createElement(\"a\", { className: \"k-step-link\", title: label ? label : undefined, onClick: handleClick, onFocus: handleFocus, tabIndex: tabIndex ? tabIndex : focused ? 0 : -1, \"aria-current\": current ? 'step' : undefined, \"aria-disabled\": disabled || !allowClick || undefined, \"aria-invalid\": isValid !== undefined && !isValid || undefined }, !item ? stepLink : children)));\n});\nStep.propTypes = {\n    children: PropTypes.any,\n    className: PropTypes.string,\n    // content: PropTypes.any,\n    current: PropTypes.bool,\n    disabled: PropTypes.bool,\n    icon: PropTypes.string,\n    index: PropTypes.number,\n    isValid: PropTypes.bool,\n    label: PropTypes.string,\n    optional: PropTypes.bool,\n    style: PropTypes.object,\n    tabIndex: PropTypes.number,\n    text: PropTypes.string\n};\nvar defaultProps = {\n    tabIndex: 0\n};\nStep.defaultProps = defaultProps;\nStep.displayName = 'KendoStep';\n//# sourceMappingURL=Step.js.map","/**\n * @hidden\n */\nexport var DEFAULT_ANIMATION_DURATION = 400;\n/**\n * @hidden\n */\nexport var NO_ANIMATION = 0;\n//# sourceMappingURL=contants.js.map","/**\n * @hidden\n */\nexport var MIN_RATIO = 0.00001;\n/**\n * @hidden\n */\nexport var LABEL_DECIMALS = 3;\n/**\n * @hidden\n */\nexport var DEFAULT_ANIMATION_DURATION = 400;\n/**\n * @hidden\n */\nexport var NO_ANIMATION = 0;\n//# sourceMappingURL=constants.js.map","import { LABEL_DECIMALS, MIN_RATIO } from './constants';\n/**\n * @hidden\n */\nexport var truncateNumber = function (value) {\n    var numberParts = value.toString().split('.');\n    return numberParts.length === 1 ? \"\" + numberParts[0] : numberParts[0] + \".\" + numberParts[1].substr(0, LABEL_DECIMALS);\n};\n/**\n * @hidden\n */\nexport var calculatePercentage = function (min, max, value) {\n    var onePercent = Math.abs((max - min) / 100);\n    return Math.abs((value - min) / onePercent);\n};\n/**\n * @hidden\n */\nexport var updateProgress = function (progressRef, progressWrapRef, percentage, isVertical) {\n    var progressPercentage = Math.max(percentage, 0.01);\n    var progressWrapPercentage = (100 / progressPercentage) * 100;\n    progressRef.current.style.width = !isVertical ? progressPercentage + \"%\" : '100%';\n    progressWrapRef.current.style.width = !isVertical ? progressWrapPercentage + \"%\" : '100%';\n    progressRef.current.style.height = isVertical ? progressPercentage + \"%\" : '100%';\n    progressWrapRef.current.style.height = isVertical ? progressWrapPercentage + \"%\" : '100%';\n};\n/**\n * @hidden\n */\nexport var calculateRatio = function (min, max, value) {\n    return Math.max((value - min) / (max - min), MIN_RATIO);\n};\n//# sourceMappingURL=utils.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useRtl, getTabIndex } from '@progress/kendo-react-common';\nimport { calculateRatio } from '../common/utils';\n/**\n * Represents the [KendoReact ChunkProgressBar component]({% slug overview_chunkprogressbar %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n *   return (\n *       <ChunkProgressBar value={40}/>\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var ChunkProgressBar = React.forwardRef(function (props, target) {\n    var _a = props.chunkCount, chunkCount = _a === void 0 ? defaultProps.chunkCount : _a, className = props.className, disabled = props.disabled, orientation = props.orientation, _b = props.min, min = _b === void 0 ? defaultProps.min : _b, _c = props.max, max = _c === void 0 ? defaultProps.max : _c, _d = props.reverse, reverse = _d === void 0 ? defaultProps.reverse : _d, style = props.style, tabIndex = props.tabIndex, emptyStyle = props.emptyStyle, emptyClassName = props.emptyClassName, progressStyle = props.progressStyle, progressClassName = props.progressClassName;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); });\n    var value = (props.value || defaultProps.value);\n    var indeterminateProp = props.value === null;\n    var dir = useRtl(elementRef, props.dir);\n    var isVertical = orientation === 'vertical';\n    var wrapperProps = {\n        className: classNames('k-widget k-progressbar', {\n            'k-progressbar-horizontal': !isVertical,\n            'k-progressbar-vertical': isVertical,\n            'k-progressbar-reverse': reverse,\n            'k-progressbar-indeterminate': indeterminateProp,\n            'k-state-disabled': disabled\n        }, className),\n        ref: elementRef,\n        dir: dir,\n        tabIndex: getTabIndex(tabIndex, disabled),\n        role: 'progressbar',\n        'aria-valuemin': min,\n        'aria-valuemax': max,\n        'aria-valuenow': indeterminateProp ? undefined : value,\n        'aria-disabled': disabled,\n        style: style\n    };\n    var Chunks = function (_a) {\n        var count = _a.count;\n        var chunks = [];\n        var chunkSizePercentage = 100 / count + '%';\n        var progressRatio = calculateRatio(min, max, value);\n        var completedChunksCount = Math.floor(progressRatio * count);\n        var completedChunks = Array(count).fill(false);\n        var reverseCompletedChunks = isVertical && !reverse || !isVertical && reverse;\n        for (var i = 0; i < completedChunksCount; i++) {\n            completedChunks[i] = true;\n        }\n        if (reverseCompletedChunks) {\n            completedChunks.reverse();\n        }\n        for (var i = 0; i < count; ++i) {\n            var isComplete = completedChunks[i];\n            var classes = isComplete ? progressClassName : emptyClassName;\n            var layoutStyles = {\n                width: !isVertical ? chunkSizePercentage : undefined,\n                height: isVertical ? chunkSizePercentage : undefined\n            };\n            var styles = isComplete ? progressStyle : emptyStyle;\n            var mergedStyles = __assign({}, layoutStyles, styles);\n            chunks.push(React.createElement(\"li\", { key: i, className: classNames('k-item', {\n                    'k-first': i === 0,\n                    'k-last': i === count - 1,\n                    'k-state-selected': isComplete\n                }, classes), style: mergedStyles }));\n        }\n        return React.createElement(React.Fragment, null, chunks);\n    };\n    return (React.createElement(\"div\", __assign({}, wrapperProps),\n        React.createElement(\"ul\", { className: 'k-reset' },\n            React.createElement(Chunks, { count: chunkCount || defaultProps.chunkCount }))));\n});\nChunkProgressBar.propTypes = {\n    chunkCount: PropTypes.number,\n    disabled: PropTypes.bool,\n    reverse: PropTypes.bool,\n    max: PropTypes.number,\n    min: PropTypes.number,\n    value: PropTypes.number,\n    tabIndex: PropTypes.number,\n    emptyStyle: PropTypes.object,\n    emptyClassName: PropTypes.string,\n    progressStyle: PropTypes.object,\n    progressClassName: PropTypes.string\n};\nvar defaultProps = {\n    chunkCount: 5,\n    min: 0,\n    max: 100,\n    value: 0,\n    disabled: false,\n    reverse: false\n};\nChunkProgressBar.defaultProps = defaultProps;\nChunkProgressBar.displayName = 'KendoChunkProgressBar';\n//# sourceMappingURL=ChunkProgressBar.js.map","import * as React from 'react';\n/** @hidden */\nexport var usePrevious = function (value) {\n    var ref = React.useRef();\n    React.useEffect(function () {\n        ref.current = value;\n    });\n    return ref.current;\n};\n//# sourceMappingURL=usePrevious.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useAnimation } from '@progress/kendo-react-animation';\nimport { classNames, useRtl, getTabIndex } from '@progress/kendo-react-common';\nimport { calculatePercentage, updateProgress, truncateNumber } from '../common/utils';\nimport { usePrevious } from './hooks/usePrevious';\nimport { DEFAULT_ANIMATION_DURATION, NO_ANIMATION } from '../common/constants';\n/**\n * Represents the [KendoReact ProgressBar component]({% slug overview_progressbar %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n *   return (\n *       <ProgressBar value={75}/>\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var ProgressBar = React.forwardRef(function (props, target) {\n    var animation = props.animation, disabled = props.disabled, _a = props.reverse, reverse = _a === void 0 ? defaultProps.reverse : _a, orientation = props.orientation, labelVisible = props.labelVisible, labelPlacement = props.labelPlacement, _b = props.max, max = _b === void 0 ? defaultProps.max : _b, _c = props.min, min = _c === void 0 ? defaultProps.min : _c, tabIndex = props.tabIndex, className = props.className, style = props.style, emptyStyle = props.emptyStyle, emptyClassName = props.emptyClassName, progressStyle = props.progressStyle, progressClassName = props.progressClassName;\n    var elementRef = React.useRef(null);\n    var progressStatusRef = React.useRef(null);\n    var progressStatusWrapRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            elementRef.current.focus();\n        }\n    }, []);\n    React.useImperativeHandle(target, function () { return ({\n        element: elementRef,\n        progressStatusRef: progressStatusRef,\n        progressStatusWrapRef: progressStatusWrapRef,\n        focus: focusElement\n    }); });\n    var value = (props.value || defaultProps.value);\n    var prevValue = usePrevious(value);\n    var indeterminateProp = props.value === null;\n    var dir = useRtl(elementRef, props.dir);\n    var isVertical = orientation === 'vertical';\n    var formattedLabel = truncateNumber(value);\n    var labelProps = {\n        value: value\n    };\n    var renderLabel = (labelVisible\n        ? props.label\n            ? React.createElement(\"span\", { className: 'k-progress-status' },\n                React.createElement(props.label, __assign({}, labelProps)))\n            : React.createElement(\"span\", { className: 'k-progress-status' }, formattedLabel)\n        : undefined);\n    var wrapperProps = {\n        className: classNames('k-widget k-progressbar', {\n            'k-progressbar-horizontal': !isVertical,\n            'k-progressbar-vertical': isVertical,\n            'k-progressbar-reverse': reverse,\n            'k-progressbar-indeterminate': indeterminateProp,\n            'k-state-disabled': disabled\n        }, className),\n        ref: elementRef,\n        dir: dir,\n        tabIndex: getTabIndex(tabIndex, disabled),\n        role: 'progressbar',\n        'aria-valuemin': min,\n        'aria-valuemax': max,\n        'aria-valuenow': indeterminateProp ? undefined : value,\n        'aria-disabled': disabled,\n        style: style\n    };\n    var positionClasses = classNames('k-progress-status-wrap', {\n        'k-progress-start': labelPlacement === 'start',\n        'k-progress-center': labelPlacement === 'center',\n        'k-progress-end': labelPlacement === 'end' || labelPlacement === undefined\n    });\n    var animationDuration = typeof animation !== 'boolean' && animation !== undefined\n        ? animation.duration\n        : animation\n            ? DEFAULT_ANIMATION_DURATION\n            : NO_ANIMATION;\n    var handleStart = React.useCallback(function () {\n        var percentage = calculatePercentage(min, max, prevValue);\n        updateProgress(progressStatusRef, progressStatusWrapRef, percentage, isVertical);\n    }, [prevValue]);\n    var handleUpdate = React.useCallback(function (progress) {\n        var percentage = calculatePercentage(min, max, prevValue + (value - prevValue) * progress);\n        updateProgress(progressStatusRef, progressStatusWrapRef, percentage, isVertical);\n    }, [value, prevValue]);\n    var handleEnd = React.useCallback(function () {\n        var percentage = calculatePercentage(min, max, value);\n        updateProgress(progressStatusRef, progressStatusWrapRef, percentage, isVertical);\n    }, [value]);\n    useAnimation({\n        duration: animationDuration,\n        onStart: handleStart,\n        onUpdate: handleUpdate,\n        onEnd: handleEnd\n    }, [value, animationDuration]);\n    return (React.createElement(\"div\", __assign({}, wrapperProps),\n        React.createElement(\"span\", { className: positionClasses + (emptyClassName ? ' ' + emptyClassName : ''), style: emptyStyle }, renderLabel),\n        React.createElement(\"div\", { className: 'k-state-selected', style: progressStyle, ref: progressStatusRef },\n            React.createElement(\"span\", { className: positionClasses + (progressClassName ? ' ' + progressClassName : ''), ref: progressStatusWrapRef }, renderLabel))));\n});\nProgressBar.propTypes = {\n    animation: PropTypes.any,\n    disabled: PropTypes.bool,\n    reverse: PropTypes.bool,\n    label: PropTypes.any,\n    labelVisible: PropTypes.bool,\n    labelPlacement: PropTypes.oneOf(['start', 'center', 'end']),\n    max: PropTypes.number,\n    min: PropTypes.number,\n    value: PropTypes.number,\n    tabIndex: PropTypes.number,\n    emptyStyle: PropTypes.object,\n    emptyClassName: PropTypes.string,\n    progressStyle: PropTypes.object,\n    progressClassName: PropTypes.string\n};\nvar defaultProps = {\n    animation: false,\n    min: 0,\n    max: 100,\n    value: 0,\n    disabled: false,\n    reverse: false,\n    labelVisible: true\n};\nProgressBar.defaultProps = defaultProps;\nProgressBar.displayName = 'KendoProgressBar';\n//# sourceMappingURL=ProgressBar.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { StepperContext } from './context/StepperContext';\nimport { classNames, focusFirstFocusableChild, useRtl, dispatchEvent, Keys } from '@progress/kendo-react-common';\nimport { Step } from './Step';\nimport { ProgressBar } from '@progress/kendo-react-progressbars';\nimport { DEFAULT_ANIMATION_DURATION, NO_ANIMATION } from './contants';\n/**\n * Represents the [KendoReact Stepper component]({% slug overview_stepper %}).\n *\n * @example\n * ```jsx\n * const steps = [\n *    { label: 'Step 1' },\n *    { label: 'Step 2' },\n *    { label: 'Step 3', optional: true }\n * ];\n *\n * const App = () => {\n *   return (\n *       <Stepper items={steps} value={1} />\n *   );\n * };\n *    ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Stepper = React.forwardRef(function (props, target) {\n    var animationDuration = props.animationDuration, children = props.children, className = props.className, disabled = props.disabled, item = props.item, items = props.items, linear = props.linear, mode = props.mode, orientation = props.orientation, style = props.style, onChange = props.onChange, onFocus = props.onFocus;\n    var elementRef = React.useRef(null);\n    var focusElement = React.useCallback(function () {\n        if (elementRef.current) {\n            focusFirstFocusableChild(elementRef.current);\n        }\n    }, []);\n    var getImperativeHandle = React.useCallback(function () { return ({\n        element: elementRef,\n        focus: focusElement\n    }); }, [focusElement]);\n    React.useImperativeHandle(target, getImperativeHandle);\n    var value = props.value || defaultProps.value;\n    var _a = React.useState(value), focusedIdx = _a[0], setFocusedIdx = _a[1];\n    var numOfSteps = items ? items.length : 0;\n    var isVertical = orientation === 'vertical';\n    var dir = useRtl(elementRef, props.dir);\n    var animation = typeof animationDuration === 'number'\n        ? animationDuration\n        : animationDuration !== false\n            ? DEFAULT_ANIMATION_DURATION\n            : NO_ANIMATION;\n    var dispatchChangeEvent = React.useCallback(function (event, val) {\n        var prevIdx = val === value - 1;\n        var currIdx = val === value;\n        var nextIdx = val === value + 1;\n        var allowClick = !linear || (prevIdx || currIdx || nextIdx);\n        if (value !== val && onChange && !disabled && allowClick) {\n            dispatchEvent(onChange, event, getImperativeHandle(), { value: val });\n            setFocusedIdx(val);\n        }\n    }, [value, linear, onChange, disabled, setFocusedIdx]);\n    var handleChange = React.useCallback(function (event) {\n        var currentValue = event.value;\n        var syntethicEvent = event.syntheticEvent;\n        dispatchChangeEvent(syntethicEvent, currentValue);\n    }, [dispatchChangeEvent]);\n    var handleFocus = React.useCallback(function (event) {\n        if (onFocus && !disabled) {\n            dispatchEvent(onFocus, event.syntheticEvent, getImperativeHandle(), undefined);\n        }\n    }, [onFocus, disabled]);\n    var handleEnter = React.useCallback(function (event) {\n        dispatchChangeEvent(event, focusedIdx);\n    }, [dispatchChangeEvent, focusedIdx]);\n    var handleKeyDown = React.useCallback(function (event) {\n        var isRtl = dir === 'rtl';\n        var currIndex = focusedIdx;\n        var maxNavIndex = items.length - 1;\n        switch (event.keyCode) {\n            case Keys.left:\n                event.preventDefault();\n                if (!isRtl && currIndex > 0) {\n                    setFocusedIdx(currIndex - 1);\n                }\n                if (isRtl && currIndex < maxNavIndex) {\n                    setFocusedIdx(currIndex + 1);\n                }\n                break;\n            case Keys.right:\n                event.preventDefault();\n                if (!isRtl && currIndex < maxNavIndex) {\n                    setFocusedIdx(currIndex + 1);\n                }\n                if (isRtl && currIndex > 0) {\n                    setFocusedIdx(currIndex - 1);\n                }\n                break;\n            case Keys.up:\n                event.preventDefault();\n                if (!isRtl && currIndex > 0) {\n                    setFocusedIdx(currIndex - 1);\n                }\n                if (isRtl && currIndex > 0) {\n                    setFocusedIdx(currIndex - 1);\n                }\n                break;\n            case Keys.down:\n                event.preventDefault();\n                if (!isRtl && currIndex < maxNavIndex) {\n                    setFocusedIdx(currIndex + 1);\n                }\n                if (isRtl && currIndex < maxNavIndex) {\n                    setFocusedIdx(currIndex + 1);\n                }\n                break;\n            case Keys.home:\n                event.preventDefault();\n                setFocusedIdx(0);\n                break;\n            case Keys.end:\n                event.preventDefault();\n                setFocusedIdx(maxNavIndex);\n                break;\n            case Keys.space:\n            case Keys.enter:\n                event.preventDefault();\n                handleEnter(event);\n                break;\n            default:\n        }\n    }, [items, setFocusedIdx, focusedIdx, dir, handleEnter]);\n    var stepperClasses = React.useMemo(function () { return classNames('k-stepper', {\n        'k-stepper-linear': linear\n    }, className); }, [linear, className]);\n    var stepperStyles = React.useMemo(function () { return (__assign({ display: 'grid', gridTemplateColumns: !isVertical ? 'repeat(' + numOfSteps * 2 + ', 1fr)' : undefined, gridTemplateRows: isVertical ? 'repeat(' + numOfSteps * 4 + ', 1fr)' : undefined }, style)); }, [isVertical, numOfSteps, style]);\n    var listClasses = React.useMemo(function () { return classNames('k-step-list', {\n        'k-step-list-horizontal': !isVertical,\n        'k-step-list-vertical': isVertical\n    }); }, [isVertical]);\n    var listStyles = React.useMemo(function () { return ({\n        gridColumnStart: !isVertical ? 1 : undefined,\n        gridColumnEnd: !isVertical ? -1 : undefined,\n        gridRowStart: isVertical ? 1 : undefined,\n        gridRowEnd: isVertical ? -1 : undefined\n    }); }, [isVertical]);\n    var progressbarStyles = React.useMemo(function () { return ({\n        gridColumnStart: !isVertical ? 2 : undefined,\n        gridColumnEnd: !isVertical ? numOfSteps * 2 : undefined,\n        gridRowStart: isVertical ? 2 : undefined,\n        gridRowEnd: isVertical ? numOfSteps * 4 - 2 : undefined\n    }); }, [isVertical, numOfSteps]);\n    var steps = (items && (items.map(function (element, index) {\n        var stepProps = __assign({ index: index, disabled: disabled || element.disabled, focused: index === focusedIdx, current: index === value }, element);\n        var ItemComp = item || Step;\n        return (React.createElement(ItemComp, __assign({ key: index }, stepProps)));\n    })));\n    return (React.createElement(StepperContext.Provider, { value: {\n            animationDuration: animationDuration,\n            isVertical: isVertical,\n            item: item,\n            linear: linear,\n            mode: mode,\n            numOfSteps: numOfSteps,\n            value: value,\n            onChange: handleChange,\n            onFocus: handleFocus\n        } },\n        React.createElement(\"nav\", { className: stepperClasses, style: stepperStyles, dir: dir, onKeyDown: handleKeyDown },\n            React.createElement(\"ol\", { className: listClasses, style: listStyles }, steps ? steps : children),\n            React.createElement(ProgressBar, { style: progressbarStyles, animation: { duration: animation }, \"aria-hidden\": true, max: numOfSteps - 1, labelVisible: false, orientation: orientation, reverse: orientation === 'vertical', value: value, disabled: disabled, tabIndex: -1 }))));\n});\nStepper.propTypes = {\n    animationDuration: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n    className: PropTypes.string,\n    dir: PropTypes.string,\n    disabled: PropTypes.bool,\n    item: PropTypes.any,\n    items: PropTypes.arrayOf(PropTypes.any),\n    linear: PropTypes.bool,\n    mode: PropTypes.oneOf(['steps', 'labels']),\n    orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n    style: PropTypes.object,\n    value: PropTypes.number.isRequired,\n    onChange: PropTypes.func,\n    onFocus: PropTypes.func\n};\nvar defaultProps = {\n    value: 0\n};\nStepper.defaultProps = defaultProps;\nStepper.displayName = 'KendoStepper';\n//# sourceMappingURL=Stepper.js.map","var arrowWidth = 10;\nvar arrowHeight = 10;\n/**\n * @hidden\n */\nexport var getLeftPosition = function (left, elementWidth, targetElement, anchorElement, position) {\n    switch (position) {\n        case 'bottom':\n            return anchorElement === 'pointer'\n                ? left - (elementWidth / 2)\n                : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n        case 'left':\n            return anchorElement === 'pointer'\n                ? left - elementWidth - arrowWidth\n                : targetElement.left - elementWidth - arrowWidth;\n        case 'right':\n            return anchorElement === 'pointer'\n                ? left + arrowWidth\n                : targetElement.right + arrowWidth;\n        case 'top':\n            return anchorElement === 'pointer'\n                ? left - (elementWidth / 2)\n                : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n        default:\n            if (anchorElement === 'pointer') {\n                return left < (window.screen.availWidth / 2)\n                    ? left - arrowWidth\n                    : left - elementWidth + arrowWidth;\n            }\n            else {\n                return left < (window.screen.availWidth / 2)\n                    ? targetElement.left\n                    : targetElement.right - elementWidth;\n            }\n    }\n};\n/**\n * @hidden\n */\nexport var getTopPosition = function (top, targetElement, elementHeight, anchorElement, position) {\n    switch (position) {\n        case 'bottom':\n            return anchorElement === 'pointer'\n                ? top + arrowHeight\n                : targetElement.bottom + arrowHeight;\n        case 'left':\n            return anchorElement === 'pointer'\n                ? top - (elementHeight / 2)\n                : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n        case 'right':\n            return anchorElement === 'pointer'\n                ? top - (elementHeight / 2)\n                : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n        case 'top':\n            return anchorElement === 'pointer'\n                ? top - elementHeight - arrowHeight\n                : targetElement.top - elementHeight - arrowHeight;\n        default:\n            if (anchorElement === 'pointer') {\n                return top < (window.innerHeight / 2)\n                    ? top + arrowWidth\n                    : top - elementHeight - arrowWidth;\n            }\n            else {\n                return top < (window.innerHeight / 2)\n                    ? targetElement.bottom + arrowHeight\n                    : targetElement.top - elementHeight - arrowHeight;\n            }\n    }\n};\n/**\n * @hidden\n */\nexport var getDomRect = function (currentTarget) {\n    if (currentTarget !== null) {\n        return currentTarget.getBoundingClientRect();\n    }\n    return document.body.getBoundingClientRect();\n};\n/**\n * @hidden\n */\nexport var toolTipSelectors = [\n    'k-tooltip-content',\n    'k-animation-container',\n    'k-tooltip',\n    'k-tooltip-title',\n    'k-tooltip k-tooltip-closable',\n    'k-icon k-i-close'\n];\n/**\n * @hidden\n */\nexport var isTooltipElement = function (element) {\n    if (element === null) {\n        return false;\n    }\n    var node = element;\n    while (node) {\n        if (node !== null && node.className === 'k-tooltip') {\n            return true;\n        }\n        node.parentNode !== null ? node = node.parentNode : node = false;\n    }\n    return toolTipSelectors.filter(function (t) { return t === element.className; }).length > 0;\n};\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { getLeftPosition, getTopPosition, getDomRect, isTooltipElement } from './utils';\nvar Tooltip = /** @class */ (function (_super) {\n    __extends(Tooltip, _super);\n    function Tooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.state = {\n            targetElement: null,\n            open: false\n        };\n        _this.title = '';\n        _this.top = 0;\n        _this.left = 0;\n        _this.willOpen = false;\n        /**\n         * The method is used on the MouseOut event to hide the Tooltip.\n         */\n        _this.handleMouseOut = function (event) {\n            var element = document.elementFromPoint(event.clientX, event.clientY);\n            if (isTooltipElement(element)) {\n                return;\n            }\n            if (_this.props.open) {\n                return;\n            }\n            _this.willOpen = false;\n            dispatchEvent(_this.props.onClose, event, _this, undefined);\n            _this.setState({ targetElement: null, open: false });\n        };\n        /**\n         * Used on the `MouseOver` event to show the Tooltip.\n         */\n        _this.handleMouseOver = function (event) {\n            var target = event.target;\n            if (!_this.isVisible(target) || isTooltipElement(target) || target === _this.state.targetElement) {\n                return;\n            }\n            _this.showToolTip(event);\n            dispatchEvent(_this.props.onOpen, event, _this, undefined);\n        };\n        _this.handleBodyMousemove = function (event) {\n            _this.top = event.clientY;\n            _this.left = event.clientX;\n        };\n        _this.position = function (element) {\n            var domRect = getDomRect(_this.state.targetElement);\n            var left = getLeftPosition(_this.left, element.offsetWidth, domRect, _this.props.anchorElement, _this.props.position);\n            var top = getTopPosition(_this.top, domRect, element.offsetHeight, _this.props.anchorElement, _this.props.position);\n            return { left: left, top: top };\n        };\n        _this.getTitle = function (element) {\n            while (element) {\n                if (element.title || element.titleExpando) {\n                    return element.title || element.titleExpando;\n                }\n                element = _this.props.parentTitle && element.parentElement || null;\n            }\n            return '';\n        };\n        _this.calloutClassName = function () {\n            switch (_this.props.position) {\n                case 'bottom':\n                    return 'k-callout k-callout-n';\n                case 'left':\n                    return 'k-callout k-callout-e';\n                case 'right':\n                    return 'k-callout k-callout-w';\n                case 'top':\n                    return 'k-callout k-callout-s';\n                default:\n                    return _this.top < (window.innerHeight / 2) ? 'k-callout k-callout-n' : 'k-callout k-callout-s';\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Tooltip.prototype.componentDidMount = function () {\n        if (document) {\n            document.body.addEventListener('mousemove', this.handleBodyMousemove);\n        }\n    };\n    /**\n     * @hidden\n     */\n    Tooltip.prototype.componentWillUnmount = function () {\n        clearTimeout(this.openTimeout);\n        this.openTimeout = undefined;\n        if (document) {\n            document.body.removeEventListener('mousemove', this.handleBodyMousemove);\n        }\n    };\n    /**\n     * @hidden\n     */\n    Tooltip.prototype.componentDidUpdate = function () {\n        if (this.props.open && this.props.targetElement) {\n            this.showToolTip({ target: this.props.targetElement });\n        }\n    };\n    /**\n     * @hidden\n     */\n    Tooltip.prototype.render = function () {\n        var _this = this;\n        if (this.props.children) {\n            var _a = this.props, children = _a.children, options = __rest(_a, [\"children\"]);\n            var tooltip_1 = null;\n            return (React.createElement(\"div\", { onMouseOver: function (event) { if (tooltip_1) {\n                    tooltip_1.handleMouseOver(event);\n                } }, onMouseOut: function (event) { if (tooltip_1) {\n                    tooltip_1.handleMouseOut(event);\n                } } },\n                React.createElement(Tooltip, __assign({ ref: function (el) { return tooltip_1 = el; } }, options)),\n                children));\n        }\n        if (this.props.open === false) {\n            return null;\n        }\n        return this.state.targetElement &&\n            this.title &&\n            document &&\n            ReactDOM.createPortal((React.createElement(\"div\", { ref: function (el) {\n                    if (!el) {\n                        return;\n                    }\n                    var position = _this.position(el);\n                    el.style.left = position.left + 'px';\n                    el.style.top = position.top + 'px';\n                }, className: 'k-animation-container k-animation-container-fixed k-animation-container-shown'\n                    + (this.props.className ? ' ' + this.props.className : ''), tabIndex: 0 },\n                React.createElement(\"div\", { className: \"k-tooltip\", style: {\n                        position: 'relative'\n                    } },\n                    React.createElement(\"div\", { className: \"k-tooltip-content\" }, this.props.content &&\n                        React.createElement(this.props.content, { title: this.title, target: this.state.targetElement })\n                        || this.title),\n                    this.props.showCallout && React.createElement(\"div\", { ref: function (el) {\n                            if (!el) {\n                                return;\n                            }\n                            el.className = _this.calloutClassName();\n                            if (_this.props.position === 'auto') {\n                                _this.left < (window.screen.availWidth / 2)\n                                    ? el.style.left = _this.props.setCalloutOnPositionAuto || '25%'\n                                    : el.style.left = _this.props.setCalloutOnPositionAuto || '75%';\n                            }\n                        } })))), document.body);\n    };\n    Tooltip.prototype.showToolTip = function (event) {\n        var _this = this;\n        var target = this.props.targetElement || event.target;\n        clearTimeout(this.openTimeout);\n        this.title = this.getTitle(target);\n        if (this.title) {\n            target.titleExpando = target.titleExpando || target.title;\n            target.title = '';\n        }\n        this.willOpen = true;\n        if (!this.props.openDelay) {\n            this.setState({ targetElement: target, open: true });\n        }\n        else {\n            this.openTimeout = setTimeout(function () {\n                if (_this.willOpen) {\n                    _this.setState({ targetElement: target, open: true });\n                }\n            }, this.props.openDelay);\n        }\n    };\n    Tooltip.prototype.isVisible = function (element) {\n        return !this.props.filter || this.props.filter(element);\n    };\n    /**\n     * @hidden\n     */\n    Tooltip.propTypes = {\n        anchorElement: PropTypes.oneOf(['pointer', 'target']),\n        content: PropTypes.func,\n        filter: PropTypes.func,\n        openDelay: PropTypes.number,\n        position: PropTypes.oneOf(['right', 'left', 'top', 'bottom', 'auto'])\n    };\n    Tooltip.defaultProps = {\n        anchorElement: 'pointer',\n        openDelay: 400,\n        position: 'auto',\n        showCallout: true,\n        parentTitle: false\n    };\n    return Tooltip;\n}(React.PureComponent));\nexport { Tooltip };\n//# sourceMappingURL=Tooltip.js.map","import React from 'react';\nimport GridMaster from './index';\nimport TopButtons from './components/top-buttons';\nimport SearchBox from './components/search-box';\nimport FormModal from './components/form-modal';\nimport DeleteModal from './components/delete-modal';\nimport SearchModal from './components/search-modal';\nimport TopContextMenu from './components/top-context-menu';\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { Menu, MenuItem } from '@progress/kendo-react-layout';\nimport { Tooltip } from '@progress/kendo-react-tooltip';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faBan, faCheckCircle } from '@fortawesome/free-solid-svg-icons';\nimport Loading from '../../images/loading.gif';\n\nclass ProductNameCell extends React.Component {\n    render() {\n        let title = [];\n        if(this.props.dataItem.tooltip && this.props.dataItem.tooltip.value) {\n            title = this.props.dataItem.tooltip.value;\n        }\n\n        const style = !(Object.entries(this.props.dataItem.style).length === 0 && this.props.dataItem.style.constructor === Object) ? this.props.dataItem.style.split(': ') : [];\n\n        if(this.props.field !== 'w2ui'){\n            return (\n                <td title={title} style={this.props.dataItem.style ? {color: style[1]} : {}}>\n                    {(!this.props.field.startsWith('is_')) ?\n                        (this.props.dataItem[this.props.field] ?\n                            (Array.isArray(this.props.dataItem[this.props.field])) ? (\n                                <span>{this.props.dataItem[this.props.field].join()}</span>\n                            ) : (this.props.dataItem[this.props.field]) : '')\n                        : ((this.props.dataItem[this.props.field] !== 'true') ?\n                            (<FontAwesomeIcon icon={faCheckCircle} />) :\n                            (<FontAwesomeIcon icon={faBan} />))}\n                </td>\n            );\n        }\n        return (<td></td>);\n    }\n}\n\nclass TooltipContentTemplate extends React.Component {\n    render() {\n        const titleArray = this.props.title.split(',');\n        return (\n            titleArray.map((item, i) => (\n                <span key={i}><span>{item}</span><br/></span>\n            ))\n        );\n    }\n}\n\nclass DivLayout extends GridMaster {\n\n    blurTimeoutRef;\n    menuWrapperRef;\n\n    rowRender = (trElement, dataItem) => {\n        const trProps = {\n            ...trElement.props,\n            onContextMenu: (e) => {\n                e.preventDefault();\n                this.handleContextMenuOpen(e, dataItem.dataItem);\n            }\n        };\n        return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\n    }\n\n    handleContextMenuOpen = (e, dataItem) => {\n        this.dataItem = dataItem;\n        this.dataItemIndex = this.state.data.findIndex(p => (p.recid === this.dataItem.recid));\n        this.offset = { left: e.clientX, top: e.clientY + window.scrollY };\n        this.setState({\n            open: true\n        });\n    }\n\n    closeContextMenu = () => {\n        this.setState({\n            open: false\n        })\n    }\n\n    handleOnSelect = (e) => {\n        if(e.item.data.type === 'custom') {\n            const item = e.item.data.item;\n\n            if(item.actionExecution === 'method' || item.actionExecution === 'service') {\n                this.handleClick(item, this.dataItem.recid)\n            } else {\n                this.displayForm(this.dataItem.recid, item.method, item.actionExecution);\n            }\n        }\n        if(e.item.data.type === 'edit') {\n            this.displayForm(this.dataItem.recid);\n        }\n\n        if(e.item.data.type === 'delete') {\n            this.handleShowDeleteModal()\n        }\n\n        this.setState({\n            open: false\n        })\n    };\n\n    onFocusHandler = () => {\n        clearTimeout(this.blurTimeoutRef);\n        this.blurTimeoutRef = undefined;\n    };\n\n    onBlurTimeout = () => {\n        this.setState({\n            open: false\n        });\n\n        this.blurTimeoutRef = undefined;\n    };\n\n    onBlurHandler = () => {\n        clearTimeout(this.blurTimeoutRef);\n        this.blurTimeoutRef = setTimeout(this.onBlurTimeout);\n    };\n\n    onPopupOpen = () => {\n        this.menuWrapperRef.querySelector('[tabindex]').focus();\n    };\n\n    render() {\n        const { component, rows, viewId, viewName } = this.props;\n        const { columns, columnWidth } = this.state;\n        \n        const parameters = component.parameterResponse;\n        return (\n            <div>\n                <div>\n                    <div className=\"d-flex top-menu\">\n                        <TopButtons\n                            columns={columns}\n                            hideColumn={this.hideColumn}\n                            refreshComponent={this.refreshComponent}\n                            componentId = {this.component.name}\n                            viewId = {viewId}\n                            viewName = {viewName}\n                            sort={this.state.sort}\n                        />\n                        <SearchBox\n                            search={this.state.search}\n                            searches={this.props.searches}\n                            isSearchable = {this.state.isSearchable}\n                            onSearch={this.onSearch}\n                            searchFunc={this.search}\n                            showSearchModal={this.handleShowSearchModal}\n                        />\n                        <TopContextMenu\n                            parameters={parameters}\n                            menuItems={this.listMenuItems}\n                            component={this.component}\n                            exportComponent={this.exportComponent}\n                            displayForm={this.displayForm}\n                            showDeleteModal={this.handleShowDeleteModal}\n                            handleClick={this.handleClick}\n                        />\n                    </div>\n                    <Popup\n                        offset={this.offset}\n                        show={this.state.open}\n                        open={this.onPopupOpen}\n                        popupClass={'popup-content'}\n                    >\n                        <div\n                             onFocus={this.onFocusHandler}\n                             onBlur={this.onBlurHandler}\n                             tabIndex={-1}\n                             ref={el => (this.menuWrapperRef = el)}\n                        >\n                            <Menu vertical={true} style={{ display: 'inline-block' }} onSelect={this.handleOnSelect}>\n                                <MenuItem text=\"Edit\" data={{ 'type': 'edit' }} />\n                                {this.menuItems.map((item) => (\n                                    <MenuItem key={item.recid} text={item.link} data={{'item': item, 'type': 'custom'}} />\n                                ))}\n                            </Menu>\n                        </div>\n                    </Popup>\n                    <div className=\"grid-parent\">\n                        <Tooltip content={ (props) => <TooltipContentTemplate title={props.title}/> } openDelay={1000} position=\"bottom\">\n                            <Grid\n                                className={\"grid-container row-\"+rows}\n                                data={this.state.data}\n                                sortable\n                                reorderable\n                                resizable\n                                selectedField=\"selected\"\n                                onSelectionChange={(event) => this.selectionChange(event.dataItem)}\n                                onColumnReorder={(event) => this.reorderColumns(event)}\n                                onColumnResize={(event) => this.resizeColumns(event)}\n                                sort={this.state.sort}\n                                onSortChange={(e) => {\n                                    this.onSort(e)\n                                }}\n                                total={this.props.total}\n                                onFilterChange={(e) => {\n                                    this.setState({\n                                        filter: e.filter,\n                                        search: e.filter ? e.filter.filters : [],\n                                    }, () => {\n                                        this.search(true)\n                                    });\n                                }}\n                                onHeaderSelectionChange={this.headerSelectionChange}\n                                onRowClick={(event) => this.selectionChange(event.dataItem, true)}\n                                rowRender={this.rowRender}\n                                onScroll={this.onPaginate}\n                            >\n                                <Column\n                                    field=\"selected\"\n                                    width=\"50px\"\n                                    filterable={false}\n                                />\n                                {columns.map((column, i) => (\n                                    (!column.hidden) ? (\n                                        <Column\n                                            key={column.field}\n                                            field={column.field}\n                                            title={column.caption}\n                                            width={columnWidth[i]}\n                                            cell={ProductNameCell}\n                                        />\n                                    ) : (null)\n                                ))}\n                                <Column\n                                    field=\"\"\n                                    filterable={false}\n                                />\n                            </Grid>\n                        </Tooltip>\n                        {(this.state.loader_showing) ? (\n                            <div className=\"loader\">\n                                <img src={Loading} width=\"32\" alt={'Loading'}/>\n                            </div>\n                        ) : (null)}\n                    </div>\n                </div>\n                <FormModal\n                    isOpen={this.state.showModal}\n                    modalType={this.state.modalType}\n                    onRequestClose={this.handleCloseModal}\n                    onUpdateForm={this.handleUpdateForm}\n                    workspaceId={this.props.workspaceId}\n                    component={component}\n                />\n                <DeleteModal\n                    isOpen={this.state.showDeleteModal}\n                    onRequestClose={this.handleCloseDeleteModal}\n                    deleteItems={this.deleteItems}\n                />\n                <SearchModal\n                    isOpen={this.state.showAdvancedSearchModal}\n                    onRequestClose={this.handleCloseSearchModal}\n                    search={this.state.search}\n                    searches={this.props.searches}\n                    columns={columns}\n                    onAdvancedSearch={this.onAdvancedSearch}\n                    searchFunc={this.search}\n                />\n            </div>\n        )\n    }\n}\n\nexport default DivLayout;","export var windowStage;\n(function (windowStage) {\n    windowStage[\"DEFAULT\"] = \"DEFAULT\";\n    windowStage[\"FULLSCREEN\"] = \"FULLSCREEN\";\n    windowStage[\"MINIMIZED\"] = \"MINIMIZED\";\n})(windowStage || (windowStage = {}));\n//# sourceMappingURL=StageEnum.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nexport var DialogTitleBar = function (_a) {\n    var children = _a.children, onCloseButtonClick = _a.onCloseButtonClick, id = _a.id, closeIcon = _a.closeIcon;\n    return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar k-header\", id: id },\n        React.createElement(\"div\", { className: \"k-window-title k-dialog-title\" }, children),\n        React.createElement(\"div\", { className: \"k-window-actions k-dialog-actions\" }, closeIcon &&\n            React.createElement(\"a\", { href: \"#\", role: \"button\", \"aria-label\": \"Close\", onClick: onCloseButtonClick, className: \"k-button k-bare k-button-icon k-window-action k-dialog-action k-dialog-close\" },\n                React.createElement(\"span\", { className: \"k-icon k-i-x\" })))));\n};\n//# sourceMappingURL=DialogTitleBar.js.map","import * as React from 'react';\n/**\n * Returns the action bar of the Dialog.\n * @returns React.ReactElement<any>\n */\nexport var DialogActionsBar = function (_a) {\n    var children = _a.children;\n    return (React.createElement(\"div\", { className: \"k-dialog-buttongroup k-dialog-button-layout-stretched\" }, children));\n};\n//# sourceMappingURL=DialogActionsBar.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys } from '@progress/kendo-react-common';\n// tslint:enable:max-line-length\nvar Dialog = /** @class */ (function (_super) {\n    __extends(Dialog, _super);\n    function Dialog() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.titleId = _this.generateTitleId();\n        _this.handleCloseDialog = function (event) {\n            event.preventDefault();\n            dispatchEvent(_this.props.onClose, event, _this, undefined);\n        };\n        _this.handleKeyDown = function (event) {\n            if (event.keyCode === Keys.esc && _this.props.onClose) {\n                event.preventDefault();\n                _this.handleCloseDialog(event);\n            }\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Dialog.prototype.render = function () {\n        var id = this.props.id !== undefined ? this.props.id : this.titleId;\n        var _a = this.props, title = _a.title, width = _a.width, height = _a.height, children = _a.children, minWidth = _a.minWidth, dir = _a.dir, style = _a.style, contentStyle = _a.contentStyle;\n        var elementsArray = React.Children.toArray(children);\n        var content = this.getContent(elementsArray);\n        var actions = this.getActionBar(elementsArray);\n        var aria = title ? {\n            'aria-labelledby': id\n        } : null;\n        var closeIcon = this.props.closeIcon !== undefined ? this.props.closeIcon : true;\n        return (React.createElement(\"div\", { className: 'k-dialog-wrapper' +\n                (this.props.className ? ' ' + this.props.className : ''), onKeyDown: this.handleKeyDown, tabIndex: 0, dir: dir, style: style },\n            React.createElement(\"div\", { className: \"k-overlay\" }),\n            React.createElement(\"div\", __assign({}, aria, { className: \"k-widget k-window k-dialog\", role: \"dialog\", style: { width: width, height: height, minWidth: minWidth } }),\n                this.props.title &&\n                    React.createElement(DialogTitleBar, { closeIcon: closeIcon, onCloseButtonClick: this.handleCloseDialog, id: id }, title),\n                React.createElement(\"div\", { className: \"k-content k-window-content k-dialog-content\", style: contentStyle }, content),\n                actions)));\n    };\n    Dialog.prototype.getActionBar = function (children) {\n        return children.filter(function (child) { return child && child.type === DialogActionsBar; });\n    };\n    Dialog.prototype.getContent = function (children) {\n        return children.filter(function (child) {\n            return child && child.type !== DialogActionsBar;\n        });\n    };\n    Dialog.prototype.generateTitleId = function () {\n        return 'dialog-title' + guid();\n    };\n    /**\n     * @hidden\n     */\n    Dialog.propTypes = {\n        title: PropTypes.any,\n        id: PropTypes.string,\n        dir: PropTypes.string,\n        style: PropTypes.object,\n        closeIcon: PropTypes.bool,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n    };\n    return Dialog;\n}(React.Component));\nexport { Dialog };\n//# sourceMappingURL=Dialog.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { windowStage } from './StageEnum';\n/**\n * @hidden\n */\nvar WindowTitleBarComponent = function (props) {\n    var children = props.children, onCloseButtonClick = props.onCloseButtonClick, onMinimizeButtonClick = props.onMinimizeButtonClick, onFullScreenButtonClick = props.onFullScreenButtonClick, onRestoreButtonClick = props.onRestoreButtonClick, onDoubleClick = props.onDoubleClick, stage = props.stage, forwardedRef = props.forwardedRef;\n    var minimizeButtonRender = props.minimizeButton ?\n        React.createElement(props.minimizeButton, { onClick: onMinimizeButtonClick, stage: stage }) :\n        (React.createElement(\"button\", { className: \"k-button-icon k-button k-bare\", onClick: onMinimizeButtonClick },\n            React.createElement(\"span\", { className: \"k-icon k-i-window-minimize\", role: \"presentation\" })));\n    var maximizeButtonRender = props.maximizeButton ?\n        React.createElement(props.maximizeButton, { onClick: onFullScreenButtonClick, stage: stage }) :\n        (React.createElement(\"button\", { className: \"k-button-icon k-button k-bare\", onClick: onFullScreenButtonClick },\n            React.createElement(\"span\", { className: \"k-icon k-i-window-maximize\", role: \"presentation\" })));\n    var restoreButtonRender = props.restoreButton ?\n        React.createElement(props.restoreButton, { onClick: onRestoreButtonClick, stage: stage }) :\n        (React.createElement(\"button\", { className: \"k-button-icon k-button k-bare\", onClick: onRestoreButtonClick },\n            React.createElement(\"span\", { className: \"k-icon k-i-window-restore\", role: \"presentation\" })));\n    var closeButtonRender = props.closeButton ?\n        React.createElement(props.closeButton, { onClick: onCloseButtonClick, stage: stage }) :\n        (React.createElement(\"button\", { className: \"k-button-icon k-button k-bare\", onClick: onCloseButtonClick },\n            React.createElement(\"span\", { className: \"k-icon k-i-close\", role: \"presentation\" })));\n    return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar k-header\", style: { touchAction: 'none' }, ref: forwardedRef, onDoubleClick: onDoubleClick },\n        React.createElement(\"div\", { className: \"k-window-title\" }, children ? children : ''),\n        (stage === windowStage.DEFAULT) && minimizeButtonRender,\n        (stage === windowStage.DEFAULT) && maximizeButtonRender,\n        (stage !== windowStage.DEFAULT) && restoreButtonRender,\n        closeButtonRender));\n};\n/**\n * @hidden\n */\nexport var WindowTitleBar = React.forwardRef(function (props, ref) { return (React.createElement(WindowTitleBarComponent, __assign({}, props, { forwardedRef: ref }))); });\n//# sourceMappingURL=WindowTitlebar.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar keys = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nvar ResizeHandlers = /** @class */ (function (_super) {\n    __extends(ResizeHandlers, _super);\n    function ResizeHandlers() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    ResizeHandlers.prototype.render = function () {\n        var _this = this;\n        return (React.createElement(\"div\", null,\n            \" \",\n            keys.map(function (key, index) {\n                return (React.createElement(Draggable, { key: index, onDrag: function (data) {\n                        var event = data.event;\n                        event.originalEvent.preventDefault();\n                        _this.props.onResize(event, { end: false, direction: key });\n                    }, onRelease: function (data) {\n                        var event = data.event;\n                        event.originalEvent.preventDefault();\n                        _this.props.onResize(event, { end: true, direction: key });\n                    } },\n                    React.createElement(\"div\", { className: 'k-resize-handle k-resize-' + key, style: { display: 'block', touchAction: 'none' } })));\n            })));\n    };\n    return ResizeHandlers;\n}(React.Component));\nexport { ResizeHandlers };\n//# sourceMappingURL=WindowResizeHandlers.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar MiddleLayerOptimization = /** @class */ (function (_super) {\n    __extends(MiddleLayerOptimization, _super);\n    function MiddleLayerOptimization() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MiddleLayerOptimization.prototype.shouldComponentUpdate = function (nextProps) {\n        return nextProps.shouldUpdateOnDrag || !nextProps.isDragging;\n    };\n    MiddleLayerOptimization.prototype.render = function () {\n        return this.props.children;\n    };\n    return MiddleLayerOptimization;\n}(React.Component));\nexport { MiddleLayerOptimization };\n//# sourceMappingURL=MiddleLayerOptimization.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { WindowTitleBar } from './WindowTitlebar';\nimport { dispatchEvent, Keys, classNames } from '@progress/kendo-react-common';\nimport { Draggable } from '@progress/kendo-react-common';\nimport { ResizeHandlers } from './WindowResizeHandlers';\nimport { MiddleLayerOptimization } from './MiddleLayerOptimization';\nimport { windowStage } from './StageEnum';\nvar DEFAULT_WIDTH = 300;\nvar DEFAULT_HEIGHT = 300;\nvar DEFAULT_MIN_WIDTH = 120;\nvar DEFAULT_MIN_HEIGHT = 100;\nvar DEFAULT_STEP = 5;\nvar Window = /** @class */ (function (_super) {\n    __extends(Window, _super);\n    function Window(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.onPress = function (data) {\n            var e = data.event;\n            _this.windowCoordinatesState.differenceLeft = e.pageX - _this.left;\n            _this.windowCoordinatesState.differenceTop = e.pageY - _this.top;\n        };\n        /**\n         * @hidden\n         */\n        _this.onDrag = function (data) {\n            var e = data.event;\n            e.originalEvent.preventDefault();\n            if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n                _this.setState({\n                    top: Math.max(e.pageY - _this.windowCoordinatesState.differenceTop, 0),\n                    left: e.pageX - _this.windowCoordinatesState.differenceLeft,\n                    isDragging: true\n                });\n                if (_this.props.onMove) {\n                    _this.dispatchMoveEvent(_this.props.onMove, e, true, false);\n                }\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onRelease = function (data) {\n            var e = data.event;\n            if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n                if (_this.props.onMove) {\n                    _this.dispatchMoveEvent(_this.props.onMove, e, true, true);\n                }\n            }\n            _this.setState({\n                isDragging: false\n            });\n        };\n        // Keyboard navigation\n        _this.handleKeyDown = function (event) {\n            if (event.target !== event.currentTarget) {\n                return;\n            }\n            var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n            var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n            if (event.ctrlKey && _this.props.resizable) {\n                switch (event.keyCode) {\n                    case Keys.up:\n                        event.preventDefault();\n                        if (minHeight <= (_this.height - DEFAULT_STEP)) {\n                            _this.setState({ height: _this.height - DEFAULT_STEP });\n                        }\n                        break;\n                    case Keys.down:\n                        event.preventDefault();\n                        _this.setState({ height: _this.height + DEFAULT_STEP });\n                        break;\n                    case Keys.left:\n                        if (minWidth <= (_this.width - DEFAULT_STEP)) {\n                            _this.setState({ width: _this.width - DEFAULT_STEP });\n                        }\n                        break;\n                    case Keys.right:\n                        _this.setState({ width: _this.width + DEFAULT_STEP });\n                        break;\n                    default: return;\n                }\n                _this.dispatchMoveEvent(_this.props.onResize, event, false, undefined);\n                return;\n            }\n            if (event.altKey) {\n                switch (event.keyCode) {\n                    case Keys.up:\n                        if (_this.windowStage === windowStage.MINIMIZED) {\n                            _this.handleRestore(event);\n                            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n                        }\n                        else if (_this.windowStage === windowStage.DEFAULT) {\n                            _this.handleFullscreen(event);\n                            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n                        }\n                        break;\n                    case Keys.down:\n                        if (_this.windowStage === windowStage.FULLSCREEN) {\n                            _this.handleRestore(event);\n                            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n                        }\n                        else if (_this.windowStage === windowStage.DEFAULT) {\n                            _this.handleMinimize(event);\n                            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n                        }\n                        break;\n                    default:\n                }\n                return;\n            }\n            if (!event.ctrlKey) {\n                switch (event.keyCode) {\n                    case Keys.esc:\n                        if (_this.props.onClose) {\n                            event.preventDefault();\n                            _this.handleCloseWindow(event);\n                            dispatchEvent(_this.props.onClose, event, _this, { state: undefined });\n                        }\n                        return;\n                    case Keys.up:\n                        _this.setState({ top: _this.state.top - DEFAULT_STEP });\n                        break;\n                    case Keys.down:\n                        _this.setState({ top: _this.state.top + DEFAULT_STEP });\n                        break;\n                    case Keys.left:\n                        _this.setState({ left: _this.state.left - DEFAULT_STEP });\n                        break;\n                    case Keys.right:\n                        _this.setState({ left: _this.state.left + DEFAULT_STEP });\n                        break;\n                    default: return;\n                }\n            }\n            _this.dispatchMoveEvent(_this.props.onMove, event, false, undefined);\n        };\n        // Get initial coordinates of the Window\n        _this.getInitialTop = function () {\n            if (_this.props.height) {\n                return (window.innerHeight / 2) - (_this.props.height / 2);\n            }\n            return (window.innerHeight / 2) - (DEFAULT_HEIGHT / 2);\n        };\n        _this.getInitialLeft = function () {\n            return (window.innerWidth / 2) - ((_this.props.width !== undefined ? _this.props.width : DEFAULT_WIDTH) / 2);\n        };\n        // Handle actions\n        _this.handleMinimize = function (event) {\n            event.preventDefault();\n            _this.windowCoordinatesState.leftBeforeAction = _this.left;\n            _this.windowCoordinatesState.topBeforeAction = _this.top;\n            _this.windowCoordinatesState.widthBeforeAction = _this.width;\n            _this.windowCoordinatesState.heightBeforeAction = _this.height;\n            _this.setState({\n                stage: windowStage.MINIMIZED,\n                height: 0\n            });\n            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n        };\n        _this.handleFullscreen = function (event) {\n            event.preventDefault();\n            _this.windowCoordinatesState.leftBeforeAction = _this.left;\n            _this.windowCoordinatesState.topBeforeAction = _this.top;\n            _this.windowCoordinatesState.widthBeforeAction = _this.width;\n            _this.windowCoordinatesState.heightBeforeAction = _this.height;\n            _this.setState({\n                left: 0,\n                top: 0,\n                width: window.innerWidth,\n                height: window.innerHeight,\n                stage: windowStage.FULLSCREEN\n            });\n            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n        };\n        _this.handleRestore = function (event) {\n            event.preventDefault();\n            if (_this.windowStage === windowStage.FULLSCREEN) {\n                _this.setState({\n                    stage: windowStage.DEFAULT,\n                    left: _this.windowCoordinatesState.leftBeforeAction,\n                    top: _this.windowCoordinatesState.topBeforeAction,\n                    width: _this.windowCoordinatesState.widthBeforeAction,\n                    height: _this.windowCoordinatesState.heightBeforeAction\n                });\n            }\n            else if (_this.windowStage === windowStage.MINIMIZED) {\n                _this.setState({\n                    stage: windowStage.DEFAULT,\n                    height: _this.windowCoordinatesState.heightBeforeAction\n                });\n            }\n            dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n        };\n        _this.handleCloseWindow = function (event) {\n            event.preventDefault();\n            dispatchEvent(_this.props.onClose, event, _this, { state: undefined });\n        };\n        _this.handleDoubleClick = function (e) {\n            if (_this.windowStage === windowStage.FULLSCREEN || _this.windowStage === windowStage.MINIMIZED) {\n                _this.handleRestore(e);\n            }\n            else {\n                _this.handleFullscreen(e);\n            }\n        };\n        // Handle resizing\n        _this.handleResize = function (event, props) {\n            var currentWidth = _this.width;\n            var currentHeight = _this.height;\n            var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n            var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n            var heightDifference = _this.top - event.pageY;\n            var widthDifference = _this.left - event.pageX;\n            var newWidth = event.pageX - _this.left;\n            var newHeight = event.pageY - _this.top;\n            var newState = Object.assign({}, _this.state, { isDragging: !props.end });\n            if (props.direction.indexOf('n') >= 0 && minHeight - (currentHeight + heightDifference) < 0) {\n                newState.top = event.pageY;\n                newState.height = currentHeight + heightDifference;\n            }\n            if (props.direction.indexOf('s') >= 0 && (minHeight - newHeight < 0)) {\n                newState.height = newHeight;\n            }\n            if (props.direction.indexOf('w') >= 0 && minWidth - (currentWidth + widthDifference) < 0) {\n                newState.left = event.pageX;\n                newState.width = currentWidth + widthDifference;\n            }\n            if (props.direction.indexOf('e') >= 0 && (minWidth - newWidth < 0)) {\n                newState.width = newWidth;\n            }\n            _this.setState(newState);\n            _this.dispatchMoveEvent(_this.props.onResize, event, true, props.end);\n        };\n        // Dispatcher for the resize and move events\n        _this.dispatchMoveEvent = function (callback, event, drag, end) {\n            if (!callback) {\n                return;\n            }\n            callback.call(undefined, {\n                nativeEvent: event.nativeEvent ? event.nativeEvent : event.originalEvent,\n                drag: drag,\n                end: end,\n                target: _this,\n                left: _this.state.left,\n                top: _this.state.top,\n                width: _this.state.width,\n                hight: _this.state.height,\n                height: _this.state.height\n            });\n        };\n        _this.handleBrowserWindowResize = function () {\n            if (_this.windowStage === windowStage.FULLSCREEN) {\n                _this.setState({\n                    width: window.innerWidth,\n                    height: window.innerHeight\n                });\n            }\n        };\n        _this.state = {\n            stage: _this.props.stage || windowStage.DEFAULT,\n            isDragging: false,\n            top: _this.props.top || _this.props.initialTop || _this.getInitialTop(),\n            left: _this.props.left || _this.props.initialLeft || _this.getInitialLeft(),\n            width: _this.props.width || _this.props.initialWidth || DEFAULT_WIDTH,\n            height: _this.props.height || _this.props.initialHeight || DEFAULT_HEIGHT\n        };\n        _this.windowCoordinatesState = {\n            leftBeforeAction: (_this.props.left || _this.props.initialLeft || _this.getInitialLeft()),\n            topBeforeAction: (_this.props.top || _this.props.initialTop || _this.getInitialTop()),\n            widthBeforeAction: (_this.props.width || _this.props.initialWidth || DEFAULT_WIDTH),\n            heightBeforeAction: (_this.props.height || _this.props.initialHeight || DEFAULT_HEIGHT)\n        };\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    Window.prototype.componentDidMount = function () {\n        if (window) {\n            window.addEventListener('resize', this.handleBrowserWindowResize);\n        }\n    };\n    /**\n     * @hidden\n     */\n    Window.prototype.componentWillUnmount = function () {\n        if (window) {\n            window.removeEventListener('resize', this.handleBrowserWindowResize);\n        }\n    };\n    /**\n     * @hidden\n     */\n    Window.prototype.render = function () {\n        var _this = this;\n        var classNamesWindow = classNames('k-widget', 'k-window', 'k-window-wrapper', {\n            'k-window-minimized': this.state.stage === 'MINIMIZED'\n        });\n        return (React.createElement(React.Fragment, null,\n            this.props.modal && React.createElement(\"div\", { className: \"k-overlay\" }),\n            React.createElement(\"div\", { tabIndex: 0, onFocus: function (e) { return e.target.classList.add('k-state-focused'); }, onBlur: function (e) { return e.target.classList.remove('k-state-focused'); }, onKeyDown: this.handleKeyDown, ref: (function (el) { return _this.windowElement = el; }), className: classNamesWindow, style: __assign({ top: this.top, left: this.left, width: this.width, height: this.height || '' }, this.props.style) },\n                React.createElement(MiddleLayerOptimization, { shouldUpdateOnDrag: this.props.shouldUpdateOnDrag || false, isDragging: this.state.isDragging },\n                    React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { return _this.draggable = component; } },\n                        React.createElement(WindowTitleBar, { stage: this.windowStage, onDoubleClick: this.props.doubleClickStageChange ? this.handleDoubleClick : undefined, onMinimizeButtonClick: this.handleMinimize, onFullScreenButtonClick: this.handleFullscreen, onRestoreButtonClick: this.handleRestore, onCloseButtonClick: this.handleCloseWindow, closeButton: this.props.closeButton, minimizeButton: this.props.minimizeButton, maximizeButton: this.props.maximizeButton, restoreButton: this.props.restoreButton }, this.props.title)),\n                    this.windowStage !== windowStage.MINIMIZED\n                        ? React.createElement(\"div\", { className: \"k-content k-window-content\" }, this.props.children)\n                        : null,\n                    this.windowStage === windowStage.DEFAULT &&\n                        this.props.resizable\n                        ? React.createElement(ResizeHandlers, { onResize: this.handleResize })\n                        : null))));\n    };\n    Object.defineProperty(Window.prototype, \"top\", {\n        // Getters\n        get: function () {\n            if (this.windowStage !== windowStage.FULLSCREEN) {\n                return Math.max(this.props.top || this.state.top, 0);\n            }\n            return 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Window.prototype, \"left\", {\n        get: function () {\n            if (this.windowStage !== windowStage.FULLSCREEN) {\n                return Math.max(this.props.left || this.state.left, 0);\n            }\n            return 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Window.prototype, \"width\", {\n        get: function () {\n            var width = this.props.width || this.state.width;\n            if (this.windowStage === windowStage.FULLSCREEN) {\n                width = window.innerWidth;\n            }\n            return width;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Window.prototype, \"height\", {\n        get: function () {\n            var height = this.props.height || this.state.height;\n            if (this.windowStage === windowStage.FULLSCREEN) {\n                height = window.innerHeight;\n            }\n            else if (this.windowStage === windowStage.MINIMIZED) {\n                height = 0;\n            }\n            return height;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Window.prototype, \"windowStage\", {\n        get: function () {\n            return this.props.stage || this.state.stage;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Window.propTypes = {\n        id: PropTypes.string,\n        width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        left: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        top: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        initialwidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        initialHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        initialLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        initialTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        minHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        resizable: PropTypes.bool,\n        draggable: PropTypes.bool,\n        title: PropTypes.any,\n        shouldUpdateOnDrag: PropTypes.bool,\n        stage: PropTypes.oneOf(['DEFAULT', 'MINIMIZED', 'FULLSCREEN'])\n    };\n    /**\n     * @hidden\n     */\n    Window.defaultProps = {\n        minWidth: DEFAULT_MIN_WIDTH,\n        minHeight: DEFAULT_MIN_HEIGHT,\n        resizable: true,\n        draggable: true,\n        modal: false,\n        doubleClickStageChange: true\n    };\n    return Window;\n}(React.Component));\nexport { Window };\n//# sourceMappingURL=Window.js.map","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { getObjectAction, toggleDialogAction, getStateAction } from '../../actions/dashboard';\nimport DivLayout from './../../components/grids/div-layout';\nimport UserSession from './../../components/utils/user-session';\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\n\nclass UiGrid extends Component {\n\n    constructor(props) {\n        super(props);\n        this.user = UserSession.getUserData();\n        this.state = {\n            limit: 20,\n            offset: 0,\n            visible: true,\n        };\n        this.toggleDialog = this.toggleDialog.bind(this);\n    }\n\n    componentDidMount() {\n        const { component } = this.props;\n\n        const request = {\n            view: this.props.dashboard.mainActivity.view.id,\n            grid: component.name,\n        };\n\n        this.props.getState(request, component.id, this.getComponent);\n    }\n\n    setOffset = (offset) => {\n        this.setState({offset});\n    }\n\n    getComponent = () => {\n        const { component } = this.props;\n\n        const sort = [];\n\n        if(component.initialState && component.initialState.sortData) {\n\n            component.initialState.sortData.forEach((col) => {\n                sort.push({\n                    field: col.field,\n                    direction: col.direction,\n                    dir: col.direction\n                });\n            })\n        }\n\n        const data = {\n            limit: this.state.limit,\n            sort\n        };\n\n        let schema = component.referencelink;\n\n        if(!component.parentValues) {\n            this.getObject({request: JSON.stringify(data)}, schema, component, 'Workspace', this.user.workspaceId, true, null);\n        } else {\n            this.getObject({request: JSON.stringify(data)}, schema, component, component.parentValues.type, component.parentSelectedItems, true, null);\n        }\n    }\n\n    getObject = (data, method, component, parentType, parentID, refresh, callback) => {\n        const { view } = this.props.dashboard.mainActivity;\n        this.props.getObject(method, parentID, view.id, component.recid, component.name, parentType, data, refresh, callback);\n    }\n\n    getColumns = (object) => {\n        const columns = [];\n        object.columns.map((column) => {\n            columns.push(column.field);\n            return null;\n        });\n        return columns;\n    }\n\n    getRecords = (object, columns) => {\n        const records = [];\n        object.records.map((record) => {\n            const item = {};\n            columns.map((column) => {\n                if(record[column.field]) {\n                    item[column.field] = record[column.field];\n                } else {\n                    item.column = '-';\n                }\n                return null;\n            });\n            const tooltip = {};\n            if(record.conflict_tooltip) {\n                tooltip.type = 'error';\n                tooltip.value = record.conflict_tooltip;\n            }\n            item.tooltip = tooltip;\n            let style = {};\n            if(record.w2ui && record.w2ui.length > 0) {\n                style = record.w2ui[0];\n            }\n            if(record.w2ui && record.w2ui.style) {\n                style = record.w2ui.style;\n            }\n            item.style = style;\n            records.push(item);\n            return null;\n        });\n        return records;\n    }\n\n    toggleDialog() {\n        this.setState({\n            visible: !this.state.visible\n        });\n    }\n\n    _renderDialog() {\n\n        const { dialogContent } = this.props.dashboard.mainActivity\n        return (\n            <Dialog\n                title={\"Info\"}\n                onClose={toggleDialogAction}>\n                <p style={{ margin: \"25px\", textAlign: \"center\" }}>{dialogContent}</p>\n                <DialogActionsBar>\n                    <button className=\"k-button\" onClick={toggleDialogAction}>OK</button>\n                </DialogActionsBar>\n            </Dialog>\n        )\n    }\n\n    render() {\n        const { component, rows } = this.props;\n        const { showDialog } = this.props.dashboard.mainActivity;\n        const object = this.props.component.objectResponse;\n        return (\n            <div className=\"widget-body\">\n                {object && object.columns ? (\n                    <DivLayout\n                        rows={rows}\n                        columns={object.columns}\n                        records={this.getRecords(object, object.columns)}\n                        searches={object.searches}\n                        getObject={this.getObject}\n                        limit={this.state.limit}\n                        total={object.total}\n                        setOffset={this.setOffset}\n                        viewId={this.props.dashboard.mainActivity.view.id}\n                        viewName={this.props.dashboard.mainActivity.view.name}\n                        workspaceId={this.user.workspaceId}\n                        component={component}\n                        components={this.props.dashboard.mainActivity.components}\n                    />\n                ) : null }\n                {showDialog && this._renderDialog()}\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n    getObject: (method, parentID, view, componentID, componentName, parentType, data, refresh, callback) => {\n        dispatch(getObjectAction(method, parentID, view, componentID, componentName, parentType, data, refresh, callback)).then(() => {\n            (callback) ? callback() : null;\n        });\n    },\n    getState: (request, parentID, callback) => {\n        dispatch(getStateAction(request, parentID)).then(() => {\n            (callback) ? callback() : null;\n        });\n    },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UiGrid);\n","import React from 'react';\nimport GridMaster from './index';\nimport TopButtons from './components/top-buttons';\nimport SearchBox from './components/search-box';\nimport FormModal from './components/form-modal';\nimport DeleteModal from './components/delete-modal';\nimport SearchModal from './components/search-modal';\nimport TopContextMenu from './components/top-context-menu';\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { Menu, MenuItem } from '@progress/kendo-react-layout';\nimport { Tooltip } from '@progress/kendo-react-tooltip';\nimport Loading from '../../images/loading.gif';\n\nclass ProductNameCell extends React.Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            all_data_visible: false,\n        };\n    }\n\n    render() {\n        const columns = JSON.parse(this.props.field).columns;\n        const maxItems = JSON.parse(this.props.field).maxItems;\n        let items = 0;\n        let title = [];\n        if(this.props.dataItem.tooltip && this.props.dataItem.tooltip.value) {\n            title = this.props.dataItem.tooltip.value;\n        }\n        const style = !(Object.entries(this.props.dataItem.style).length === 0 && this.props.dataItem.style.constructor === Object) ? this.props.dataItem.style.split(': ') : [];\n        return (\n            <td className=\"verticalRow\" title={title}>\n                {columns.map(\n                    (key, i) => {\n                        if(!key.hidden) {\n                            if(!this.state.all_data_visible) {\n                                if(items < maxItems) {\n                                    items ++;\n                                    return (\n                                        <span className={(key.header) ? 'header-col' : ''} key={this.props.dataItem['recid']+'_'+i} style={this.props.dataItem.style ? {color: style[1]} : {}}>\n                                            <strong>{ key.field }:</strong>&nbsp;\n                                            {(typeof this.props.dataItem[key.field] !== 'object') ? (Array.isArray(this.props.dataItem[key.field]) ? this.props.dataItem[key.field].join (',') : this.props.dataItem[key.field]) : ''}<br/>\n                                        </span>\n                                    );\n                                }\n                                return null;\n                            } else {\n                                return (\n                                    <span className={(key.header) ? 'header-col' : ''} key={this.props.dataItem['recid']+'_'+i}>\n                                        <strong>{ key.field }:</strong>&nbsp;\n                                        {(typeof this.props.dataItem[key.field] !== 'object') ? this.props.dataItem[key.field] : ''}<br/>\n                                    </span>\n                                );\n                            }\n                        }\n                    }\n                )}\n                {(!this.state.all_data_visible) ? (<span className=\"visibleButton more\" onClick={() => this.setState({all_data_visible: true})}>+</span>) : (<span className=\"visibleButton less\" onClick={() => this.setState({all_data_visible: false})}>-</span>)}\n\n            </td>\n        );\n    }\n}\n\nclass TooltipContentTemplate extends React.Component {\n    render() {\n        const titleArray = this.props.title.split(',');\n        return (\n            titleArray.map((item, i) => (\n                <span key={i}><span>{item}</span><br/></span>\n            ))\n        );\n    }\n}\n\nclass DivVerticalLayout extends GridMaster {\n\n    blurTimeoutRef;\n    menuWrapperRef;\n\n    rowRender = (trElement, dataItem) => {\n        const trProps = {\n            ...trElement.props,\n            onContextMenu: (e) => {\n                e.preventDefault();\n                this.handleContextMenuOpen(e, dataItem.dataItem);\n            }\n        };\n        return React.cloneElement(trElement, { ...trProps }, trElement.props.children);\n    }\n\n    handleContextMenuOpen = (e, dataItem) => {\n        this.dataItem = dataItem;\n        this.dataItemIndex = this.state.data.findIndex(p => (p.recid === this.dataItem.recid));\n        this.offset = { left: e.clientX, top: e.clientY + window.scrollY };\n        this.setState({\n            open: true\n        });\n    }\n\n    handleOnSelect = (e) => {\n        if(e.item.data.type === 'custom') {\n            const item = e.item.data.item;\n\n            if(item.actionExecution === 'method' || item.actionExecution === 'service') {\n                this.handleClick(item, this.dataItem.recid)\n            } else {\n                this.displayForm(this.dataItem.recid, item.method, item.actionExecution);\n            }\n        }\n        if(e.item.data.type === 'edit') {\n            this.displayForm(this.dataItem.recid);\n        }\n\n        if(e.item.data.type === 'delete') {\n            this.handleShowDeleteModal()\n        }\n\n        this.setState({\n            open: false\n        })\n    };\n\n    onFocusHandler = () => {\n        clearTimeout(this.blurTimeoutRef);\n        this.blurTimeoutRef = undefined;\n    };\n\n    onBlurTimeout = () => {\n        this.setState({\n            open: false\n        });\n\n        this.blurTimeoutRef = undefined;\n    };\n\n    onBlurHandler = () => {\n        clearTimeout(this.blurTimeoutRef);\n        this.blurTimeoutRef = setTimeout(this.onBlurTimeout);\n    };\n\n    onPopupOpen = () => {\n        this.menuWrapperRef.querySelector('[tabindex]').focus();\n    };\n\n    render() {\n        const { component, rows, viewId } = this.props;\n        const { columns } = this.state;\n\n        const parameters = component.parameterResponse;\n        return (\n            <div>\n                <div>\n                    <div className=\"d-flex top-menu\">\n                        <TopButtons\n                            columns={columns}\n                            hideColumn={this.hideColumn}\n                            refreshComponent={this.refreshComponent}\n                            componentId = {this.component.recid}\n                            viewId = {viewId}\n                        />\n                        <SearchBox\n                            search={this.state.search}\n                            searches={this.props.searches}\n                            isSearchable = {this.state.isSearchable}\n                            onSearch={this.onSearch}\n                            searchFunc={this.search}\n                            showSearchModal={this.handleShowSearchModal}\n                        />\n                        <TopContextMenu\n                            parameters={parameters}\n                            menuItems={this.listMenuItems}\n                            component={this.component}\n                            exportComponent={this.exportComponent}\n                            displayForm={this.displayForm}\n                            showDeleteModal={this.handleShowDeleteModal}\n                            handleClick={this.handleClick}\n                        />\n                    </div>\n                    <Popup\n                        offset={this.offset}\n                        show={this.state.open}\n                        open={this.onPopupOpen}\n                        popupClass={'popup-content'}\n                    >\n                        <div\n                             onFocus={this.onFocusHandler}\n                             onBlur={this.onBlurHandler}\n                             tabIndex={-1}\n                             ref={el => (this.menuWrapperRef = el)}\n                        >\n                            <Menu vertical={true} style={{ display: 'inline-block' }} onSelect={this.handleOnSelect}>\n                                <MenuItem text=\"Edit\" data={{ 'type': 'edit' }} />\n                                {this.menuItems.map((item) => (\n                                    <MenuItem key={item.recid} text={item.link} data={{'item': item, 'type': 'custom'}} />\n                                ))}\n                            </Menu>\n                        </div>\n                    </Popup>\n                    <div className=\"grid-parent\">\n                        <Tooltip content={ (props) => <TooltipContentTemplate title={props.title}/> } openDelay={200} position=\"bottom\">\n                            <Grid\n                                className={\"vertical grid-container row-\"+rows}\n                                selectedField=\"selected\"\n                                onSelectionChange={(event) => this.selectionChange(event.dataItem)}\n                                data={this.state.data}\n                                total={this.props.total}\n                                onFilterChange={(e) => {\n                                    this.setState({\n                                        filter: e.filter,\n                                        search: e.filter ? e.filter.filters : [],\n                                    }, () => {\n                                        this.search(true)\n                                    });\n                                }}\n                                onRowClick={(event) => this.selectionChange(event.dataItem, true)}\n                                rowRender={this.rowRender}\n                                onScroll={this.onPaginate}\n                            >\n                                <Column\n                                    field={JSON.stringify({\"columns\": this.state.columns, \"maxItems\": this.state.maxItems})}\n                                    cell={ProductNameCell}\n                                />\n                            </Grid>\n                        </Tooltip>\n                        {(this.state.loader_showing) ? (\n                            <div className=\"loader\">\n                                <img src={Loading} width=\"32\" alt={'Loading'}/>\n                            </div>\n                        ) : (null)}\n                    </div>\n                </div>\n                <FormModal\n                    isOpen={this.state.showModal}\n                    modalType={this.state.modalType}\n                    onRequestClose={this.handleCloseModal}\n                    onUpdateForm={this.handleUpdateForm}\n                    workspaceId={this.props.workspaceId}\n                    component={component}\n                />\n                <DeleteModal\n                    isOpen={this.state.showDeleteModal}\n                    onRequestClose={this.handleCloseDeleteModal}\n                    deleteItems={this.deleteItems}\n                />\n                <SearchModal\n                    isOpen={this.state.showAdvancedSearchModal}\n                    onRequestClose={this.handleCloseSearchModal}\n                    search={this.state.search}\n                    searches={this.props.searches}\n                    columns={columns}\n                    onAdvancedSearch={this.onAdvancedSearch}\n                    searchFunc={this.search}\n                />\n            </div>\n        )\n    }\n}\n\nexport default DivVerticalLayout;","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { getObjectAction, toggleDialogAction } from '../../actions/dashboard';\nimport DivVerticalLayout from './../../components/grids/div-vertical-layout';\nimport UserSession from './../../components/utils/user-session';\nimport { Dialog, DialogActionsBar } from '@progress/kendo-react-dialogs';\n\nclass UiVerticalGrid extends Component {\n\n    constructor(props) {\n        super(props);\n        this.user = UserSession.getUserData();\n        this.state = {\n            limit: 20,\n            offset: 0,\n            visible: true,\n        };\n        this.toggleDialog = this.toggleDialog.bind(this);\n    }\n\n    componentDidMount() {\n        const { component } = this.props;\n        const data = {\n            limit: this.state.limit,\n        };\n        let schema = component.referencelink;\n        if(!component.parentValues) {\n            this.getObject({request: JSON.stringify(data)}, schema, component, 'Workspace', this.user.workspaceId, true, null);\n        } else {\n            this.getObject({request: JSON.stringify(data)}, schema, component, component.parentValues.type, component.parentSelectedItems, true, null);\n        }\n    }\n\n    setOffset = (offset) => {\n        this.setState({offset});\n    }\n\n    getObject = (data, method, component, parentType, parentID, refresh, callback) => {\n        const { view } = this.props.dashboard.mainActivity;\n        this.props.getObject(method, parentID, view.id, component.recid, component.name, parentType, data, refresh, callback);\n    }\n\n    getColumns = (object) => {\n        const columns = [];\n        object.columns.map((column) => {\n            columns.push(column.field);\n            return null;\n        });\n        return columns;\n    }\n\n    getRecords = (object, columns) => {\n        const records = [];\n        object.records.map((record) => {\n            const item = {};\n            columns.map((column) => {\n                if(record[column.field]) {\n                    item[column.field] = record[column.field];\n                } else {\n                    item.column = '-';\n                }\n                return null;\n            });\n            const tooltip = {};\n            if(record.conflict_tooltip) {\n                tooltip.type = 'error';\n                tooltip.value = record.conflict_tooltip;\n            }\n            item.tooltip = tooltip;\n            let style = {};\n            if(record.w2ui && record.w2ui.length > 0) {\n                style = record.w2ui[0];\n            }\n            if(record.w2ui && record.w2ui.style) {\n                style = record.w2ui.style;\n            }\n            item.style = style;\n            records.push(item);\n            return null;\n        });\n        return records;\n    }\n\n    toggleDialog() {\n        this.setState({\n            visible: !this.state.visible\n        });\n    }\n\n    _renderDialog() {\n\n        const { dialogContent } = this.props.dashboard.mainActivity\n        return (\n            <Dialog\n                title={\"Info\"}\n                onClose={toggleDialogAction}>\n                <p style={{ margin: \"25px\", textAlign: \"center\" }}>{dialogContent}</p>\n                <DialogActionsBar>\n                    <button className=\"k-button\" onClick={toggleDialogAction}>OK</button>\n                </DialogActionsBar>\n            </Dialog>\n        )\n    }\n\n    render() {\n        const { component, rows } = this.props;\n        const { showDialog, dialogParent } = this.props.dashboard.mainActivity;\n        const object = this.props.component.objectResponse;\n        return (\n            <div className=\"widget-body\">\n                {object && object.columns ? (\n                    <DivVerticalLayout\n                        rows={rows}\n                        columns={object.columns}\n                        records={this.getRecords(object, object.columns)}\n                        searches={object.searches}\n                        getObject={this.getObject}\n                        limit={this.state.limit}\n                        total={object.total}\n                        setOffset={this.setOffset}\n                        viewId={this.props.dashboard.mainActivity.view.id}\n                        workspaceId={this.user.workspaceId}\n                        component={component}\n                        components={this.props.dashboard.mainActivity.components}\n                    />\n                ) : null }\n                {(showDialog && dialogParent == component.recid) ? this._renderDialog() : null}\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n    getObject: (method, parentID, view, componentID, componentName, parentType, data, refresh, callback) => {\n        dispatch(getObjectAction(method, parentID, view, componentID, componentName, parentType, data, refresh, callback)).then(() => {\n            (callback) ? callback() : null;\n        });\n    },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UiVerticalGrid);\n","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { getFormAction } from '../../actions/dashboard';\nimport UserSession from './../../components/utils/user-session';\nimport RenderForm from '../forms/render-form';\nimport { getObjectAction } from '../../actions/dashboard';\n\nclass UiForm extends Component {\n    constructor(props) {\n        super(props);\n        this.user = UserSession.getUserData();\n    }\n\n    componentDidMount() {\n        const { component } = this.props;\n        const { view, components } = this.props.dashboard.mainActivity;\n        const parentComponent =  components.find((c) => c.name === component.parentValues.name);\n        const type = parentComponent.parentValues ? parentComponent.parentValues.type : 'Workspace';\n        const objectId = parentComponent.parentSelectedItems ? parentComponent.parentSelectedItems[0] : this.user.workspaceId;\n        getFormAction(view.id, objectId, parentComponent.focus, type, 'edit', this.user.workspaceId, component.recid);\n    }\n\n    handleUpdateForm  = () => {\n        const { view, components } = this.props.dashboard.mainActivity;\n        const { component } = this.props;\n        const parentComponent =  components.find((c) => c.name === component.parentValues.name);\n        getObjectAction(\n            `get${component.parentValues.type}`,\n            parentComponent.parentSelectedItems ? parentComponent.parentSelectedItems : this.user.workspaceId,\n            view.id,\n            component.parentValues.id,\n            component.parentValues.name,\n            parentComponent.parentValues ? parentComponent.parentValues.type : 'Workspace',\n            {request: JSON.stringify({\n                limit: 5,\n                offset: 0,\n            })},\n            true\n        );\n    }\n\n    render() {\n        const { component } = this.props;\n        return (\n            <div className=\"form-component\" style={{ height: this.props.height - 60 }}>\n                <RenderForm\n                    form={component.formFieldResponse}\n                    formValues={component.formFieldValuesResponse}\n                    component={component}\n                    workspaceId={this.user.workspaceId}\n                    onUpdateForm={this.handleUpdateForm}\n                    modalType='edit'\n                />\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\nexport default connect(mapDispatchToProps)(UiForm);\n","export var ARC = \"arc\";\nexport var AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport var BLACK = \"#000\";\nexport var BOTTOM = \"bottom\";\nexport var CENTER = \"center\";\nexport var CIRCLE = \"circle\";\nexport var COORD_PRECISION = 3;\nexport var CROSS = \"cross\";\nexport var DATE = \"date\";\nexport var DEFAULT_FONT = \"12px sans-serif\";\nexport var DEFAULT_HEIGHT = 400;\nexport var DEFAULT_PRECISION = 10;\nexport var DEFAULT_WIDTH = 600;\nexport var END = \"end\";\nexport var FORMAT_REGEX = /\\{\\d+:?/;\nexport var HEIGHT = \"height\";\nexport var HIGHLIGHT_ZINDEX = 100;\nexport var INSIDE = \"inside\";\nexport var LEFT = \"left\";\nexport var MAX_VALUE = Number.MAX_VALUE;\nexport var MIN_VALUE = -Number.MAX_VALUE;\nexport var NONE = \"none\";\nexport var NOTE_CLICK = \"noteClick\";\nexport var NOTE_HOVER = \"noteHover\";\nexport var NOTE_LEAVE = \"noteLeave\";\nexport var OBJECT = \"object\";\nexport var OUTSIDE = \"outside\";\nexport var RIGHT = \"right\";\nexport var START = \"start\";\nexport var STRING = \"string\";\nexport var TOP = \"top\";\nexport var TRIANGLE = \"triangle\";\nexport var VALUE = \"value\";\nexport var WHITE = \"#fff\";\nexport var WIDTH = \"width\";\nexport var X = \"x\";\nexport var Y = \"y\";\n\n","export default function isArray(value) {\n    return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n    var classArray = isArray(classes) ? classes : [ classes ];\n\n    for (var idx = 0; idx < classArray.length; idx++) {\n        var className = classArray[idx];\n        if (element.className.indexOf(className) === -1) {\n            element.className += \" \" + className;\n        }\n    }\n}","var SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n    if (element && element.className) {\n        element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n    }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n    var offset = 0.5;\n    if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n        if (path.options.stroke.width % 2 === 0) {\n            offset = 0;\n        }\n    }\n\n    for (var i = 0; i < path.segments.length; i++) {\n        path.segments[i].anchor().round(0).translate(offset, offset);\n    }\n\n    return path;\n}","export default function clockwise(angle1, angle2) {\n    // True if angle2 is clockwise of angle1\n    // assuming angles grow in clock-wise direction\n    // (as in the pie and radar charts)\n    return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n    return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n    return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n    return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n    return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nvar OBJECT = \"object\";\nvar UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n    for (var property in source) {\n        var propValue = source[property];\n        var propType = typeof propValue;\n\n        var propInit = (void 0);\n        if (propType === OBJECT && propValue !== null) {\n            propInit = propValue.constructor;\n        } else {\n            propInit = null;\n        }\n\n        if (propInit && propInit !== Array) {\n\n            if (propValue instanceof Date) {\n                destination[property] = new Date(propValue.getTime());\n            } else if (isFunction(propValue.clone)) {\n                destination[property] = propValue.clone();\n            } else {\n                var destProp = destination[property];\n                if (typeof (destProp) === OBJECT) {\n                    destination[property] = destProp || {};\n                } else {\n                    destination[property] = {};\n                }\n                deepExtendOne(destination[property], propValue);\n            }\n        } else if (propType !== UNDEFINED) {\n            destination[property] = propValue;\n        }\n    }\n\n    return destination;\n}\n\nexport default function deepExtend(destination) {\n    var arguments$1 = arguments;\n\n    var length = arguments.length;\n\n    for (var i = 1; i < length; i++) {\n        deepExtendOne(destination, arguments$1[i]);\n    }\n\n    return destination;\n}","export default function isObject(value) {\n    return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n    if (isNumber(value)) {\n        return value + \"px\";\n    }\n    return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nvar SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n    return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n    var stylesArray = isString(styles) ? [ styles ] : styles;\n\n    if (isArray(stylesArray)) {\n        var result = {};\n        var style = window.getComputedStyle(element);\n\n        for (var idx = 0; idx < stylesArray.length; idx++) {\n            var field = stylesArray[idx];\n            result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n        }\n\n        return result;\n    } else if (isObject(styles)) {\n        for (var field$1 in styles) {\n            element.style[field$1] = styleValue(styles[field$1]);\n        }\n    }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing) {\n    if ( defaultSpacing === void 0 ) defaultSpacing = 0;\n\n    var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n    if (typeof(value) === \"number\") {\n        spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n    } else {\n        spacing[TOP] = value[TOP] || defaultSpacing;\n        spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n        spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n        spacing[LEFT] = value[LEFT] || defaultSpacing;\n    }\n\n    return spacing;\n}","var defaultImplementation = {\n    format: function (format, value) { return value; },\n\n    toString: function (value) { return value; },\n\n    parseDate: function (value) { return new Date(value); }\n};\n\nvar current = defaultImplementation;\n\nvar IntlService = function IntlService () {};\n\nvar staticAccessors = { implementation: { configurable: true } };\n\nIntlService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nstaticAccessors.implementation.get = function () {\n    return current;\n};\n\nObject.defineProperties( IntlService, staticAccessors );\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nvar FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nvar FormatService = function FormatService(intlService) {\n    this._intlService = intlService;\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n    return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n    this._intlService = value;\n};\n\nFormatService.prototype.auto = function auto (formatString) {\n        var values = [], len = arguments.length - 1;\n        while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var intl = this.intl;\n\n    if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n        return intl.format.apply(intl, [ formatString ].concat( values ));\n    }\n\n    return intl.toString(values[0], formatString);\n};\n\nFormatService.prototype.localeAuto = function localeAuto (formatString, values, locale) {\n    var intl = this.intl;\n    var result;\n\n    if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n        result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n            var value = values[parseInt(index, 10)];\n\n            return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n        });\n    } else {\n        result = intl.toString(values[0], formatString, locale);\n    }\n\n    return result;\n};\n\nObject.defineProperties( FormatService.prototype, prototypeAccessors );\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nvar ChartService = function ChartService(chart, context) {\n    if ( context === void 0 ) context = {};\n\n    this._intlService = context.intlService;\n    this.sender = context.sender || chart;\n    this.format = new FormatService(context.intlService);\n    this.chart = chart;\n    this.rtl = Boolean(context.rtl);\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n    return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n    this._intlService = value;\n    this.format.intl = value;\n};\n\nChartService.prototype.notify = function notify (name, args) {\n    if (this.chart) {\n        this.chart.trigger(name, args);\n    }\n};\n\nChartService.prototype.isPannable = function isPannable (axis) {\n    var pannable = ((this.chart || {}).options || {}).pannable;\n    return pannable && pannable.lock !== axis;\n};\n\nObject.defineProperties( ChartService.prototype, prototypeAccessors );\n\nexport default ChartService;","var current;\n\nvar DomEventsBuilder = function DomEventsBuilder () {};\n\nDomEventsBuilder.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nDomEventsBuilder.create = function create (element, events) {\n    if (current) {\n        return current.create(element, events);\n    }\n};\n\nexport default DomEventsBuilder;\n","var current = {\n    compile: function(template) {\n        return template;\n    }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n    current = userImplementation;\n};\n\nTemplateService.compile = function compile (template) {\n    return current.compile(template);\n};\n\nexport default TemplateService;\n","import { TemplateService } from '../services';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n    if ( options === void 0 ) options = {};\n\n    var template;\n    if (options.template) {\n        options.template = template = TemplateService.compile(options.template);\n    } else if (isFunction(options.content)) {\n        template = options.content;\n    }\n\n    return template;\n}","import { drawing } from '@progress/kendo-drawing';\n\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n    return obj;\n};\n\nexport default function getter(field) {\n    if (getterCache[field]) {\n        return getterCache[field];\n    }\n\n    var fields = [];\n    field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n        fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n    });\n\n    getterCache[field] = function(obj) {\n        var result = obj;\n        for (var idx = 0; idx < fields.length && result; idx++) {\n            result = result[fields[idx]];\n        }\n\n        return result;\n    };\n\n    return getterCache[field];\n}","export default function grep(array, callback) {\n    var length = array.length;\n    var result = [];\n    for (var idx = 0; idx < length; idx++) {\n        if (callback(array[idx])) {\n            result .push(array[idx]);\n        }\n    }\n\n    return result;\n}","export default function hasClasses(element, classNames) {\n    if (element.className) {\n        var names = classNames.split(\" \");\n        for (var idx = 0; idx < names.length; idx++) {\n            if (element.className.indexOf(names[idx]) !== -1) {\n                return true;\n            }\n        }\n    }\n}","\nvar HashMap = function HashMap() {\n    this._map = {};\n};\n\nHashMap.prototype.get = function get (name) {\n    return this._map[this._key(name)];\n};\n\nHashMap.prototype.set = function set (name, value) {\n    this._map[this._key(name)] = value;\n};\n\nHashMap.prototype._key = function _key (name) {\n    return name instanceof Date ? name.getTime() : name;\n};\n\nexport default HashMap;","export default function inArray(value, array) {\n    if (array) {\n        return array.indexOf(value) !== -1;\n    }\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n    return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nvar TRIGGER = 'trigger';\n\nvar InstanceObserver = function InstanceObserver(observer, handlers) {\n    this.observer = observer;\n    this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n};\n\nInstanceObserver.prototype.trigger = function trigger (name, args) {\n    var ref = this;\n        var observer = ref.observer;\n        var handlerMap = ref.handlerMap;\n    var isDefaultPrevented;\n    if (handlerMap[name]) {\n        isDefaultPrevented = this.callObserver(handlerMap[name], args);\n    } else if (observer[TRIGGER]) {\n        isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n    }\n\n    return isDefaultPrevented;\n};\n\nInstanceObserver.prototype.callObserver = function callObserver (fnName) {\n        var args = [], len = arguments.length - 1;\n        while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n    return this.observer[fnName].apply(this.observer, args);\n};\n\nInstanceObserver.prototype.requiresHandlers = function requiresHandlers (names) {\n        var this$1 = this;\n\n    if (this.observer.requiresHandlers) {\n        return this.observer.requiresHandlers(names);\n    }\n\n    for (var idx = 0; idx < names.length; idx++) {\n        if (this$1.handlerMap[names[idx]]) {\n            return true;\n        }\n    }\n};\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n    var length = array.length;\n    var result = [];\n    for (var idx = 0; idx < length; idx++) {\n        var value = callback(array[idx]);\n        if (drawing.util.defined(value)) {\n            result.push(value);\n        }\n    }\n    return result;\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function mousewheelDelta(e) {\n    var delta = 0;\n\n    if (e.wheelDelta) {\n        delta = -e.wheelDelta / 120;\n        delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n    }\n\n    if (e.detail) {\n        delta = drawing.util.round(e.detail / 3);\n    }\n\n    return delta;\n}","import { drawing, Class, logToConsole } from '@progress/kendo-drawing';\n\nvar ref = drawing.util;\nvar append = ref.append;\nvar bindEvents = ref.bindEvents;\nvar defined = ref.defined;\nvar deg = ref.deg;\nvar elementOffset = ref.elementOffset;\nvar elementSize = ref.elementSize;\nvar eventElement = ref.eventElement;\nvar eventCoordinates = ref.eventCoordinates;\nvar last = ref.last;\nvar limitValue = ref.limitValue;\nvar objectKey = ref.objectKey;\nvar rad = ref.rad;\nvar round = ref.round;\nvar unbindEvents = ref.unbindEvents;\nvar valueOrDefault = ref.valueOrDefault;\n\nexport { append, bindEvents, Class, defined, deg, elementOffset, elementSize, eventElement, eventCoordinates, last, limitValue, logToConsole, objectKey, rad, round, unbindEvents, valueOrDefault };","import { logToConsole } from '../drawing-utils';\n\nvar FontLoader = function FontLoader () {};\n\nFontLoader.fetchFonts = function fetchFonts (options, fonts, state) {\n        if ( state === void 0 ) state = { depth: 0 };\n\n    var MAX_DEPTH = 5;\n\n    if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n        return;\n    }\n\n    Object.keys(options).forEach(function(key) {\n        var value = options[key];\n        if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n            return;\n        }\n\n        if (key === \"font\") {\n            fonts.push(value);\n        } else if (typeof value === \"object\") {\n            state.depth++;\n            FontLoader.fetchFonts(value, fonts, state);\n            state.depth--;\n        }\n    });\n};\n\nFontLoader.loadFonts = function loadFonts (fonts, callback) {\n    var promises = [];\n\n    if (fonts.length > 0 && document.fonts) {\n        try {\n            promises = fonts.map(function(font) {\n                return document.fonts.load(font);\n            });\n        } catch (e) {\n            // Silence font-loading errors\n            logToConsole(e);\n        }\n\n        Promise.all(promises).then(callback, callback);\n    } else {\n        callback();\n    }\n};\n\nFontLoader.preloadFonts = function preloadFonts (options, callback) {\n    var fonts = [];\n    FontLoader.fetchFonts(options, fonts);\n\n    FontLoader.loadFonts(fonts, callback);\n};\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n    var proto = type.prototype;\n    if (proto.options) {\n        proto.options = deepExtend({}, proto.options, options);\n    } else {\n        proto.options = options;\n    }\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n    var min = MAX_VALUE;\n    var max = MIN_VALUE;\n\n    for (var idx = 0, length = arr.length; idx < length; idx++) {\n        var value = arr[idx];\n        if (value !== null && isFinite(value)) {\n            min = Math.min(min, value);\n            max = Math.max(max, value);\n        }\n    }\n\n    return {\n        min: min === MAX_VALUE ? undefined : min,\n        max: max === MIN_VALUE ? undefined : max\n    };\n}","export default function find(array, predicate) {\n    for (var i = 0; i < array.length; i++) {\n        var item = array[i];\n        if (predicate(item, i, array)) {\n            return item;\n        }\n    }\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n    var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n    if (diff === 0) {\n        if (max === 0) {\n            return 0.1;\n        }\n\n        diff = Math.abs(max);\n    }\n\n    var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n    var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n    var scaleMultiplier = 1;\n\n    if (relativeValue < 1.904762) {\n        scaleMultiplier = 0.2;\n    } else if (relativeValue < 4.761904) {\n        scaleMultiplier = 0.5;\n    } else if (relativeValue < 9.523809) {\n        scaleMultiplier = 1;\n    } else {\n        scaleMultiplier = 2;\n    }\n\n    return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nvar Point = (function (Class) {\n    function Point(x, y) {\n        Class.call(this);\n\n        this.x = x || 0;\n        this.y = y || 0;\n    }\n\n    if ( Class ) Point.__proto__ = Class;\n    Point.prototype = Object.create( Class && Class.prototype );\n    Point.prototype.constructor = Point;\n\n    Point.prototype.clone = function clone () {\n        return new Point(this.x, this.y);\n    };\n\n    Point.prototype.equals = function equals (point) {\n        return point && this.x === point.x && this.y === point.y;\n    };\n\n    Point.prototype.rotate = function rotate (center, degrees) {\n        var theta = rad(degrees);\n        var cosT = Math.cos(theta);\n        var sinT = Math.sin(theta);\n        var cx = center.x;\n        var cy = center.y;\n        var ref = this;\n        var x = ref.x;\n        var y = ref.y;\n\n        this.x = round(\n            cx + (x - cx) * cosT + (y - cy) * sinT,\n            COORD_PRECISION\n        );\n\n        this.y = round(\n            cy + (y - cy) * cosT - (x - cx) * sinT,\n            COORD_PRECISION\n        );\n\n        return this;\n    };\n\n    Point.prototype.multiply = function multiply (a) {\n\n        this.x *= a;\n        this.y *= a;\n\n        return this;\n    };\n\n    Point.prototype.distanceTo = function distanceTo (point) {\n        var dx = this.x - point.x;\n        var dy = this.y - point.y;\n\n        return Math.sqrt(dx * dx + dy * dy);\n    };\n\n    Point.onCircle = function onCircle (center, angle, radius) {\n        var radians = rad(angle);\n\n        return new Point(\n            center.x - radius * Math.cos(radians),\n            center.y - radius * Math.sin(radians)\n        );\n    };\n\n    return Point;\n}(Class));\n\n\nexport default Point;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nvar Box = (function (Class) {\n    function Box(x1, y1, x2, y2) {\n        Class.call(this);\n\n        this.x1 = x1 || 0;\n        this.y1 = y1 || 0;\n        this.x2 = x2 || 0;\n        this.y2 = y2 || 0;\n    }\n\n    if ( Class ) Box.__proto__ = Class;\n    Box.prototype = Object.create( Class && Class.prototype );\n    Box.prototype.constructor = Box;\n\n    Box.prototype.equals = function equals (box) {\n        return this.x1 === box.x1 && this.x2 === box.x2 &&\n            this.y1 === box.y1 && this.y2 === box.y2;\n    };\n\n    Box.prototype.width = function width () {\n        return this.x2 - this.x1;\n    };\n\n    Box.prototype.height = function height () {\n        return this.y2 - this.y1;\n    };\n\n    Box.prototype.translate = function translate (dx, dy) {\n        this.x1 += dx;\n        this.x2 += dx;\n        this.y1 += dy;\n        this.y2 += dy;\n\n        return this;\n    };\n\n    Box.prototype.move = function move (x, y) {\n        var height = this.height();\n        var width = this.width();\n\n        if (defined(x)) {\n            this.x1 = x;\n            this.x2 = this.x1 + width;\n        }\n\n        if (defined(y)) {\n            this.y1 = y;\n            this.y2 = this.y1 + height;\n        }\n\n        return this;\n    };\n\n    Box.prototype.wrap = function wrap (targetBox) {\n        this.x1 = Math.min(this.x1, targetBox.x1);\n        this.y1 = Math.min(this.y1, targetBox.y1);\n        this.x2 = Math.max(this.x2, targetBox.x2);\n        this.y2 = Math.max(this.y2, targetBox.y2);\n\n        return this;\n    };\n\n    Box.prototype.wrapPoint = function wrapPoint (point) {\n        var arrayPoint = isArray(point);\n        var x = arrayPoint ? point[0] : point.x;\n        var y = arrayPoint ? point[1] : point.y;\n        this.wrap(new Box(x, y, x, y));\n\n        return this;\n    };\n\n    Box.prototype.snapTo = function snapTo (targetBox, axis) {\n\n        if (axis === X || !axis) {\n            this.x1 = targetBox.x1;\n            this.x2 = targetBox.x2;\n        }\n\n        if (axis === Y || !axis) {\n            this.y1 = targetBox.y1;\n            this.y2 = targetBox.y2;\n        }\n\n        return this;\n    };\n\n    Box.prototype.alignTo = function alignTo (targetBox, anchor) {\n        var height = this.height();\n        var width = this.width();\n        var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n        var offset = axis === Y ? height : width;\n\n        if (anchor === CENTER) {\n            var targetCenter = targetBox.center();\n            var center = this.center();\n\n            this.x1 += targetCenter.x - center.x;\n            this.y1 += targetCenter.y - center.y;\n        } else if (anchor === TOP || anchor === LEFT) {\n            this[axis + 1] = targetBox[axis + 1] - offset;\n        } else {\n            this[axis + 1] = targetBox[axis + 2];\n        }\n\n        this.x2 = this.x1 + width;\n        this.y2 = this.y1 + height;\n\n        return this;\n    };\n\n    Box.prototype.shrink = function shrink (dw, dh) {\n\n        this.x2 -= dw;\n        this.y2 -= dh;\n\n        return this;\n    };\n\n    Box.prototype.expand = function expand (dw, dh) {\n        this.shrink(-dw, -dh);\n        return this;\n    };\n\n    Box.prototype.pad = function pad (padding) {\n        var spacing = getSpacing(padding);\n\n        this.x1 -= spacing.left;\n        this.x2 += spacing.right;\n        this.y1 -= spacing.top;\n        this.y2 += spacing.bottom;\n\n        return this;\n    };\n\n    Box.prototype.unpad = function unpad (padding) {\n        var spacing = getSpacing(padding);\n\n        spacing.left = -spacing.left;\n        spacing.top = -spacing.top;\n        spacing.right = -spacing.right;\n        spacing.bottom = -spacing.bottom;\n\n        return this.pad(spacing);\n    };\n\n    Box.prototype.clone = function clone () {\n        return new Box(this.x1, this.y1, this.x2, this.y2);\n    };\n\n    Box.prototype.center = function center () {\n        return new Point(\n            this.x1 + this.width() / 2,\n            this.y1 + this.height() / 2\n        );\n    };\n\n    Box.prototype.containsPoint = function containsPoint (point) {\n\n        return point.x >= this.x1 && point.x <= this.x2 &&\n               point.y >= this.y1 && point.y <= this.y2;\n    };\n\n    Box.prototype.points = function points () {\n        return [\n            new Point(this.x1, this.y1),\n            new Point(this.x2, this.y1),\n            new Point(this.x2, this.y2),\n            new Point(this.x1, this.y2)\n        ];\n    };\n\n    Box.prototype.getHash = function getHash () {\n        return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n    };\n\n    Box.prototype.overlaps = function overlaps (box) {\n        return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n    };\n\n    Box.prototype.rotate = function rotate (rotation) {\n        var width = this.width();\n        var height = this.height();\n        var ref = this.center();\n        var cx = ref.x;\n        var cy = ref.y;\n\n        var r1 = rotatePoint(0, 0, cx, cy, rotation);\n        var r2 = rotatePoint(width, 0, cx, cy, rotation);\n        var r3 = rotatePoint(width, height, cx, cy, rotation);\n        var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n        width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n        height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n        this.x2 = this.x1 + width;\n        this.y2 = this.y1 + height;\n\n        return this;\n    };\n\n    Box.prototype.toRect = function toRect () {\n        return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n    };\n\n    Box.prototype.hasSize = function hasSize () {\n        return this.width() !== 0 && this.height() !== 0;\n    };\n\n    Box.prototype.align = function align (targetBox, axis, alignment) {\n        var c1 = axis + 1;\n        var c2 = axis + 2;\n        var sizeFunc = axis === X ? WIDTH : HEIGHT;\n        var size = this[sizeFunc]();\n\n        if (inArray(alignment, [ LEFT, TOP ])) {\n            this[c1] = targetBox[c1];\n            this[c2] = this[c1] + size;\n        } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n            this[c2] = targetBox[c2];\n            this[c1] = this[c2] - size;\n        } else if (alignment === CENTER) {\n            this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n            this[c2] = this[c1] + size;\n        }\n    };\n\n    return Box;\n}(Class));\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n    var theta = rad(angle);\n\n    return new Point(\n        cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n        cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n    );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nvar Ring = (function (Class) {\n    function Ring(center, innerRadius, radius, startAngle, angle) {\n        Class.call(this);\n\n        this.center = center;\n        this.innerRadius = innerRadius;\n        this.radius = radius;\n        this.startAngle = startAngle;\n        this.angle = angle;\n    }\n\n    if ( Class ) Ring.__proto__ = Class;\n    Ring.prototype = Object.create( Class && Class.prototype );\n    Ring.prototype.constructor = Ring;\n\n    Ring.prototype.clone = function clone () {\n        return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n    };\n\n    Ring.prototype.middle = function middle () {\n        return this.startAngle + this.angle / 2;\n    };\n\n    Ring.prototype.setRadius = function setRadius (newRadius, innerRadius) {\n        if (innerRadius) {\n            this.innerRadius = newRadius;\n        } else {\n            this.radius = newRadius;\n        }\n\n        return this;\n    };\n\n    // TODO: Remove and replace with Point.onCircle\n    Ring.prototype.point = function point (angle, innerRadius) {\n        var radianAngle = rad(angle);\n        var ax = Math.cos(radianAngle);\n        var ay = Math.sin(radianAngle);\n        var radius = innerRadius ? this.innerRadius : this.radius;\n        var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n        var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n        return new Point(x, y);\n    };\n\n    Ring.prototype.adjacentBox = function adjacentBox (distance, width, height) {\n        var sector = this.clone().expand(distance);\n        var midAndle = sector.middle();\n        var midPoint = sector.point(midAndle);\n        var hw = width / 2;\n        var hh = height / 2;\n        var sa = Math.sin(rad(midAndle));\n        var ca = Math.cos(rad(midAndle));\n        var x = midPoint.x - hw;\n        var y = midPoint.y - hh;\n\n        if (Math.abs(sa) < 0.9) {\n            x += hw * -ca / Math.abs(ca);\n        }\n\n        if (Math.abs(ca) < 0.9) {\n            y += hh * -sa / Math.abs(sa);\n        }\n\n        return new Box(x, y, x + width, y + height);\n    };\n\n    Ring.prototype.containsPoint = function containsPoint (p) {\n        var center = this.center;\n        var innerRadius = this.innerRadius;\n        var radius = this.radius;\n        var startAngle = this.startAngle;\n        var endAngle = this.startAngle + this.angle;\n        var dx = p.x - center.x;\n        var dy = p.y - center.y;\n        var vector = new Point(dx, dy);\n        var startPoint = this.point(startAngle);\n        var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n        var endPoint = this.point(endAngle);\n        var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n        var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n        return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n               !clockwise(endVector, vector) &&\n               dist >= innerRadius * innerRadius && dist <= radius * radius;\n    };\n\n    Ring.prototype.getBBox = function getBBox () {\n        var this$1 = this;\n\n        var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n        var startAngle = round(this.startAngle % 360);\n        var endAngle = round((startAngle + this.angle) % 360);\n        var innerRadius = this.innerRadius;\n        var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n        var startAngleIndex = allAngles.indexOf(startAngle);\n        var endAngleIndex = allAngles.indexOf(endAngle);\n        var angles;\n\n        if (startAngle === endAngle) {\n            angles = allAngles;\n        } else {\n            if (startAngleIndex < endAngleIndex) {\n                angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n            } else {\n                angles = [].concat(\n                    allAngles.slice(0, endAngleIndex + 1),\n                    allAngles.slice(startAngleIndex, allAngles.length)\n                );\n            }\n        }\n\n        for (var i = 0; i < angles.length; i++) {\n            var point = this$1.point(angles[i]);\n            box.wrapPoint(point);\n            box.wrapPoint(point, innerRadius);\n        }\n\n        if (!innerRadius) {\n            box.wrapPoint(this.center);\n        }\n\n        return box;\n    };\n\n    Ring.prototype.expand = function expand (value) {\n        this.radius += value;\n        return this;\n    };\n\n    return Ring;\n}(Class));\n\nfunction numericComparer(a, b) {\n    return a - b;\n}\n\nexport default Ring;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nvar DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nvar ShapeBuilder = (function (Class) {\n    function ShapeBuilder () {\n        Class.apply(this, arguments);\n    }\n\n    if ( Class ) ShapeBuilder.__proto__ = Class;\n    ShapeBuilder.prototype = Object.create( Class && Class.prototype );\n    ShapeBuilder.prototype.constructor = ShapeBuilder;\n\n    ShapeBuilder.prototype.createRing = function createRing (sector, options) {\n        var startAngle = sector.startAngle + 180;\n        var endAngle = sector.angle + startAngle;\n\n        //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n        if (sector.angle > 0 && startAngle === endAngle) {\n            endAngle += DIRECTION_ANGLE;\n        }\n\n        var center = new geom.Point(sector.center.x, sector.center.y);\n        var radius = Math.max(sector.radius, 0);\n        var innerRadius = Math.max(sector.innerRadius, 0);\n        var arc = new geom.Arc(center, {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: radius,\n            radiusY: radius\n        });\n        var path = draw.Path.fromArc(arc, options).close();\n\n        if (innerRadius) {\n            arc.radiusX = arc.radiusY = innerRadius;\n            var innerEnd = arc.pointAt(endAngle);\n            path.lineTo(innerEnd.x, innerEnd.y);\n            path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n        } else {\n            path.lineTo(center.x, center.y);\n        }\n\n        return path;\n    };\n\n    return ShapeBuilder;\n}(Class));\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import Ring from './ring';\n\nvar Sector = (function (Ring) {\n    function Sector(center, radius, startAngle, angle) {\n        Ring.call(this, center, 0, radius, startAngle, angle);\n    }\n\n    if ( Ring ) Sector.__proto__ = Ring;\n    Sector.prototype = Object.create( Ring && Ring.prototype );\n    Sector.prototype.constructor = Sector;\n\n    Sector.prototype.expand = function expand (value) {\n        return Ring.prototype.expand.call(this, value);\n    };\n\n    Sector.prototype.clone = function clone () {\n        return new Sector(this.center, this.radius, this.startAngle, this.angle);\n    };\n\n    Sector.prototype.setRadius = function setRadius (newRadius) {\n        this.radius = newRadius;\n\n        return this;\n    };\n\n    return Sector;\n}(Ring));\n\nexport default Sector;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nvar ChartElement = (function (Class) {\n    function ChartElement(options) {\n        Class.call(this);\n\n        this.children = [];\n\n        this.options = deepExtend({}, this.options, this.initUserOptions(options));\n    }\n\n    if ( Class ) ChartElement.__proto__ = Class;\n    ChartElement.prototype = Object.create( Class && Class.prototype );\n    ChartElement.prototype.constructor = ChartElement;\n\n    ChartElement.prototype.initUserOptions = function initUserOptions (options) {\n        return options;\n    };\n\n    ChartElement.prototype.reflow = function reflow (targetBox) {\n        var children = this.children;\n        var box;\n\n        for (var i = 0; i < children.length; i++) {\n            var currentChild = children[i];\n            currentChild.reflow(targetBox);\n\n            box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n        }\n\n        this.box = box || targetBox;\n    };\n\n    ChartElement.prototype.destroy = function destroy () {\n        var children = this.children;\n\n        if (this.animation) {\n            this.animation.destroy();\n        }\n\n        for (var i = 0; i < children.length; i++) {\n            children[i].destroy();\n        }\n    };\n\n    ChartElement.prototype.getRoot = function getRoot () {\n        var parent = this.parent;\n\n        return parent ? parent.getRoot() : null;\n    };\n\n    ChartElement.prototype.getSender = function getSender () {\n        var service = this.getService();\n        if (service) {\n            return service.sender;\n        }\n    };\n\n    ChartElement.prototype.getService = function getService () {\n        var element = this;\n        while (element) {\n            if (element.chartService) {\n                return element.chartService;\n            }\n            element = element.parent;\n        }\n    };\n\n    ChartElement.prototype.translateChildren = function translateChildren (dx, dy) {\n        var children = this.children;\n        var childrenCount = children.length;\n\n        for (var i = 0; i < childrenCount; i++) {\n            children[i].box.translate(dx, dy);\n        }\n    };\n\n    ChartElement.prototype.append = function append () {\n        var arguments$1 = arguments;\n        var this$1 = this;\n\n        for (var i = 0; i < arguments.length; i++) {\n            var item = arguments$1[i];\n            this$1.children.push(item);\n            item.parent = this$1;\n        }\n    };\n\n    ChartElement.prototype.renderVisual = function renderVisual () {\n        if (this.options.visible === false) {\n            return;\n        }\n\n        this.createVisual();\n\n        this.addVisual();\n\n        this.renderChildren();\n\n        this.createAnimation();\n        this.renderComplete();\n    };\n\n    ChartElement.prototype.addVisual = function addVisual () {\n        if (this.visual) {\n            this.visual.chartElement = this;\n\n            if (this.parent) {\n                this.parent.appendVisual(this.visual);\n            }\n        }\n    };\n\n    ChartElement.prototype.renderChildren = function renderChildren () {\n        var children = this.children;\n        var length = children.length;\n        for (var i = 0; i < length; i++) {\n            children[i].renderVisual();\n        }\n    };\n\n    ChartElement.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group({\n            zIndex: this.options.zIndex,\n            visible: valueOrDefault(this.options.visible, true)\n        });\n    };\n\n    ChartElement.prototype.createAnimation = function createAnimation () {\n        if (this.visual && this.options.animation) {\n            this.animation = draw.Animation.create(\n                this.visual, this.options.animation\n            );\n        }\n    };\n\n    ChartElement.prototype.appendVisual = function appendVisual (childVisual) {\n        if (!childVisual.chartElement) {\n            childVisual.chartElement = this;\n        }\n\n        if (childVisual.options.noclip) {\n            this.clipRoot().visual.append(childVisual);\n        } else if (defined(childVisual.options.zIndex)) {\n            this.stackRoot().stackVisual(childVisual);\n        } else if (this.isStackRoot) {\n            this.stackVisual(childVisual);\n        } else if (this.visual) {\n            this.visual.append(childVisual);\n        } else {\n            // Allow chart elements without visuals to\n            // pass through child visuals\n            this.parent.appendVisual(childVisual);\n        }\n    };\n\n    ChartElement.prototype.clipRoot = function clipRoot () {\n        if (this.parent) {\n            return this.parent.clipRoot();\n        }\n\n        return this;\n    };\n\n    ChartElement.prototype.stackRoot = function stackRoot () {\n        if (this.parent) {\n            return this.parent.stackRoot();\n        }\n\n        return this;\n    };\n\n    ChartElement.prototype.stackVisual = function stackVisual (childVisual) {\n        var zIndex = childVisual.options.zIndex || 0;\n        var visuals = this.visual.children;\n        var length = visuals.length;\n        var pos;\n\n        for (pos = 0; pos < length; pos++) {\n            var sibling = visuals[pos];\n            var here = valueOrDefault(sibling.options.zIndex, 0);\n            if (here > zIndex) {\n                break;\n            }\n        }\n\n        this.visual.insert(pos, childVisual);\n    };\n\n    ChartElement.prototype.traverse = function traverse (callback) {\n        var children = this.children;\n        var length = children.length;\n\n        for (var i = 0; i < length; i++) {\n            var child = children[i];\n\n            callback(child);\n            if (child.traverse) {\n                child.traverse(callback);\n            }\n        }\n    };\n\n    ChartElement.prototype.closest = function closest (match) {\n        var element = this;\n        var matched = false;\n\n        while (element && !matched) {\n            matched = match(element);\n\n            if (!matched) {\n                element = element.parent;\n            }\n        }\n\n        if (matched) {\n            return element;\n        }\n    };\n\n    ChartElement.prototype.renderComplete = function renderComplete () {};\n\n    ChartElement.prototype.hasHighlight = function hasHighlight () {\n        var options = (this.options || {}).highlight;\n        return !(!this.createHighlight || (options && options.visible === false));\n    };\n\n    ChartElement.prototype.toggleHighlight = function toggleHighlight (show) {\n        var this$1 = this;\n\n        var options = (this.options || {}).highlight || {};\n        var customVisual = options.visual;\n        var highlight = this._highlight;\n\n        if (!highlight) {\n            var highlightOptions = {\n                fill: {\n                    color: WHITE,\n                    opacity: 0.2\n                },\n                stroke: {\n                    color: WHITE,\n                    width: 1,\n                    opacity: 0.2\n                }\n            };\n\n            if (customVisual) {\n                highlight = this._highlight = customVisual(\n                    Object.assign(this.highlightVisualArgs(), {\n                        createVisual: function () { return this$1.createHighlight(highlightOptions); },\n                        sender: this.getSender(),\n                        series: this.series,\n                        dataItem: this.dataItem,\n                        category: this.category,\n                        value: this.value,\n                        percentage: this.percentage,\n                        runningTotal: this.runningTotal,\n                        total: this.total\n                    }\n                ));\n\n                if (!highlight) {\n                    return;\n                }\n            } else {\n                highlight = this._highlight = this.createHighlight(highlightOptions);\n            }\n\n            if (!defined(highlight.options.zIndex)) {\n                highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n            }\n\n            this.appendVisual(highlight);\n        }\n\n        highlight.visible(show);\n    };\n\n    ChartElement.prototype.createGradientOverlay = function createGradientOverlay (element, options, gradientOptions) {\n        var overlay = new draw.Path(Object.assign({\n            stroke: {\n                color: \"none\"\n            },\n            fill: this.createGradient(gradientOptions),\n            closed: element.options.closed\n        }, options));\n\n        overlay.segments.elements(element.segments.elements());\n\n        return overlay;\n    };\n\n    ChartElement.prototype.createGradient = function createGradient (options) {\n        if (this.parent) {\n            return this.parent.createGradient(options);\n        }\n    };\n\n    return ChartElement;\n}(Class));\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nvar BoxElement = (function (ChartElement) {\n    function BoxElement(options) {\n        ChartElement.call(this, options);\n\n        this.options.margin = getSpacing(this.options.margin);\n        this.options.padding = getSpacing(this.options.padding);\n    }\n\n    if ( ChartElement ) BoxElement.__proto__ = ChartElement;\n    BoxElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    BoxElement.prototype.constructor = BoxElement;\n\n    BoxElement.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var options = this.options;\n        var width = options.width;\n        var height = options.height;\n        var shrinkToFit = options.shrinkToFit;\n        var hasSetSize = width && height;\n        var margin = options.margin;\n        var padding = options.padding;\n        var borderWidth = options.border.width;\n        var box;\n\n        var reflowPaddingBox = function () {\n            this$1.align(targetBox, X, options.align);\n            this$1.align(targetBox, Y, options.vAlign);\n            this$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n        };\n\n        var contentBox = targetBox.clone();\n        if (hasSetSize) {\n            contentBox.x2 = contentBox.x1 + width;\n            contentBox.y2 = contentBox.y1 + height;\n        }\n\n        if (shrinkToFit) {\n            contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n        }\n\n        ChartElement.prototype.reflow.call(this, contentBox);\n\n        if (hasSetSize) {\n            box = this.box = new Box(0, 0, width, height);\n        } else {\n            box = this.box;\n        }\n\n        if (shrinkToFit && hasSetSize) {\n            reflowPaddingBox();\n            contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n        } else {\n            contentBox = this.contentBox = box.clone();\n            box.pad(padding).pad(borderWidth).pad(margin);\n            reflowPaddingBox();\n        }\n\n        this.translateChildren(\n            box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n            box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n        );\n\n        var children = this.children;\n        for (var i = 0; i < children.length; i++) {\n            var item = children[i];\n            item.reflow(item.box);\n        }\n    };\n\n    BoxElement.prototype.align = function align (targetBox, axis, alignment) {\n        this.box.align(targetBox, axis, alignment);\n    };\n\n    BoxElement.prototype.hasBox = function hasBox () {\n        var options = this.options;\n        return options.border.width || options.background;\n    };\n\n    BoxElement.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        if (options.visible && this.hasBox()) {\n            this.visual.append(draw.Path.fromRect(\n                this.paddingBox.toRect(),\n                this.visualStyle()\n            ));\n        }\n    };\n\n    BoxElement.prototype.visualStyle = function visualStyle () {\n        var options = this.options;\n        var border = options.border || {};\n\n        return {\n            stroke: {\n                width: border.width,\n                color: border.color,\n                opacity: valueOrDefault(border.opacity, options.opacity),\n                dashType: border.dashType\n            },\n            fill: {\n                color: options.background,\n                opacity: options.opacity\n            },\n            cursor: options.cursor\n        };\n    };\n\n    return BoxElement;\n}(ChartElement));\n\nsetDefaultOptions(BoxElement, {\n    align: LEFT,\n    vAlign: TOP,\n    margin: {},\n    padding: {},\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    background: \"\",\n    shrinkToFit: false,\n    width: 0,\n    height: 0,\n    visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\n\nimport { CIRCLE, TRIANGLE, CROSS, CENTER, COORD_PRECISION } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar ShapeElement = (function (BoxElement) {\n    function ShapeElement(options, pointData) {\n        BoxElement.call(this, options);\n\n        this.pointData = pointData;\n    }\n\n    if ( BoxElement ) ShapeElement.__proto__ = BoxElement;\n    ShapeElement.prototype = Object.create( BoxElement && BoxElement.prototype );\n    ShapeElement.prototype.constructor = ShapeElement;\n\n    ShapeElement.prototype.getElement = function getElement () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.paddingBox;\n        var type = options.type;\n        var rotation = options.rotation;\n        var center = box.center();\n        var halfWidth = box.width() / 2;\n\n        if (!options.visible || !this.hasBox()) {\n            return null;\n        }\n\n        var style = this.visualStyle();\n        var element;\n\n        if (type === CIRCLE) {\n            element = new draw.Circle(\n                new geom.Circle([\n                    round(box.x1 + halfWidth, COORD_PRECISION),\n                    round(box.y1 + box.height() / 2, COORD_PRECISION)\n                ], halfWidth),\n                style\n            );\n        } else if (type === TRIANGLE) {\n            element = draw.Path.fromPoints([\n                [ box.x1 + halfWidth, box.y1 ],\n                [ box.x1, box.y2 ],\n                [ box.x2, box.y2 ]\n            ], style).close();\n        } else if (type === CROSS) {\n            element = new draw.MultiPath(style);\n\n            element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n            element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n        } else {\n            element = draw.Path.fromRect(box.toRect(), style);\n        }\n\n        if (rotation) {\n            element.transform(geom.transform()\n                .rotate(-rotation, [ center.x, center.y ])\n            );\n        }\n\n        element.options.zIndex = options.zIndex;\n        return element;\n    };\n\n    ShapeElement.prototype.createElement = function createElement () {\n        var this$1 = this;\n\n        var customVisual = this.options.visual;\n        var pointData = this.pointData || {};\n        var visual;\n\n        if (customVisual) {\n            visual = customVisual({\n                value: pointData.value,\n                dataItem: pointData.dataItem,\n                sender: this.getSender(),\n                series: pointData.series,\n                category: pointData.category,\n                rect: this.paddingBox.toRect(),\n                options: this.visualOptions(),\n                createVisual: function () { return this$1.getElement(); }\n            });\n        } else {\n            visual = this.getElement();\n        }\n\n        return visual;\n    };\n\n    ShapeElement.prototype.visualOptions = function visualOptions () {\n        var options = this.options;\n        return {\n            background: options.background,\n            border: options.border,\n            margin: options.margin,\n            padding: options.padding,\n            type: options.type,\n            size: options.width,\n            visible: options.visible\n        };\n    };\n\n    ShapeElement.prototype.createVisual = function createVisual () {\n        this.visual = this.createElement();\n    };\n\n    return ShapeElement;\n}(BoxElement));\n\nsetDefaultOptions(ShapeElement, {\n    type: CIRCLE,\n    align: CENTER,\n    vAlign: CENTER\n});\n\nexport default ShapeElement;","import { WHITE } from '../common/constants';\n\nvar LINEAR = \"linear\";\nvar RADIAL = \"radial\";\n\nvar GRADIENTS = {\n    glass: {\n        type: LINEAR,\n        rotation: 0,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.25,\n            color: WHITE,\n            opacity: 0.3\n        }, {\n            offset: 1,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    sharpBevel: {\n        type: RADIAL,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0.55\n        }, {\n            offset: 0.65,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.95,\n            color: WHITE,\n            opacity: 0.25\n        } ]\n    },\n    roundedBevel: {\n        type: RADIAL,\n        stops: [ {\n            offset: 0.33,\n            color: WHITE,\n            opacity: 0.06\n        }, {\n            offset: 0.83,\n            color: WHITE,\n            opacity: 0.2\n        }, {\n            offset: 0.95,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    roundedGlass: {\n        type: RADIAL,\n        supportVML: false,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0\n        }, {\n            offset: 0.5,\n            color: WHITE,\n            opacity: 0.3\n        }, {\n            offset: 0.99,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    sharpGlass: {\n        type: RADIAL,\n        supportVML: false,\n        stops: [ {\n            offset: 0,\n            color: WHITE,\n            opacity: 0.2\n        }, {\n            offset: 0.15,\n            color: WHITE,\n            opacity: 0.15\n        }, {\n            offset: 0.17,\n            color: WHITE,\n            opacity: 0.35\n        }, {\n            offset: 0.85,\n            color: WHITE,\n            opacity: 0.05\n        }, {\n            offset: 0.87,\n            color: WHITE,\n            opacity: 0.15\n        }, {\n            offset: 0.99,\n            color: WHITE,\n            opacity: 0\n        } ]\n    },\n    bubbleShadow: {\n        type: RADIAL,\n        center: [ 0.5, 0.5 ],\n        radius: 0.5\n    }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n    if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n        return s;\n    }\n\n    var a = Math.min(r.x1, s.x1);\n    var b = Math.max(r.x1, s.x1);\n    var c = Math.min(r.x2, s.x2);\n    var d = Math.max(r.x2, s.x2);\n    var e = Math.min(r.y1, s.y1);\n    var f = Math.max(r.y1, s.y1);\n    var g = Math.min(r.y2, s.y2);\n    var h = Math.max(r.y2, s.y2);\n    var boxes = [];\n\n    // X = intersection, 0-7 = possible difference areas\n    // h +-+-+-+\n    // . |5|6|7|\n    // g +-+-+-+\n    // . |3|X|4|\n    // f +-+-+-+\n    // . |0|1|2|\n    // e +-+-+-+\n    // . a b c d\n\n    // we'll always have rectangles 1, 3, 4 and 6\n    boxes[0] = new Box(b, e, c, f);\n    boxes[1] = new Box(a, f, b, g);\n    boxes[2] = new Box(c, f, d, g);\n    boxes[3] = new Box(b, g, c, h);\n\n    // decide which corners\n    if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n        boxes[4] = new Box(a, e, b, f);\n        boxes[5] = new Box(c, g, d, h);\n    } else { // corners 2 and 5\n        boxes[4] = new Box(c, e, d, f);\n        boxes[5] = new Box(a, g, b, h);\n    }\n\n    return grep(boxes, function(box) {\n        return box.height() > 0 && box.width() > 0;\n    })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nvar RootElement = (function (ChartElement) {\n    function RootElement(options) {\n        ChartElement.call(this, options);\n\n        var rootOptions = this.options;\n        rootOptions.width = parseInt(rootOptions.width, 10);\n        rootOptions.height = parseInt(rootOptions.height, 10);\n\n        this.gradients = {};\n    }\n\n    if ( ChartElement ) RootElement.__proto__ = ChartElement;\n    RootElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RootElement.prototype.constructor = RootElement;\n\n    RootElement.prototype.reflow = function reflow () {\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var currentBox = new Box(0, 0, options.width, options.height);\n\n        this.box = currentBox.unpad(options.margin);\n\n        for (var i = 0; i < children.length; i++) {\n            children[i].reflow(currentBox);\n            currentBox = boxDiff(currentBox, children[i].box) || new Box();\n        }\n    };\n\n    RootElement.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group();\n        this.createBackground();\n    };\n\n    RootElement.prototype.createBackground = function createBackground () {\n        var options = this.options;\n        var border = options.border || {};\n        var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n        var background = draw.Path.fromRect(box.toRect(), {\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            },\n            fill: {\n                color: options.background,\n                opacity: options.opacity\n            },\n            zIndex: -10\n        });\n\n        this.visual.append(background);\n    };\n\n    RootElement.prototype.getRoot = function getRoot () {\n        return this;\n    };\n\n    RootElement.prototype.createGradient = function createGradient (options) {\n        var gradients = this.gradients;\n        var hashCode = objectKey(options);\n        var gradient = GRADIENTS[options.gradient];\n        var drawingGradient;\n\n        if (gradients[hashCode]) {\n            drawingGradient = gradients[hashCode];\n        } else {\n            var gradientOptions = Object.assign({}, gradient, options);\n            if (gradient.type === \"linear\") {\n                drawingGradient = new draw.LinearGradient(gradientOptions);\n            } else {\n                if (options.innerRadius) {\n                    gradientOptions.stops = innerRadialStops(gradientOptions);\n                }\n                drawingGradient = new draw.RadialGradient(gradientOptions);\n                drawingGradient.supportVML = gradient.supportVML !== false;\n            }\n            gradients[hashCode] = drawingGradient;\n        }\n\n        return drawingGradient;\n    };\n\n    RootElement.prototype.cleanGradients = function cleanGradients () {\n        var gradients = this.gradients;\n        for (var hashCode in gradients) {\n            gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n        }\n    };\n\n    RootElement.prototype.size = function size () {\n        var options = this.options;\n        return new Box(0, 0, options.width, options.height);\n    };\n\n    return RootElement;\n}(ChartElement));\n\nsetDefaultOptions(RootElement, {\n    width: DEFAULT_WIDTH,\n    height: DEFAULT_HEIGHT,\n    background: WHITE,\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    margin: getSpacing(5),\n    zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n    var stops = options.stops;\n    var usedSpace = ((options.innerRadius / options.radius) * 100);\n    var length = stops.length;\n    var currentStops = [];\n\n    for (var i = 0; i < length; i++) {\n        var currentStop = Object.assign({}, stops[i]);\n        currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n        currentStops.push(currentStop);\n    }\n\n    return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar FloatElement = (function (ChartElement) {\n    function FloatElement(options) {\n        ChartElement.call(this, options);\n        this._initDirection();\n    }\n\n    if ( ChartElement ) FloatElement.__proto__ = ChartElement;\n    FloatElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FloatElement.prototype.constructor = FloatElement;\n\n    FloatElement.prototype._initDirection = function _initDirection () {\n        var options = this.options;\n        if (options.vertical) {\n            this.groupAxis = X;\n            this.elementAxis = Y;\n            this.groupSizeField = WIDTH;\n            this.elementSizeField = HEIGHT;\n            this.groupSpacing = options.spacing;\n            this.elementSpacing = options.vSpacing;\n        } else {\n            this.groupAxis = Y;\n            this.elementAxis = X;\n            this.groupSizeField = HEIGHT;\n            this.elementSizeField = WIDTH;\n            this.groupSpacing = options.vSpacing;\n            this.elementSpacing = options.spacing;\n        }\n    };\n\n    FloatElement.prototype.reflow = function reflow (targetBox) {\n        this.box = targetBox.clone();\n        this.reflowChildren();\n    };\n\n    FloatElement.prototype.reflowChildren = function reflowChildren () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var elementAxis = ref.elementAxis;\n        var groupAxis = ref.groupAxis;\n        var elementSizeField = ref.elementSizeField;\n        var groupSizeField = ref.groupSizeField;\n        var ref$1 = this.groupOptions();\n        var groups = ref$1.groups;\n        var groupsSize = ref$1.groupsSize;\n        var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n        var groupsCount = groups.length;\n        var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n        if (groupsCount) {\n            var groupStart = groupsStart;\n\n            for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n                var group = groups[groupIdx];\n                var groupElements = group.groupElements;\n                var elementStart = box[elementAxis + 1];\n                var groupElementsCount = groupElements.length;\n\n                for (var idx = 0; idx < groupElementsCount; idx++) {\n                    var element = groupElements[idx];\n                    var elementSize = this$1.elementSize(element);\n                    var groupElementStart = groupStart + this$1.alignStart(elementSize[groupSizeField], group.groupSize);\n\n                    var elementBox = new Box();\n                    elementBox[groupAxis + 1] = groupElementStart;\n                    elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n                    elementBox[elementAxis + 1] = elementStart;\n                    elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n                    element.reflow(elementBox);\n\n                    elementStart += elementSize[elementSizeField] + this$1.elementSpacing;\n                }\n                groupStart += group.groupSize + this$1.groupSpacing;\n            }\n            box[groupAxis + 1] = groupsStart;\n            box[groupAxis + 2] = groupsStart + groupsSize;\n            box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n        }\n    };\n\n    FloatElement.prototype.alignStart = function alignStart (size, maxSize) {\n        var start = 0;\n        var align = this.options.align;\n        if (align === RIGHT || align === BOTTOM) {\n            start = maxSize - size;\n        } else if (align === CENTER) {\n            start = (maxSize - size) / 2;\n        }\n        return start;\n    };\n\n    FloatElement.prototype.groupOptions = function groupOptions () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var children = ref.children;\n        var elementSizeField = ref.elementSizeField;\n        var groupSizeField = ref.groupSizeField;\n        var elementSpacing = ref.elementSpacing;\n        var groupSpacing = ref.groupSpacing;\n        var maxSize = round(box[elementSizeField]());\n        var childrenCount = children.length;\n        var groups = [];\n\n        var groupSize = 0;\n        var groupElementsSize = 0;\n        var groupsSize = 0;\n        var maxGroupElementsSize = 0;\n        var groupElements = [];\n\n        for (var idx = 0; idx < childrenCount; idx++) {\n            var element = children[idx];\n            if (!element.box) {\n                element.reflow(box);\n            }\n\n            var elementSize = this$1.elementSize(element);\n            if (this$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n                groups.push({\n                    groupElements: groupElements,\n                    groupSize: groupSize,\n                    groupElementsSize: groupElementsSize\n                });\n                maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n                groupsSize += groupSpacing + groupSize;\n                groupSize = 0;\n                groupElementsSize = 0;\n                groupElements = [];\n            }\n            groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n            if (groupElementsSize > 0) {\n                groupElementsSize += elementSpacing;\n            }\n            groupElementsSize += elementSize[elementSizeField];\n            groupElements.push(element);\n        }\n\n        groups.push({\n            groupElements: groupElements,\n            groupSize: groupSize,\n            groupElementsSize: groupElementsSize\n        });\n        maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n        groupsSize += groupSize;\n\n        return {\n            groups: groups,\n            groupsSize: groupsSize,\n            maxGroupElementsSize: maxGroupElementsSize\n        };\n    };\n\n    FloatElement.prototype.elementSize = function elementSize (element) {\n        return {\n            width: element.box.width(),\n            height: element.box.height()\n        };\n    };\n\n    FloatElement.prototype.createVisual = function createVisual () {};\n\n    return FloatElement;\n}(ChartElement));\n\nsetDefaultOptions(FloatElement, {\n    vertical: true,\n    wrap: true,\n    vSpacing: 0,\n    spacing: 0\n});\n\nexport default FloatElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nvar DrawingText = draw.Text;\n\nvar Text = (function (ChartElement) {\n    function Text(content, options) {\n        ChartElement.call(this, options);\n\n        this.content = content;\n\n        // Calculate size\n        this.reflow(new Box());\n    }\n\n    if ( ChartElement ) Text.__proto__ = ChartElement;\n    Text.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Text.prototype.constructor = Text;\n\n    Text.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n        this.baseline = size.baseline;\n\n        this.box = new Box(targetBox.x1, targetBox.y1,\n                targetBox.x1 + size.width, targetBox.y1 + size.height);\n    };\n\n    Text.prototype.createVisual = function createVisual () {\n        var ref = this.options;\n        var font = ref.font;\n        var color = ref.color;\n        var opacity = ref.opacity;\n        var cursor = ref.cursor;\n\n        this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n            font: font,\n            fill: { color: color, opacity: opacity },\n            cursor: cursor\n        });\n    };\n\n    return Text;\n}(ChartElement));\n\nsetDefaultOptions(Text, {\n    font: DEFAULT_FONT,\n    color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n    var origin = rect.origin;\n    var bottomRight = rect.bottomRight();\n\n    return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nvar ROWS_SPLIT_REGEX = /\\n/m;\n\nvar TextBox = (function (BoxElement) {\n    function TextBox(content, options, data) {\n        BoxElement.call(this, options);\n        this.content = content;\n        this.data = data;\n\n        this._initContainer();\n        if (this.options._autoReflow !== false) {\n            this.reflow(new Box());\n        }\n    }\n\n    if ( BoxElement ) TextBox.__proto__ = BoxElement;\n    TextBox.prototype = Object.create( BoxElement && BoxElement.prototype );\n    TextBox.prototype.constructor = TextBox;\n\n    TextBox.prototype._initContainer = function _initContainer () {\n        var options = this.options;\n        var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n        var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n        var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n        this.container = floatElement;\n        this.append(floatElement);\n\n        for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n            var text = new Text(rows[rowIdx].trim(), textOptions);\n            floatElement.append(text);\n        }\n    };\n\n    TextBox.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var visualFn = options.visual;\n        this.container.options.align = options.align;\n\n        if (visualFn && !this._boxReflow) {\n            var visualBox = targetBox;\n            if (!visualBox.hasSize()) {\n                this._boxReflow = true;\n                this.reflow(visualBox);\n                this._boxReflow = false;\n                visualBox = this.box;\n            }\n            var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n            if (visual) {\n                visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n                visual.options.zIndex = options.zIndex;\n            }\n\n            this.box = this.contentBox = this.paddingBox = visualBox;\n        } else {\n            BoxElement.prototype.reflow.call(this, targetBox);\n\n            if (options.rotation) {\n                var margin = getSpacing(options.margin);\n                var box = this.box.unpad(margin);\n\n                this.targetBox = targetBox;\n                this.normalBox = box.clone();\n\n                box = this.rotate();\n                box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n                this.rotatedBox = box.clone();\n\n                box.pad(margin);\n            }\n        }\n    };\n\n    TextBox.prototype.createVisual = function createVisual () {\n        var options = this.options;\n\n        this.visual = new draw.Group({\n            transform: this.rotationTransform(),\n            zIndex: options.zIndex,\n            noclip: options.noclip\n        });\n\n        if (this.hasBox()) {\n            var box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n            this.visual.append(box);\n        }\n    };\n\n    TextBox.prototype.renderVisual = function renderVisual () {\n        if (!this.options.visible) {\n            return;\n        }\n\n        if (this.options.visual) {\n            var visual = this.visual;\n            if (visual && !defined(visual.options.noclip)) {\n                visual.options.noclip = this.options.noclip;\n            }\n            this.addVisual();\n            this.createAnimation();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    TextBox.prototype.visualContext = function visualContext (targetBox) {\n        var this$1 = this;\n\n        var context = {\n            text: this.content,\n            rect: targetBox.toRect(),\n            sender: this.getSender(),\n            options: this.options,\n            createVisual: function () {\n                this$1._boxReflow = true;\n                this$1.reflow(targetBox);\n                this$1._boxReflow = false;\n                return this$1.getDefaultVisual();\n            }\n        };\n        if (this.data) {\n            Object.assign(context, this.data);\n        }\n\n        return context;\n    };\n\n    TextBox.prototype.getDefaultVisual = function getDefaultVisual () {\n        this.createVisual();\n        this.renderChildren();\n        var visual = this.visual;\n        delete this.visual;\n        return visual;\n    };\n\n    TextBox.prototype.rotate = function rotate () {\n        var options = this.options;\n        this.box.rotate(options.rotation);\n        this.align(this.targetBox, X, options.align);\n        this.align(this.targetBox, Y, options.vAlign);\n        return this.box;\n    };\n\n    TextBox.prototype.rotationTransform = function rotationTransform () {\n        var rotation = this.options.rotation;\n        if (!rotation) {\n            return null;\n        }\n\n        var ref = this.normalBox.center();\n        var cx = ref.x;\n        var cy = ref.y;\n        var boxCenter = this.rotatedBox.center();\n\n        return geom.transform()\n                   .translate(boxCenter.x - cx, boxCenter.y - cy)\n                   .rotate(rotation, [ cx, cy ]);\n    };\n\n    return TextBox;\n}(BoxElement));\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nvar Title = (function (ChartElement) {\n    function Title(options) {\n        ChartElement.call(this, options);\n\n        this.append(\n            new TextBox(this.options.text, Object.assign({}, this.options, {\n                vAlign: this.options.position\n            }))\n        );\n    }\n\n    if ( ChartElement ) Title.__proto__ = ChartElement;\n    Title.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Title.prototype.constructor = Title;\n\n    Title.prototype.reflow = function reflow (targetBox) {\n        ChartElement.prototype.reflow.call(this, targetBox);\n        this.box.snapTo(targetBox, X);\n    };\n\n    Title.buildTitle = function buildTitle (options, parent, defaultOptions) {\n        var titleOptions = options;\n\n        if (typeof options === \"string\") {\n            titleOptions = { text: options };\n        }\n\n        titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n        var title;\n        if (titleOptions && titleOptions.visible && titleOptions.text) {\n            title = new Title(titleOptions);\n            parent.append(title);\n        }\n\n        return title;\n    };\n\n    return Title;\n}(ChartElement));\n\nsetDefaultOptions(Title, {\n    color: BLACK,\n    position: TOP,\n    align: CENTER,\n    margin: getSpacing(5),\n    padding: getSpacing(5)\n});\n\nexport default Title;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nvar AxisLabel = (function (TextBox) {\n    function AxisLabel(value, text, index, dataItem, options) {\n        TextBox.call(this, text, options);\n\n        this.text = text;\n        this.value = value;\n        this.index = index;\n        this.dataItem = dataItem;\n        this.reflow(new Box());\n    }\n\n    if ( TextBox ) AxisLabel.__proto__ = TextBox;\n    AxisLabel.prototype = Object.create( TextBox && TextBox.prototype );\n    AxisLabel.prototype.constructor = AxisLabel;\n\n    AxisLabel.prototype.visualContext = function visualContext (targetBox) {\n        var context = TextBox.prototype.visualContext.call(this, targetBox);\n\n        context.value = this.value;\n        context.dataItem = this.dataItem;\n        context.format = this.options.format;\n        context.culture = this.options.culture;\n\n        return context;\n    };\n\n    AxisLabel.prototype.click = function click (widget, e) {\n\n        widget.trigger(AXIS_LABEL_CLICK, {\n            element: eventElement(e),\n            value: this.value,\n            text: this.text,\n            index: this.index,\n            dataItem: this.dataItem,\n            axis: this.parent.options\n        });\n    };\n\n    AxisLabel.prototype.rotate = function rotate () {\n        if (this.options.alignRotation !== CENTER) {\n            var box = this.normalBox.toRect();\n            var transform = this.rotationTransform();\n\n            this.box = rectToBox(box.bbox(transform.matrix()));\n        } else {\n            TextBox.prototype.rotate.call(this);\n        }\n\n        return this.box;\n    };\n\n    AxisLabel.prototype.rotationTransform = function rotationTransform () {\n        var options = this.options;\n        var rotation = options.rotation;\n        if (!rotation) {\n            return null;\n        }\n\n        if (options.alignRotation === CENTER) {\n            return TextBox.prototype.rotationTransform.call(this);\n        }\n\n        var rotationMatrix = geom.transform().rotate(rotation).matrix();\n        var box = this.normalBox.toRect();\n        var rect = this.targetBox.toRect();\n\n        var rotationOrigin = options.rotationOrigin || TOP;\n        var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n        var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n        var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n        var topLeft = box.topLeft().transformCopy(rotationMatrix);\n        var topRight = box.topRight().transformCopy(rotationMatrix);\n        var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n        var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n        var rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n        var translate = {};\n        translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n        var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n        var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n        var alignStart, alignEnd;\n\n        if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n            alignStart = topLeft;\n            alignEnd = topRight;\n        } else if (distanceRight < distanceLeft) {\n            alignStart = topRight;\n            alignEnd = bottomRight;\n        } else {\n            alignStart = topLeft;\n            alignEnd = bottomLeft;\n        }\n\n        var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n        translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n        return geom.transform()\n            .translate(translate.x, translate.y)\n            .rotate(rotation);\n    };\n\n    return AxisLabel;\n}(TextBox));\n\nsetDefaultOptions(AxisLabel, {\n    _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nvar DEFAULT_ICON_SIZE = 7;\nvar DEFAULT_LABEL_COLOR = \"#fff\";\n\nvar Note = (function (BoxElement) {\n    function Note(fields, options, chartService) {\n        BoxElement.call(this, options);\n\n        this.fields = fields;\n        this.chartService = chartService;\n\n        this.render();\n    }\n\n    if ( BoxElement ) Note.__proto__ = BoxElement;\n    Note.prototype = Object.create( BoxElement && BoxElement.prototype );\n    Note.prototype.constructor = Note;\n\n    Note.prototype.hide = function hide () {\n        this.options.visible = false;\n    };\n\n    Note.prototype.show = function show () {\n        this.options.visible = true;\n    };\n\n    Note.prototype.render = function render () {\n        var this$1 = this;\n\n        var options = this.options;\n\n        if (options.visible) {\n            var label = options.label;\n            var icon = options.icon;\n            var box = new Box();\n            var childAlias = function () { return this$1; };\n            var size = icon.size;\n            var text = this.fields.text;\n            var width, height;\n\n            if (defined(label) && label.visible) {\n                var noteTemplate = getTemplate(label);\n                if (noteTemplate) {\n                    text = noteTemplate(this.fields);\n                } else if (label.format) {\n                    text = this.chartService.format.auto(label.format, text);\n                }\n\n                if (!label.color) {\n                    label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n                }\n\n                this.label = new TextBox(text, deepExtend({}, label));\n                this.label.aliasFor = childAlias;\n\n                if (label.position === INSIDE && !defined(size)) {\n                    if (icon.type === CIRCLE) {\n                        size = Math.max(this.label.box.width(), this.label.box.height());\n                    } else {\n                        width = this.label.box.width();\n                        height = this.label.box.height();\n                    }\n                    box.wrap(this.label.box);\n                }\n            }\n\n            icon.width = width || size || DEFAULT_ICON_SIZE;\n            icon.height = height || size || DEFAULT_ICON_SIZE;\n\n            var marker = new ShapeElement(deepExtend({}, icon));\n            marker.aliasFor = childAlias;\n\n            this.marker = marker;\n            this.append(marker);\n\n            if (this.label) {\n                this.append(this.label);\n            }\n\n            marker.reflow(new Box());\n            this.wrapperBox = box.wrap(marker.box);\n        }\n    };\n\n    Note.prototype.reflow = function reflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var label = ref.label;\n        var marker = ref.marker;\n        var wrapperBox = ref.wrapperBox;\n        var center = targetBox.center();\n        var length = options.line.length;\n        var position = options.position;\n\n        // TODO: Review\n        if (options.visible) {\n            var lineStart, box, contentBox;\n\n            if (inArray(position, [ LEFT, RIGHT ])) {\n                if (position === LEFT) {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n                    if (options.line.visible) {\n                        lineStart = [ targetBox.x1, center.y ];\n                        this.linePoints = [\n                            lineStart,\n                            [ contentBox.x2, center.y ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                } else {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n                    if (options.line.visible) {\n                        lineStart = [ targetBox.x2, center.y ];\n                        this.linePoints = [\n                            lineStart,\n                            [ contentBox.x1, center.y ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                }\n            } else {\n                if (position === BOTTOM) {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n                    if (options.line.visible) {\n                        lineStart = [ center.x, targetBox.y2 ];\n                        this.linePoints = [\n                            lineStart,\n                            [ center.x, contentBox.y1 ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                } else {\n                    contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n                    if (options.line.visible) {\n                        lineStart = [ center.x, targetBox.y1 ];\n                        this.linePoints = [\n                            lineStart,\n                            [ center.x, contentBox.y2 ]\n                        ];\n                        box = contentBox.clone().wrapPoint(lineStart);\n                    }\n                }\n            }\n\n            if (marker) {\n                marker.reflow(contentBox);\n            }\n\n            if (label) {\n                label.reflow(contentBox);\n                if (marker) {\n                    if (options.label.position === OUTSIDE) {\n                        label.box.alignTo(marker.box, position);\n                    }\n                    label.reflow(label.box);\n                }\n            }\n\n            this.contentBox = contentBox;\n            this.targetBox = targetBox;\n            this.box = box || contentBox;\n        }\n    };\n\n    Note.prototype.createVisual = function createVisual () {\n        BoxElement.prototype.createVisual.call(this);\n        this.visual.options.noclip = this.options.noclip;\n\n        if (this.options.visible) {\n            this.createLine();\n        }\n    };\n\n    Note.prototype.renderVisual = function renderVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var customVisual = options.visual;\n        if (options.visible && customVisual) {\n            this.visual = customVisual(Object.assign(this.fields, {\n                sender: this.getSender(),\n                rect: this.targetBox.toRect(),\n                options: {\n                    background: options.background,\n                    border: options.background,\n                    icon: options.icon,\n                    label: options.label,\n                    line: options.line,\n                    position: options.position,\n                    visible: options.visible\n                },\n                createVisual: function () {\n                    this$1.createVisual();\n                    this$1.renderChildren();\n                    var defaultVisual = this$1.visual;\n                    delete this$1.visual;\n                    return defaultVisual;\n                }\n            }));\n            this.addVisual();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    Note.prototype.createLine = function createLine () {\n        var options = this.options.line;\n\n        if (this.linePoints) {\n            var path = draw.Path.fromPoints(this.linePoints, {\n                stroke: {\n                    color: options.color,\n                    width: options.width,\n                    dashType: options.dashType\n                }\n            });\n\n            alignPathToPixel(path);\n            this.visual.append(path);\n        }\n    };\n\n    Note.prototype.click = function click (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(NOTE_CLICK, args)) {\n            e.preventDefault();\n        }\n    };\n\n    Note.prototype.over = function over (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(NOTE_HOVER, args)) {\n            e.preventDefault();\n        }\n    };\n\n    Note.prototype.out = function out (widget, e) {\n        var args = this.eventArgs(e);\n\n        widget.trigger(NOTE_LEAVE, args);\n    };\n\n    Note.prototype.eventArgs = function eventArgs (e) {\n        var options = this.options;\n\n        return Object.assign(this.fields, {\n            element: eventElement(e),\n            text: defined(options.label) ? options.label.text : \"\",\n            visual: this.visual\n        });\n    };\n\n    return Note;\n}(BoxElement));\n\nsetDefaultOptions(Note, {\n    icon: {\n        visible: true,\n        type: CIRCLE\n    },\n    label: {\n        position: INSIDE,\n        visible: true,\n        align: CENTER,\n        vAlign: CENTER\n    },\n    line: {\n        visible: true\n    },\n    visible: true,\n    position: TOP,\n    zIndex: 2\n});\n\nexport default Note;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n    var tickX = options.tickX;\n    var tickY = options.tickY;\n    var position = options.position;\n\n    var tick = new draw.Path({\n        stroke: {\n            width: tickOptions.width,\n            color: tickOptions.color\n        }\n    });\n\n    if (options.vertical) {\n        tick.moveTo(tickX, position)\n            .lineTo(tickX + tickOptions.size, position);\n    } else {\n        tick.moveTo(position, tickY)\n            .lineTo(position, tickY + tickOptions.size);\n    }\n\n    alignPathToPixel(tick);\n\n    return tick;\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n    var lineStart = options.lineStart;\n    var lineEnd = options.lineEnd;\n    var position = options.position;\n\n    var line = new draw.Path({\n        stroke: {\n            width: gridLine.width,\n            color: gridLine.color,\n            dashType: gridLine.dashType\n        }\n    });\n\n    if (options.vertical) {\n        line.moveTo(lineStart, position)\n            .lineTo(lineEnd, position);\n    } else {\n        line.moveTo(position, lineStart)\n            .lineTo(position, lineEnd);\n    }\n\n    alignPathToPixel(line);\n\n    return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar Axis = (function (ChartElement) {\n    function Axis(options, chartService) {\n        if ( chartService === void 0 ) chartService = new ChartService();\n\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n\n        if (!this.options.visible) {\n            this.options = deepExtend({}, this.options, {\n                labels: {\n                    visible: false\n                },\n                line: {\n                    visible: false\n                },\n                margin: 0,\n                majorTickSize: 0,\n                minorTickSize: 0\n            });\n        }\n\n        this.options.minorTicks = deepExtend({}, {\n            color: this.options.line.color,\n            width: this.options.line.width,\n            visible: this.options.minorTickType !== NONE\n        }, this.options.minorTicks, {\n            size: this.options.minorTickSize,\n            align: this.options.minorTickType\n        });\n\n        this.options.majorTicks = deepExtend({}, {\n            color: this.options.line.color,\n            width: this.options.line.width,\n            visible: this.options.majorTickType !== NONE\n        }, this.options.majorTicks, {\n            size: this.options.majorTickSize,\n            align: this.options.majorTickType\n        });\n\n        this.initFields();\n\n        if (!this.options._deferLabels) {\n            this.createLabels();\n        }\n\n        this.createTitle();\n        this.createNotes();\n    }\n\n    if ( ChartElement ) Axis.__proto__ = ChartElement;\n    Axis.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Axis.prototype.constructor = Axis;\n\n    Axis.prototype.initFields = function initFields () {\n    };\n\n    // abstract labelsCount(): Number\n    // abstract createAxisLabel(index, options): AxisLabel\n\n    Axis.prototype.labelsRange = function labelsRange () {\n        return {\n            min: this.options.labels.skip,\n            max: this.labelsCount()\n        };\n    };\n\n    Axis.prototype.createLabels = function createLabels () {\n        var this$1 = this;\n\n        var options = this.options;\n        var align = options.vertical ? RIGHT : CENTER;\n        var labelOptions = deepExtend({ }, options.labels, {\n            align: align,\n            zIndex: options.zIndex\n        });\n        var step = Math.max(1, labelOptions.step);\n\n        this.clearLabels();\n\n        if (labelOptions.visible) {\n            var range = this.labelsRange();\n            var rotation = labelOptions.rotation;\n\n            if (isObject(rotation)) {\n                labelOptions.alignRotation = rotation.align;\n                labelOptions.rotation = rotation.angle;\n            }\n\n            if (labelOptions.rotation === \"auto\") {\n                labelOptions.rotation = 0;\n                options.autoRotateLabels = true;\n            }\n\n            for (var idx = range.min; idx < range.max; idx += step) {\n                var label = this$1.createAxisLabel(idx, labelOptions);\n                if (label) {\n                    this$1.append(label);\n                    this$1.labels.push(label);\n                }\n            }\n        }\n    };\n\n    Axis.prototype.clearLabels = function clearLabels () {\n        this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n        this.labels = [];\n    };\n\n    Axis.prototype.clearTitle = function clearTitle () {\n        var this$1 = this;\n\n        if (this.title) {\n            this.children = grep(this.children, function (child) { return child !== this$1.title; });\n            this.title = undefined;\n        }\n    };\n\n    Axis.prototype.clear = function clear () {\n        this.clearLabels();\n        this.clearTitle();\n    };\n\n    Axis.prototype.lineBox = function lineBox () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var axisX = mirror ? box.x1 : box.x2;\n        var axisY = mirror ? box.y2 : box.y1;\n        var lineWidth = options.line.width || 0;\n\n        return vertical ?\n            new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n            new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n    };\n\n    Axis.prototype.createTitle = function createTitle () {\n        var options = this.options;\n        var titleOptions = deepExtend({\n            rotation: options.vertical ? -90 : 0,\n            text: \"\",\n            zIndex: 1,\n            visualSize: true\n        }, options.title);\n\n        if (titleOptions.visible && titleOptions.text) {\n            var title = new TextBox(titleOptions.text, titleOptions);\n            this.append(title);\n            this.title = title;\n        }\n    };\n\n    Axis.prototype.createNotes = function createNotes () {\n        var this$1 = this;\n\n        var options = this.options;\n        var notes = options.notes;\n        var items = notes.data || [];\n\n        this.notes = [];\n\n        for (var i = 0; i < items.length; i++) {\n            var item = deepExtend({}, notes, items[i]);\n            item.value = this$1.parseNoteValue(item.value);\n\n            var note = new Note({\n                value: item.value,\n                text: item.label.text,\n                dataItem: item\n            }, item, this$1.chartService);\n\n            if (note.options.visible) {\n                if (defined(note.options.position)) {\n                    if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n                        note.options.position = options.reverse ? LEFT : RIGHT;\n                    } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n                        note.options.position = options.reverse ? BOTTOM : TOP;\n                    }\n                } else {\n                    if (options.vertical) {\n                        note.options.position = options.reverse ? LEFT : RIGHT;\n                    } else {\n                        note.options.position = options.reverse ? BOTTOM : TOP;\n                    }\n                }\n                this$1.append(note);\n                this$1.notes.push(note);\n            }\n        }\n    };\n\n    Axis.prototype.parseNoteValue = function parseNoteValue (value) {\n        return value;\n    };\n\n    Axis.prototype.renderVisual = function renderVisual () {\n        ChartElement.prototype.renderVisual.call(this);\n\n        this.createPlotBands();\n    };\n\n    Axis.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        this.createBackground();\n        this.createLine();\n    };\n\n    Axis.prototype.gridLinesVisual = function gridLinesVisual () {\n        var gridLines = this._gridLines;\n        if (!gridLines) {\n            gridLines = this._gridLines = new draw.Group({\n                zIndex: -2\n            });\n            this.appendVisual(this._gridLines);\n        }\n\n        return gridLines;\n    };\n\n    Axis.prototype.createTicks = function createTicks (lineGroup) {\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var mirror = options.labels.mirror;\n        var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n        var tickLineOptions = {\n            // TODO\n            // _alignLines: options._alignLines,\n            vertical: options.vertical\n        };\n\n        function render(tickPositions, tickOptions, skipUnit) {\n            var count = tickPositions.length;\n            var step = Math.max(1, tickOptions.step);\n\n            if (tickOptions.visible) {\n                for (var i = tickOptions.skip; i < count; i += step) {\n                    if (defined(skipUnit) && (i % skipUnit === 0)) {\n                        continue;\n                    }\n\n                    tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n                    tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n                    tickLineOptions.position = tickPositions[i];\n\n                    lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n                }\n            }\n        }\n\n        render(this.getMajorTickPositions(), options.majorTicks);\n        render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n    };\n\n    Axis.prototype.createLine = function createLine () {\n        var options = this.options;\n        var line = options.line;\n        var lineBox = this.lineBox();\n\n        if (line.width > 0 && line.visible) {\n            var path = new draw.Path({\n                stroke: {\n                    width: line.width,\n                    color: line.color,\n                    dashType: line.dashType\n                }\n\n                /* TODO\n                zIndex: line.zIndex,\n                */\n            });\n\n            path.moveTo(lineBox.x1, lineBox.y1)\n                .lineTo(lineBox.x2, lineBox.y2);\n\n            if (options._alignLines) {\n                alignPathToPixel(path);\n            }\n\n            var group = this._lineGroup = new draw.Group();\n            group.append(path);\n\n            this.visual.append(group);\n            this.createTicks(group);\n        }\n    };\n\n    Axis.prototype.getActualTickSize = function getActualTickSize () {\n        var options = this.options;\n        var tickSize = 0;\n\n        if (options.majorTicks.visible && options.minorTicks.visible) {\n            tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n        } else if (options.majorTicks.visible) {\n            tickSize = options.majorTicks.size;\n        } else if (options.minorTicks.visible) {\n            tickSize = options.minorTicks.size;\n        }\n\n        return tickSize;\n    };\n\n    Axis.prototype.createBackground = function createBackground () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var background = options.background;\n\n        if (background) {\n            this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n                fill: {\n                    color: background\n                },\n                stroke: null\n            });\n\n            this.visual.append(this._backgroundPath);\n        }\n    };\n\n    Axis.prototype.createPlotBands = function createPlotBands () {\n        var this$1 = this;\n\n        var options = this.options;\n        var plotBands = options.plotBands || [];\n        var vertical = options.vertical;\n        var plotArea = this.plotArea;\n\n        if (plotBands.length === 0) {\n            return;\n        }\n\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1.options.vertical; })[0];\n\n        for (var idx = 0; idx < plotBands.length; idx++) {\n            var item = plotBands[idx];\n            var slotX = (void 0), slotY = (void 0);\n\n            if (vertical) {\n                slotX = (altAxis || plotArea.axisX).lineBox();\n                slotY = this$1.getSlot(item.from, item.to, true);\n            } else {\n                slotX = this$1.getSlot(item.from, item.to, true);\n                slotY = (altAxis || plotArea.axisY).lineBox();\n            }\n\n            if (slotX.width() !== 0 && slotY.height() !== 0) {\n                var bandRect = new geom.Rect(\n                    [ slotX.x1, slotY.y1 ],\n                    [ slotX.width(), slotY.height() ]\n                );\n\n                var path = draw.Path.fromRect(bandRect, {\n                    fill: {\n                        color: item.color,\n                        opacity: item.opacity\n                    },\n                    stroke: null\n                });\n\n                group.append(path);\n            }\n        }\n\n        this.appendVisual(group);\n    };\n\n    Axis.prototype.createGridLines = function createGridLines (altAxis) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var minorUnit = options.minorUnit;\n        var vertical = options.vertical;\n        var axisLineVisible = altAxis.options.line.visible;\n        var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n        var lineBox = altAxis.lineBox();\n        var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n        var lineOptions = {\n            lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n            lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n            vertical: vertical\n        };\n        var majorTicks = [];\n\n        var container = this.gridLinesVisual();\n\n        function render(tickPositions, gridLine, skipUnit) {\n            var count = tickPositions.length;\n            var step = Math.max(1, gridLine.step);\n\n            if (gridLine.visible) {\n                for (var i = gridLine.skip; i < count; i += step) {\n                    var pos = round(tickPositions[i]);\n                    if (!inArray(pos, majorTicks)) {\n                        if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n                            lineOptions.position = pos;\n                            container.append(createAxisGridLine(lineOptions, gridLine));\n\n                            majorTicks.push(pos);\n                        }\n                    }\n                }\n            }\n        }\n\n        render(this.getMajorTickPositions(), majorGridLines);\n        render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n        return container.children;\n    };\n\n    Axis.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var title = ref.title;\n        var vertical = options.vertical;\n        var count = labels.length;\n        var sizeFn = vertical ? WIDTH : HEIGHT;\n        var titleSize = title ? title.box[sizeFn]() : 0;\n        var space = this.getActualTickSize() + options.margin + titleSize;\n        var rootBox = (this.getRoot() || {}).box || box;\n        var boxSize = rootBox[sizeFn]();\n        var maxLabelSize = 0;\n\n        for (var i = 0; i < count; i++) {\n            var labelSize = labels[i].box[sizeFn]();\n            if (labelSize + space <= boxSize) {\n                maxLabelSize = Math.max(maxLabelSize, labelSize);\n            }\n        }\n\n        if (vertical) {\n            this.box = new Box(\n                box.x1, box.y1,\n                box.x1 + maxLabelSize + space, box.y2\n            );\n        } else {\n            this.box = new Box(\n                box.x1, box.y1,\n                box.x2, box.y1 + maxLabelSize + space\n            );\n        }\n\n        this.arrangeTitle();\n        this.arrangeLabels();\n        this.arrangeNotes();\n    };\n\n    Axis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n        return this.getMajorTickPositions();\n    };\n\n    Axis.prototype.labelTickIndex = function labelTickIndex (label) {\n        return label.index;\n    };\n\n    Axis.prototype.arrangeLabels = function arrangeLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var labelsBetweenTicks = this.labelsBetweenTicks();\n        var vertical = options.vertical;\n        var lineBox = this.lineBox();\n        var mirror = options.labels.mirror;\n        var tickPositions = this.getLabelsTickPositions();\n        var labelOffset = this.getActualTickSize() + options.margin;\n\n        for (var idx = 0; idx < labels.length; idx++) {\n            var label = labels[idx];\n            var tickIx = this$1.labelTickIndex(label);\n            var labelSize = vertical ? label.box.height() : label.box.width();\n            var labelPos = tickPositions[tickIx] - (labelSize / 2);\n            var labelBox = (void 0), firstTickPosition = (void 0), nextTickPosition = (void 0);\n\n            if (vertical) {\n                if (labelsBetweenTicks) {\n                    firstTickPosition = tickPositions[tickIx];\n                    nextTickPosition = tickPositions[tickIx + 1];\n\n                    var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n                    labelPos = middle - (labelSize / 2);\n                }\n\n                var labelX = lineBox.x2;\n\n                if (mirror) {\n                    labelX += labelOffset;\n                    label.options.rotationOrigin = LEFT;\n                } else {\n                    labelX -= labelOffset + label.box.width();\n                    label.options.rotationOrigin = RIGHT;\n                }\n\n                labelBox = label.box.move(labelX, labelPos);\n            } else {\n                if (labelsBetweenTicks) {\n                    firstTickPosition = tickPositions[tickIx];\n                    nextTickPosition = tickPositions[tickIx + 1];\n                } else {\n                    firstTickPosition = labelPos;\n                    nextTickPosition = labelPos + labelSize;\n                }\n\n                var labelY = lineBox.y1;\n\n                if (mirror) {\n                    labelY -= labelOffset + label.box.height();\n                    label.options.rotationOrigin = BOTTOM;\n                } else {\n                    labelY += labelOffset;\n                    label.options.rotationOrigin = TOP;\n                }\n\n                labelBox = new Box(firstTickPosition, labelY,\n                                nextTickPosition, labelY + label.box.height());\n            }\n\n            label.reflow(labelBox);\n        }\n    };\n\n    Axis.prototype.autoRotateLabels = function autoRotateLabels () {\n        if (this.options.autoRotateLabels && !this.options.vertical) {\n            var tickPositions = this.getMajorTickPositions();\n            var labels = this.labels;\n            var angle;\n\n            for (var idx = 0; idx < labels.length; idx++) {\n                var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n                var labelBox = labels[idx].box;\n\n                if (labelBox.width() > width) {\n                    if (labelBox.height() > width) {\n                        angle = -90;\n                        break;\n                    }\n                    angle = -45;\n                }\n            }\n\n            if (angle) {\n                for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n                    labels[idx$1].options.rotation = angle;\n                    labels[idx$1].reflow(new Box());\n                }\n                return true;\n            }\n        }\n    };\n\n    Axis.prototype.arrangeTitle = function arrangeTitle () {\n        var ref = this;\n        var options = ref.options;\n        var title = ref.title;\n        var mirror = options.labels.mirror;\n        var vertical = options.vertical;\n\n        if (title) {\n            if (vertical) {\n                title.options.align = mirror ? RIGHT : LEFT;\n                title.options.vAlign = title.options.position;\n            } else {\n                title.options.align = title.options.position;\n                title.options.vAlign = mirror ? TOP : BOTTOM;\n            }\n\n            title.reflow(this.box);\n        }\n    };\n\n    Axis.prototype.arrangeNotes = function arrangeNotes () {\n        var this$1 = this;\n\n        for (var idx = 0; idx < this.notes.length; idx++) {\n            var item = this$1.notes[idx];\n            var value = item.options.value;\n            var slot = (void 0);\n\n            if (defined(value)) {\n                if (this$1.shouldRenderNote(value)) {\n                    item.show();\n                } else {\n                    item.hide();\n                }\n\n                slot = this$1.noteSlot(value);\n            } else {\n                item.hide();\n            }\n\n            item.reflow(slot || this$1.lineBox());\n        }\n    };\n\n    Axis.prototype.noteSlot = function noteSlot (value) {\n        return this.getSlot(value);\n    };\n\n    Axis.prototype.alignTo = function alignTo (secondAxis) {\n        var lineBox = secondAxis.lineBox();\n        var vertical = this.options.vertical;\n        var pos = vertical ? Y : X;\n\n        this.box.snapTo(lineBox, pos);\n        if (vertical) {\n            this.box.shrink(0, this.lineBox().height() - lineBox.height());\n        } else {\n            this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n        }\n        this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n        this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n    };\n\n    Axis.prototype.axisLabelText = function axisLabelText (value, dataItem, options) {\n        var tmpl = getTemplate(options);\n        var text = value;\n\n        if (tmpl) {\n            text = tmpl({ value: value, dataItem: dataItem, format: options.format, culture: options.culture });\n        } else if (options.format) {\n            text = this.chartService.format.localeAuto(options.format, [ value ], options.culture);\n        }\n\n        return text;\n    };\n\n    Axis.prototype.slot = function slot (from , to, limit) {\n        var slot = this.getSlot(from, to, limit);\n        if (slot) {\n            return slot.toRect();\n        }\n    };\n\n    Axis.prototype.contentBox = function contentBox () {\n        var box = this.box.clone();\n        var labels = this.labels;\n        if (labels.length) {\n            var axis = this.options.vertical ? Y : X;\n            if (this.chartService.isPannable(axis)) {\n                var offset = this.maxLabelOffset();\n                box[axis + 1] -= offset.start;\n                box[axis + 2] += offset.end;\n            } else {\n                if (labels[0].options.visible) {\n                    box.wrap(labels[0].box);\n                }\n                var lastLabel = labels[labels.length - 1];\n                if (lastLabel.options.visible) {\n                    box.wrap(lastLabel.box);\n                }\n            }\n        }\n\n        return box;\n    };\n\n    Axis.prototype.maxLabelOffset = function maxLabelOffset () {\n        var this$1 = this;\n\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        var labelsBetweenTicks = this.labelsBetweenTicks();\n        var tickPositions = this.getLabelsTickPositions();\n        var offsetField = vertical ? Y : X;\n        var labels = this.labels;\n        var startPosition = reverse ? 1 : 0;\n        var endPosition = reverse ? 0 : 1;\n        var maxStartOffset = 0;\n        var maxEndOffset = 0;\n\n        for (var idx = 0; idx < labels.length; idx++) {\n            var label = labels[idx];\n            var tickIx = this$1.labelTickIndex(label);\n            var startTick = (void 0), endTick = (void 0);\n\n            if (labelsBetweenTicks) {\n                startTick = tickPositions[tickIx + startPosition];\n                endTick = tickPositions[tickIx + endPosition];\n            } else {\n                startTick = endTick = tickPositions[tickIx];\n            }\n\n            maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n            maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n        }\n\n        return {\n            start: maxStartOffset,\n            end: maxEndOffset\n        };\n    };\n\n    Axis.prototype.limitRange = function limitRange (from, to, min, max, offset) {\n        var options = this.options;\n\n        if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n            return null;\n        }\n\n        if ((to < min && offset > 0) || (max < from && offset < 0)) {\n            return {\n                min: from,\n                max: to\n            };\n        }\n\n        var rangeSize = to - from;\n        var minValue = from;\n        var maxValue = to;\n\n        if (from < min && offset < 0) {\n            minValue = limitValue(from, min, max);\n            maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n        } else if (to > max && offset > 0) {\n            maxValue = limitValue(to, min, max);\n            minValue = limitValue(to - rangeSize, min, max - rangeSize);\n        }\n\n        return {\n            min: minValue,\n            max: maxValue\n        };\n    };\n\n    Axis.prototype.valueRange = function valueRange () {\n        return {\n            min: this.seriesMin,\n            max: this.seriesMax\n        };\n    };\n\n    Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n        return !this.options.justified;\n    };\n\n    //add legacy fields to the options that are no longer generated by default\n    Axis.prototype.prepareUserOptions = function prepareUserOptions () {\n    };\n\n    return Axis;\n}(ChartElement));\n\nsetDefaultOptions(Axis, {\n    labels: {\n        visible: true,\n        rotation: 0,\n        mirror: false,\n        step: 1,\n        skip: 0\n    },\n    line: {\n        width: 1,\n        color: BLACK,\n        visible: true\n    },\n    title: {\n        visible: true,\n        position: CENTER\n    },\n    majorTicks: {\n        align: OUTSIDE,\n        size: 4,\n        skip: 0,\n        step: 1\n    },\n    minorTicks: {\n        align: OUTSIDE,\n        size: 3,\n        skip: 0,\n        step: 1\n    },\n    axisCrossingValue: 0,\n    majorTickType: OUTSIDE,\n    minorTickType: NONE,\n    majorGridLines: {\n        skip: 0,\n        step: 1\n    },\n    minorGridLines: {\n        visible: false,\n        width: 1,\n        color: BLACK,\n        skip: 0,\n        step: 1\n    },\n    // TODO: Move to line or labels options\n    margin: 5,\n    visible: true,\n    reverse: false,\n    justified: true,\n    notes: {\n        label: {\n            text: \"\"\n        }\n    },\n\n    _alignLines: true,\n    _deferLabels: false\n});\n\nexport default Axis;\n","export var MILLISECONDS = \"milliseconds\";\nexport var SECONDS = \"seconds\";\nexport var MINUTES = \"minutes\";\nexport var HOURS = \"hours\";\nexport var DAYS = \"days\";\nexport var WEEKS = \"weeks\";\nexport var MONTHS = \"months\";\nexport var YEARS = \"years\";\n\nexport var TIME_PER_MILLISECOND = 1;\nexport var TIME_PER_SECOND = 1000;\nexport var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport var TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport var TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport var TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport var TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport var TIME_PER_UNIT = {\n    \"years\": TIME_PER_YEAR,\n    \"months\": TIME_PER_MONTH,\n    \"weeks\": TIME_PER_WEEK,\n    \"days\": TIME_PER_DAY,\n    \"hours\": TIME_PER_HOUR,\n    \"minutes\": TIME_PER_MINUTE,\n    \"seconds\": TIME_PER_SECOND,\n    \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n    var diff = a.getTime() - b;\n    var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n    return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n    return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n    var result;\n\n    if (value instanceof Date) {\n        result = value;\n    } else if (value) {\n        result = new Date(value);\n    }\n\n    return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n    TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n    if (hours === 0 && date.getHours() === 23) {\n        date.setHours(date.getHours() + 2);\n        return true;\n    }\n\n    return false;\n}\n\nfunction addHours(date, hours) {\n    var roundedDate = new Date(date);\n\n    roundedDate.setMinutes(0, 0, 0);\n\n    var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n    return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n    var result = dateValue;\n\n    if (dateValue) {\n        var date = toDate(dateValue);\n        var hours = date.getHours();\n\n        if (unit === YEARS) {\n            result = new Date(date.getFullYear() + value, 0, 1);\n            adjustDST(result, 0);\n        } else if (unit === MONTHS) {\n            result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n            adjustDST(result, hours);\n        } else if (unit === WEEKS) {\n            result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n            adjustDST(result, hours);\n        } else if (unit === DAYS) {\n            result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n            adjustDST(result, hours);\n        } else if (unit === HOURS) {\n            result = addHours(date, value);\n        } else if (unit === MINUTES) {\n            result = addTicks(date, value * TIME_PER_MINUTE);\n\n            if (result.getSeconds() > 0) {\n                result.setSeconds(0);\n            }\n        } else if (unit === SECONDS) {\n            result = addTicks(date, value * TIME_PER_SECOND);\n        } else if (unit === MILLISECONDS) {\n            result = addTicks(date, value);\n        }\n\n        if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n            result.setMilliseconds(0);\n        }\n    }\n\n    return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay) {\n    if ( weekStartDay === void 0 ) weekStartDay = 0;\n\n    var daysToSubtract = 0;\n    var day = date.getDay();\n\n    if (!isNaN(day)) {\n        while (day !== weekStartDay) {\n            if (day === 0) {\n                day = 6;\n            } else {\n                day--;\n            }\n\n            daysToSubtract++;\n        }\n    }\n\n    return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n    return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n    var date = toDate(dateValue);\n\n    if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n        return date;\n    }\n\n    return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n    if (a && b) {\n        return a.getTime() - b.getTime();\n    }\n\n    return -1;\n}","export default function dateDiff(a, b) {\n    return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n    if (isArray(value)) {\n        var result = [];\n        for (var idx = 0; idx < value.length; idx++) {\n            result.push(toTime(value[idx]));\n        }\n\n        return result;\n    } else if (value) {\n        return toDate(value).getTime();\n    }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n    if (a && b) {\n        return toTime(a) === toTime(b);\n    }\n\n    return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n    return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n    var date = toDate(value);\n    var startDate = toDate(start);\n    var index;\n\n    if (baseUnit === MONTHS) {\n        index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n            timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n    } else if (baseUnit === YEARS) {\n        index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n    } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n        index = timeIndex(date, startDate, baseUnit);\n    } else {\n        index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n    }\n\n    return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n    var diff;\n\n    if (unit === YEARS) {\n        diff = b.getFullYear() - a.getFullYear();\n    } else if (unit === MONTHS) {\n        diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n    } else if (unit === DAYS) {\n        diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n    } else {\n        diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n    }\n\n    return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n    var result;\n    if (isString(date)) {\n        result = intlService.parseDate(date) || toDate(date);\n    } else {\n        result = toDate(date);\n    }\n    return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n    if (isArray(dates)) {\n        var result = [];\n        for (var idx = 0; idx < dates.length; idx++) {\n            result.push(parseDate(intlService, dates[idx]));\n        }\n\n        return result;\n    }\n\n    return parseDate(intlService, dates);\n}","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nvar MIN_CATEGORY_POINTS_RANGE = 0.01;\n\nfunction indexOf(value, arr) {\n    if (value instanceof Date) {\n        var length = arr.length;\n        for (var idx = 0; idx < length; idx++) {\n            if (dateEquals(arr[idx], value)) {\n                return idx;\n            }\n        }\n\n        return -1;\n    }\n\n    return arr.indexOf(value);\n}\n\nvar CategoryAxis = (function (Axis) {\n    function CategoryAxis () {\n        Axis.apply(this, arguments);\n    }\n\n    if ( Axis ) CategoryAxis.__proto__ = Axis;\n    CategoryAxis.prototype = Object.create( Axis && Axis.prototype );\n    CategoryAxis.prototype.constructor = CategoryAxis;\n\n    CategoryAxis.prototype.initFields = function initFields () {\n        this._ticks = {};\n    };\n\n    CategoryAxis.prototype.categoriesHash = function categoriesHash () {\n        return \"\";\n    };\n\n    CategoryAxis.prototype.clone = function clone () {\n        var copy = new CategoryAxis(Object.assign({}, this.options, {\n            categories: this.options.srcCategories\n        }), this.chartService);\n        copy.createLabels();\n\n        return copy;\n    };\n\n    CategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n        var categories = options.categories || [];\n        var definedMin = defined(options.min);\n        var definedMax = defined(options.max);\n        options.srcCategories = options.categories = categories;\n\n        if ((definedMin || definedMax) && categories.length) {\n            var min = definedMin ? Math.floor(options.min) : 0;\n            var max;\n\n            if (definedMax) {\n                max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n            } else {\n                max = categories.length;\n            }\n\n            options.categories = options.categories.slice(min, max);\n        }\n\n        return options;\n    };\n\n    CategoryAxis.prototype.rangeIndices = function rangeIndices () {\n        var options = this.options;\n        var length = options.categories.length || 1;\n        var min = isNumber(options.min) ? options.min % 1 : 0;\n        var max;\n\n        if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n            max = length - (1 - options.max % 1);\n        } else {\n            max = length - (options.justified ? 1 : 0);\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.totalRangeIndices = function totalRangeIndices (limit) {\n        var options = this.options;\n        var min = isNumber(options.min) ? options.min : 0;\n        var max;\n\n        if (isNumber(options.max)) {\n            max = options.max;\n        } else if (isNumber(options.min)) {\n            max = min + options.categories.length;\n        } else {\n            max = this.totalRange().max || 1;\n        }\n\n        if (limit) {\n            var totalRange = this.totalRange();\n            min = limitValue(min, 0, totalRange.max);\n            max = limitValue(max, 0, totalRange.max);\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.range = function range () {\n        var options = this.options;\n        var min = isNumber(options.min) ? options.min : 0;\n        var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.roundedRange = function roundedRange () {\n        return this.range();\n    };\n\n    CategoryAxis.prototype.totalRange = function totalRange () {\n        var options = this.options;\n        return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n    };\n\n    CategoryAxis.prototype.scaleOptions = function scaleOptions () {\n        var ref = this.rangeIndices();\n        var min = ref.min;\n        var max = ref.max;\n        var lineBox = this.lineBox();\n        var size = this.options.vertical ? lineBox.height() : lineBox.width();\n        var scale = size / ((max - min) || 1);\n\n        return {\n            scale: scale * (this.options.reverse ? -1 : 1),\n            box: lineBox,\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n        Axis.prototype.arrangeLabels.call(this);\n        this.hideOutOfRangeLabels();\n    };\n\n    CategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n        var ref = this;\n        var box = ref.box;\n        var labels = ref.labels;\n\n        if (labels.length) {\n            var valueAxis = this.options.vertical ? Y : X;\n            var start = box[valueAxis + 1];\n            var end = box[valueAxis + 2];\n            var firstLabel = labels[0];\n            var lastLabel = last(labels);\n\n            if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n                firstLabel.options.visible = false;\n            }\n            if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n                lastLabel.options.visible = false;\n            }\n        }\n    };\n\n    CategoryAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTicks().majorTicks;\n    };\n\n    CategoryAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTicks().minorTicks;\n    };\n\n    CategoryAxis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n        return this.getTicks().labelTicks;\n    };\n\n    CategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n        var ref = this.rangeIndices();\n        var min = ref.min;\n        var max = ref.max;\n        var limit = Math.ceil(max);\n        var current = Math.floor(min);\n        var indices = [];\n\n        while (current <= limit) {\n            indices.push(current);\n            current += stepSize;\n        }\n\n        return indices;\n    };\n\n    CategoryAxis.prototype.getTickPositions = function getTickPositions (stepSize) {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var min = ref$1.min;\n        var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n        var indices = this.tickIndices(stepSize);\n        var positions = [];\n\n        for (var idx = 0; idx < indices.length; idx++) {\n            positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n        }\n\n        return positions;\n    };\n\n    CategoryAxis.prototype.getTicks = function getTicks () {\n        var options = this.options;\n        var cache = this._ticks;\n        var range = this.rangeIndices();\n        var lineBox = this.lineBox();\n        var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n        if (cache._hash !== hash) {\n            var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n            cache._hash = hash;\n            cache.labelTicks = this.getTickPositions(1);\n            cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n            cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n        }\n\n        return cache;\n    };\n\n    CategoryAxis.prototype.filterOutOfRangePositions = function filterOutOfRangePositions (positions, lineBox) {\n        if (!positions.length) {\n            return positions;\n        }\n\n        var axis = this.options.vertical ? Y : X;\n        var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n        var end = positions.length - 1;\n        var startIndex = 0;\n        while (!inRange(positions[startIndex]) && startIndex <= end) {\n            startIndex++;\n        }\n\n        var endIndex = end;\n\n        while (!inRange(positions[endIndex]) && endIndex >= 0) {\n            endIndex--;\n        }\n\n        return positions.slice(startIndex, endIndex + 1);\n    };\n\n    CategoryAxis.prototype.getSlot = function getSlot (from, to, limit) {\n        var options = this.options;\n        var reverse = options.reverse;\n        var justified = options.justified;\n        var vertical = options.vertical;\n        var ref = this.scaleOptions();\n        var scale = ref.scale;\n        var box = ref.box;\n        var min = ref.min;\n        var valueAxis = vertical ? Y : X;\n        var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n        var slotBox = box.clone();\n        var singleSlot = !defined(to);\n\n        var start = valueOrDefault(from, 0);\n        var end = valueOrDefault(to, start);\n        end = Math.max(end - 1, start);\n\n        // Fixes transient bug caused by iOS 6.0 JIT\n        // (one can never be too sure)\n        end = Math.max(start, end);\n\n        var p1 = lineStart + (start - min) * scale;\n        var p2 = lineStart + (end + 1 - min) * scale;\n\n        if (singleSlot && justified) {\n            p2 = p1;\n        }\n\n        if (limit) {\n            p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n            p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n        }\n\n        slotBox[valueAxis + 1] = reverse ? p2 : p1;\n        slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n        return slotBox;\n    };\n\n    CategoryAxis.prototype.limitSlot = function limitSlot (slot) {\n        var vertical = this.options.vertical;\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var limittedSlot = slot.clone();\n\n        limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n        limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n        return limittedSlot;\n    };\n\n    CategoryAxis.prototype.slot = function slot (from, to, limit) {\n        var min = Math.floor(this.options.min || 0);\n        var start = from;\n        var end = to;\n\n        if (typeof start === \"string\") {\n            start = this.categoryIndex(start);\n        } else if (isNumber(start)) {\n            start -= min;\n        }\n\n        if (typeof end === \"string\") {\n            end = this.categoryIndex(end);\n        } else if (isNumber(end)) {\n            end -= min;\n        }\n\n        return Axis.prototype.slot.call(this, start, end, limit);\n    };\n\n    CategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n        var ref = this.options;\n        var reverse = ref.reverse;\n        var justified = ref.justified;\n        var vertical = ref.vertical;\n        var valueAxis = vertical ? Y : X;\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var min = ref$1.min;\n        var max = ref$1.max;\n        var startValue = reverse ? max : min;\n        var lineStart = box[valueAxis + 1];\n        var lineEnd = box[valueAxis + 2];\n        var pos = point[valueAxis];\n\n        if (pos < lineStart || pos > lineEnd) {\n            return null;\n        }\n\n        var value = startValue + (pos - lineStart) / scale;\n        var diff = value % 1;\n\n        if (justified) {\n            value = Math.round(value);\n        } else if (diff === 0 && value > 0) {\n            value--;\n        }\n\n        return Math.floor(value);\n    };\n\n    CategoryAxis.prototype.getCategory = function getCategory (point) {\n        var index = this.pointCategoryIndex(point);\n\n        if (index === null) {\n            return null;\n        }\n\n        return this.options.categories[index];\n    };\n\n    CategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n        return this.totalIndex(value) - Math.floor(this.options.min || 0);\n    };\n\n    CategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n        var options = this.options;\n\n        return (total ? options.srcCategories : options.categories)[index];\n    };\n\n    CategoryAxis.prototype.categoriesCount = function categoriesCount () {\n        return (this.options.categories || []).length;\n    };\n\n    CategoryAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var size = options.vertical ? lineBox.height() : lineBox.width();\n        var range = options.categories.length;\n        var scale = size / range;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        return {\n            min: offset,\n            max: range + offset\n        };\n    };\n\n    CategoryAxis.prototype.zoomRange = function zoomRange (rate) {\n        var rangeIndices = this.totalRangeIndices();\n        var ref = this.totalRange();\n        var totalMin = ref.min;\n        var totalMax = ref.max;\n        var min = limitValue(rangeIndices.min + rate, totalMin, totalMax);\n        var max = limitValue(rangeIndices.max - rate, totalMin, totalMax);\n\n        if (max - min > 0) {\n            return {\n                min: min,\n                max: max\n            };\n        }\n    };\n\n    CategoryAxis.prototype.scaleRange = function scaleRange (scale) {\n        var range = this.options.categories.length;\n        var delta = scale * range;\n\n        return {\n            min: -delta,\n            max: range + delta\n        };\n    };\n\n    CategoryAxis.prototype.labelsCount = function labelsCount () {\n        var labelsRange = this.labelsRange();\n\n        return labelsRange.max - labelsRange.min;\n    };\n\n    CategoryAxis.prototype.labelsRange = function labelsRange () {\n        var options = this.options;\n        var justified = options.justified;\n        var labelOptions = options.labels;\n        var ref = this.totalRangeIndices(true);\n        var min = ref.min;\n        var max = ref.max;\n        var start = Math.floor(min);\n\n        if (!justified) {\n            min = Math.floor(min);\n            max = Math.ceil(max);\n        } else {\n            min = Math.ceil(min);\n            max = Math.floor(max);\n        }\n\n        var skip;\n\n        if (min > labelOptions.skip) {\n            skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n        } else {\n            skip = labelOptions.skip;\n        }\n\n        return {\n            min: skip - start,\n            max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n        };\n    };\n\n    CategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions) {\n        var options = this.options;\n        var dataItem = options.dataItems ? options.dataItems[index] : null;\n        var category = valueOrDefault(options.categories[index], \"\");\n        var text = this.axisLabelText(category, dataItem, labelOptions);\n\n        return new AxisLabel(category, text, index, dataItem, labelOptions);\n    };\n\n    CategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.totalRangeIndices();\n\n        return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n    };\n\n    CategoryAxis.prototype.noteSlot = function noteSlot (value) {\n        var options = this.options;\n        var index = value - Math.floor(options.min || 0);\n        return this.getSlot(index);\n    };\n\n    CategoryAxis.prototype.arrangeNotes = function arrangeNotes () {\n        Axis.prototype.arrangeNotes.call(this);\n        this.hideOutOfRangeNotes();\n    };\n\n    CategoryAxis.prototype.hideOutOfRangeNotes = function hideOutOfRangeNotes () {\n        var ref = this;\n        var notes = ref.notes;\n        var box = ref.box;\n        if (notes && notes.length) {\n            var valueAxis = this.options.vertical ? Y : X;\n            var start = box[valueAxis + 1];\n            var end = box[valueAxis + 2];\n\n            for (var idx = 0; idx < notes.length; idx++) {\n                var note = notes[idx];\n                if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n                    note.hide();\n                }\n            }\n        }\n    };\n\n    CategoryAxis.prototype.pan = function pan (delta) {\n        var range = this.totalRangeIndices(true);\n        var ref = this.scaleOptions();\n        var scale = ref.scale;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n        var totalRange = this.totalRange();\n        var min = range.min + offset;\n        var max = range.max + offset;\n\n        return this.limitRange(min, max, 0, totalRange.max, offset);\n    };\n\n    CategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var ref = this.options;\n        var reverse = ref.reverse;\n        var vertical = ref.vertical;\n        var valueAxis = vertical ? Y : X;\n        var range = this.totalRangeIndices(true);\n        var ref$1 = this.scaleOptions();\n        var scale = ref$1.scale;\n        var box = ref$1.box;\n        var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n        var diffStart = start[valueAxis] - lineStart;\n        var diffEnd = end[valueAxis] - lineStart;\n\n        var min = range.min + diffStart / scale;\n        var max = range.min + diffEnd / scale;\n        var rangeMin = Math.min(min, max);\n        var rangeMax = Math.max(min, max);\n\n        if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n            return {\n                min: rangeMin,\n                max: rangeMax\n            };\n        }\n    };\n\n    CategoryAxis.prototype.valueRange = function valueRange () {\n        return this.range();\n    };\n\n    CategoryAxis.prototype.totalIndex = function totalIndex (value) {\n        var options = this.options;\n        var index = this._categoriesMap ?\n            this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n        return index;\n    };\n\n    CategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n        var options = this.options;\n        var min = 0;\n\n        if (isNumber(options.min)) {\n            min = Math.floor(options.min);\n        }\n\n        var max;\n        if (isNumber(options.max)) {\n            max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n        } else {\n            max = this.totalCount() - 1;\n        }\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    CategoryAxis.prototype.mapCategories = function mapCategories () {\n        if (!this._categoriesMap) {\n            var map = this._categoriesMap = new HashMap();\n            var srcCategories = this.options.srcCategories;\n            for (var idx = 0; idx < srcCategories.length; idx++) {\n                map.set(srcCategories[idx], idx);\n            }\n        }\n    };\n\n    CategoryAxis.prototype.totalCount = function totalCount () {\n        return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n    };\n\n    return CategoryAxis;\n}(Axis));\n\nsetDefaultOptions(CategoryAxis, {\n    type: \"category\",\n    vertical: false,\n    majorGridLines: {\n        visible: false,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        zIndex: 1\n    },\n    justified: false,\n    _deferLabels: true\n});\n\nexport default CategoryAxis;\n","var COORDINATE_LIMIT = 300000;\n\nvar DateLabelFormats = {\n    milliseconds: \"HH:mm:ss.fff\",\n    seconds: \"HH:mm:ss\",\n    minutes: \"HH:mm\",\n    hours: \"HH:mm\",\n    days: \"M/d\",\n    weeks: \"M/d\",\n    months: \"MMM 'yy\",\n    years: \"yyyy\"\n};\n\nvar ZERO_THRESHOLD = 0.2;\n\nexport {\n    COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\n\nimport { DEFAULT_PRECISION, MAX_VALUE, OBJECT, DATE, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n    TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n    TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n    dateIndex, dateEquals, toTime, parseDate, parseDates } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nvar AUTO = \"auto\";\nvar BASE_UNITS = [\n    MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nvar FIT = \"fit\";\n\n\nfunction categoryRange(categories) {\n    var range = categories._range;\n    if (!range) {\n        range = categories._range = sparseArrayLimits(categories);\n        range.min = toDate(range.min);\n        range.max = toDate(range.max);\n    }\n\n    return range;\n}\n\nvar EmptyDateRange = function EmptyDateRange(options) {\n    this.options = options;\n};\n\nEmptyDateRange.prototype.displayIndices = function displayIndices () {\n    return {\n        min: 0,\n        max: 1\n    };\n};\n\nEmptyDateRange.prototype.displayRange = function displayRange () {\n    return {};\n};\n\nEmptyDateRange.prototype.total = function total () {\n    return {};\n};\n\nEmptyDateRange.prototype.valueRange = function valueRange () {\n    return {};\n};\n\nEmptyDateRange.prototype.valueIndex = function valueIndex () {\n    return -1;\n};\n\nEmptyDateRange.prototype.values = function values () {\n    return [];\n};\n\nEmptyDateRange.prototype.totalIndex = function totalIndex () {\n    return -1;\n};\n\nEmptyDateRange.prototype.valuesCount = function valuesCount () {\n    return 0;\n};\n\nEmptyDateRange.prototype.totalCount = function totalCount () {\n    return 0;\n};\n\nEmptyDateRange.prototype.dateAt = function dateAt () {\n    return null;\n};\n\nvar DateRange = function DateRange(start, end, options) {\n    this.options = options;\n    options.baseUnitStep = options.baseUnitStep || 1;\n\n    var roundToBaseUnit = options.roundToBaseUnit;\n    var justified = options.justified;\n\n    this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n    var lowerEnd = this.roundToTotalStep(end);\n    var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n    this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n    var min = options.min || start;\n    this.valueStart = this.roundToTotalStep(min);\n    this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n    var max = options.max;\n    if (!max) {\n        this.valueEnd = lowerEnd;\n        this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n    } else {\n        this.valueEnd = this.roundToTotalStep(max, false, !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0);\n        this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n    }\n\n    if (this.valueEnd < this.valueStart) {\n        this.valueEnd = this.valueStart;\n    }\n    if (this.displayEnd <= this.displayStart) {\n        this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n    }\n};\n\nDateRange.prototype.displayRange = function displayRange () {\n    return {\n        min: this.displayStart,\n        max: this.displayEnd\n    };\n};\n\nDateRange.prototype.displayIndices = function displayIndices () {\n    if (!this._indices) {\n        var options = this.options;\n\n        var baseUnit = options.baseUnit;\n            var baseUnitStep = options.baseUnitStep;\n\n        var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n        var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n        this._indices = { min: minIdx, max: maxIdx };\n    }\n\n    return this._indices;\n};\n\nDateRange.prototype.total = function total () {\n    return {\n        min: this.start,\n        max: this.end\n    };\n};\n\nDateRange.prototype.totalCount = function totalCount () {\n    var last = this.totalIndex(this.end);\n\n    return last + (this.options.justified ? 1 : 0);\n};\n\nDateRange.prototype.valueRange = function valueRange () {\n    return {\n        min: this.valueStart,\n        max: this.valueEnd\n    };\n};\n\nDateRange.prototype.valueIndex = function valueIndex (value) {\n    var options = this.options;\n    return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.totalIndex = function totalIndex (value) {\n    var options = this.options;\n    return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.dateIndex = function dateIndex$1 (value) {\n    var options = this.options;\n    return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n};\n\nDateRange.prototype.valuesCount = function valuesCount () {\n    var maxIdx = this.valueIndex(this.valueEnd);\n\n    return maxIdx + 1;\n};\n\nDateRange.prototype.values = function values () {\n    var values = this._values;\n    if (!values) {\n        var options = this.options;\n        var range = this.valueRange();\n        this._values = values = [];\n\n        for (var date = range.min; date <= range.max;) {\n            values.push(date);\n            date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n        }\n    }\n\n    return values;\n};\n\nDateRange.prototype.dateAt = function dateAt (index, total) {\n    var options = this.options;\n\n    return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n};\n\nDateRange.prototype.roundToTotalStep = function roundToTotalStep (value, upper, next) {\n    var ref = this.options;\n        var baseUnit = ref.baseUnit;\n        var baseUnitStep = ref.baseUnitStep;\n        var weekStartDay = ref.weekStartDay;\n    var start = this.start;\n\n    var step = dateIndex(value, start, baseUnit, baseUnitStep);\n    var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n    if (next) {\n        roundedStep += next;\n    }\n\n    return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n};\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n    var categoryLimits = categoryRange(options.categories);\n    var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n    var autoBaseUnitSteps = options.autoBaseUnitSteps;\n    var maxDateGroups = options.maxDateGroups;\n    var autoUnit = options.baseUnit === FIT;\n    var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n    var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n    var units = span / TIME_PER_UNIT[baseUnit];\n    var totalUnits = units;\n    var unitSteps, step, nextStep;\n\n    while (!step || units >= maxDateGroups) {\n        unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n        do {\n            nextStep = unitSteps.shift();\n        } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n        if (nextStep) {\n            step = nextStep;\n            units = totalUnits / step;\n        } else if (baseUnit === last(BASE_UNITS)) {\n            step = Math.ceil(totalUnits / maxDateGroups);\n            break;\n        } else if (autoUnit) {\n            baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n            totalUnits = span / TIME_PER_UNIT[baseUnit];\n            unitSteps = null;\n        } else {\n            if (units > maxDateGroups) {\n                step = Math.ceil(totalUnits / maxDateGroups);\n            }\n            break;\n        }\n    }\n\n    options.baseUnitStep = step;\n    options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n    var categories = options.categories;\n    var count = defined(categories) ? categories.length : 0;\n    var minDiff = MAX_VALUE;\n    var lastCategory, unit;\n\n    for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n        var category = categories[categoryIx];\n\n        if (category && lastCategory) {\n            var diff = absoluteDateDiff(category, lastCategory);\n            if (diff > 0) {\n                minDiff = Math.min(minDiff, diff);\n\n                if (minDiff >= TIME_PER_YEAR) {\n                    unit = YEARS;\n                } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n                    unit = MONTHS;\n                } else if (minDiff >= TIME_PER_WEEK) {\n                    unit = WEEKS;\n                } else if (minDiff >= TIME_PER_DAY) {\n                    unit = DAYS;\n                } else if (minDiff >= TIME_PER_HOUR) {\n                    unit = HOURS;\n                } else if (minDiff >= TIME_PER_MINUTE) {\n                    unit = MINUTES;\n                } else {\n                    unit = SECONDS;\n                }\n            }\n        }\n\n        lastCategory = category;\n    }\n\n    options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n    var baseUnit = (options.baseUnit || \"\").toLowerCase();\n    var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n    if (useDefault) {\n        defaultBaseUnit(options);\n    }\n\n    if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n        autoBaseUnit(options);\n    }\n\n    return options;\n}\n\nvar DateCategoryAxis = (function (CategoryAxis) {\n    function DateCategoryAxis () {\n        CategoryAxis.apply(this, arguments);\n    }\n\n    if ( CategoryAxis ) DateCategoryAxis.__proto__ = CategoryAxis;\n    DateCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n    DateCategoryAxis.prototype.constructor = DateCategoryAxis;\n\n    DateCategoryAxis.prototype.clone = function clone () {\n        var copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n        copy.createLabels();\n\n        return copy;\n    };\n\n    DateCategoryAxis.prototype.categoriesHash = function categoriesHash () {\n        var start = this.dataRange.total().min;\n        return this.options.baseUnit + this.options.baseUnitStep + start;\n    };\n\n    DateCategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n        return options;\n    };\n\n    DateCategoryAxis.prototype.initFields = function initFields () {\n        CategoryAxis.prototype.initFields.call(this);\n\n        var chartService = this.chartService;\n        var intlService = chartService.intl;\n        var options = this.options;\n\n        var categories = options.categories || [];\n        if (!categories._parsed) {\n            categories = parseDates(intlService, categories);\n            categories._parsed = true;\n        }\n\n        options = deepExtend({\n            roundToBaseUnit: true\n        }, options, {\n            categories: categories,\n            min: parseDate(intlService, options.min),\n            max: parseDate(intlService, options.max)\n        });\n\n        if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n            options.roundToBaseUnit = false;\n        }\n\n        options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n        options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n        this.options = options;\n        options.srcCategories = categories;\n\n        if (categories.length > 0) {\n            var range = categoryRange(categories);\n            var maxDivisions = options.maxDivisions;\n\n            this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n            if (maxDivisions) {\n                var dataRange = this.dataRange.displayRange();\n\n                var divisionOptions = Object.assign({}, options, {\n                    justified: true,\n                    roundToBaseUnit: false,\n                    baseUnit: 'fit',\n                    min: dataRange.min,\n                    max: dataRange.max,\n                    maxDateGroups: maxDivisions\n                });\n\n                var dataRangeOptions = this.dataRange.options;\n\n                autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n                this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n            } else {\n                this.divisionRange = this.dataRange;\n            }\n\n        } else {\n            options.baseUnit = options.baseUnit || DAYS;\n            this.dataRange = this.divisionRange = new EmptyDateRange(options);\n        }\n    };\n\n    DateCategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n        var ref = this;\n        var dataRange = ref.dataRange;\n        var divisionRange = ref.divisionRange;\n        var valuesCount = divisionRange.valuesCount();\n\n        if (!this.options.maxDivisions || !valuesCount) {\n            return CategoryAxis.prototype.tickIndices.call(this, stepSize);\n        }\n\n        var indices = [];\n        var values = divisionRange.values();\n        var offset = 0;\n\n        if (!this.options.justified) {\n            values = values.concat(divisionRange.dateAt(valuesCount));\n            offset = 0.5;//align ticks to the center of not justified categories\n        }\n\n        for (var idx = 0; idx < values.length; idx++) {\n            indices.push(dataRange.dateIndex(values[idx]) + offset);\n            if (stepSize !== 1 && idx >= 1) {\n                var last = indices.length - 1;\n                indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n            }\n        }\n\n        return indices;\n    };\n\n    DateCategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        var categories = this.options.categories || [];\n\n        return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n    };\n\n    DateCategoryAxis.prototype.parseNoteValue = function parseNoteValue (value) {\n        return parseDate(this.chartService.intl, value);\n    };\n\n    DateCategoryAxis.prototype.noteSlot = function noteSlot (value) {\n        return this.getSlot(value);\n    };\n\n    DateCategoryAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var baseUnit = options.baseUnit;\n        var weekStartDay = options.weekStartDay;\n        var vertical = options.vertical;\n        var lineBox = this.lineBox();\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var range = this.range();\n        var scale = size / (range.max - range.min);\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if (range.min && range.max) {\n            var from = addTicks(options.min || range.min, offset);\n            var to = addTicks(options.max || range.max, offset);\n\n            range = {\n                min: addDuration(from, 0, baseUnit, weekStartDay),\n                max: addDuration(to, 0, baseUnit, weekStartDay)\n            };\n        }\n\n        return range;\n    };\n\n    DateCategoryAxis.prototype.scaleRange = function scaleRange (delta) {\n        var rounds = Math.abs(delta);\n        var result = this.range();\n        var from = result.min;\n        var to = result.max;\n\n        if (from && to) {\n            while (rounds--) {\n                var range = dateDiff(from, to);\n                var step = Math.round(range * 0.1);\n                if (delta < 0) {\n                    from = addTicks(from, step);\n                    to = addTicks(to, -step);\n                } else {\n                    from = addTicks(from, -step);\n                    to = addTicks(to, step);\n                }\n            }\n\n            result = { min: from, max: to };\n        }\n\n        return result;\n    };\n\n    DateCategoryAxis.prototype.labelsRange = function labelsRange () {\n        return {\n            min: this.options.labels.skip,\n            max: this.divisionRange.valuesCount()\n        };\n    };\n\n    DateCategoryAxis.prototype.pan = function pan (delta) {\n        if (this.isEmpty()) {\n            return null;\n        }\n\n        var options = this.options;\n        var lineBox = this.lineBox();\n        var size = options.vertical ? lineBox.height() : lineBox.width();\n        var ref = this.dataRange.displayRange();\n        var min = ref.min;\n        var max = ref.max;\n        var totalLimits = this.dataRange.total();\n        var scale = size / (max - min);\n        var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n        var from = addTicks(min, offset);\n        var to = addTicks(max, offset);\n\n        var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n        if (panRange) {\n            panRange.min = toDate(panRange.min);\n            panRange.max = toDate(panRange.max);\n            panRange.baseUnit = options.baseUnit;\n            panRange.baseUnitStep = options.baseUnitStep || 1;\n            panRange.userSetBaseUnit = options.userSetBaseUnit;\n            panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n            return panRange;\n        }\n    };\n\n    DateCategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n        if (this.isEmpty()) {\n            return null;\n        }\n\n        var pointsRange = CategoryAxis.prototype.pointsRange.call(this, start, end);\n        var datesRange = this.dataRange.displayRange();\n        var indicesRange = this.dataRange.displayIndices();\n        var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n        var options = this.options;\n\n        var min = addTicks(datesRange.min, pointsRange.min * scale);\n        var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n        return {\n            min: min,\n            max: max,\n            baseUnit: options.userSetBaseUnit || options.baseUnit,\n            baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n        };\n    };\n\n    DateCategoryAxis.prototype.zoomRange = function zoomRange (delta) {\n        if (this.isEmpty()) {\n            return null;\n        }\n\n        var options = this.options;\n        var fit = options.userSetBaseUnit === FIT;\n        var totalLimits = this.dataRange.total();\n        var ref = this.dataRange.displayRange();\n        var rangeMin = ref.min;\n        var rangeMax = ref.max;\n        var ref$1 = this.dataRange.options;\n        var weekStartDay = ref$1.weekStartDay;\n        var baseUnit = ref$1.baseUnit;\n        var baseUnitStep = ref$1.baseUnitStep;\n        var min = addDuration(rangeMin, delta * baseUnitStep, baseUnit, weekStartDay);\n        var max = addDuration(rangeMax, -delta * baseUnitStep, baseUnit, weekStartDay);\n\n        if (fit) {\n            var autoBaseUnitSteps = options.autoBaseUnitSteps;\n            var maxDateGroups = options.maxDateGroups;\n\n            var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n            var rangeDiff = dateDiff(rangeMax, rangeMin);\n            var diff = dateDiff(max, min);\n            var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n            var autoBaseUnitStep, ticks;\n\n            if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n                baseUnit = BASE_UNITS[baseUnitIndex - 1];\n                autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n                ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n                min = addTicks(rangeMin, ticks);\n                max = addTicks(rangeMax, -ticks);\n\n            } else if (diff > maxDiff && baseUnit !== YEARS) {\n                var stepIndex = 0;\n\n                do {\n                    baseUnitIndex++;\n                    baseUnit = BASE_UNITS[baseUnitIndex];\n                    stepIndex = 0;\n                    ticks = 2 * TIME_PER_UNIT[baseUnit];\n                    do {\n                        autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n                        stepIndex++;\n                    } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n                } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n                ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n                if (ticks > 0) {\n                    min = addTicks(rangeMin, -ticks);\n                    max = addTicks(rangeMax, ticks);\n                    min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n                    max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n                }\n            }\n        }\n\n        if (min < totalLimits.min) {\n            min = totalLimits.min;\n        }\n        if (max > totalLimits.max) {\n            max = totalLimits.max;\n        }\n\n        if (min && max && dateDiff(max, min) > 0) {\n            return {\n                min: min,\n                max: max,\n                baseUnit: options.userSetBaseUnit || options.baseUnit,\n                baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n            };\n        }\n    };\n\n    DateCategoryAxis.prototype.range = function range () {\n        return this.dataRange.displayRange();\n    };\n\n    DateCategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions) {\n        var options = this.options;\n        var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n        var date = this.divisionRange.dateAt(index);\n        var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n        labelOptions.format = labelOptions.format || unitFormat;\n        var text = this.axisLabelText(date, dataItem, labelOptions);\n        if (text) {\n            return new AxisLabel(date, text, index, dataItem, labelOptions);\n        }\n    };\n\n    DateCategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n        return this.dataRange.valueIndex(value);\n    };\n\n    DateCategoryAxis.prototype.slot = function slot (from, to, limit) {\n        var dateRange = this.dataRange;\n        var start = from;\n        var end = to;\n\n        if (start instanceof Date) {\n            start = dateRange.dateIndex(start);\n        }\n\n        if (end instanceof Date) {\n            end = dateRange.dateIndex(end);\n        }\n\n        var slot = this.getSlot(start, end, limit);\n        if (slot) {\n            return slot.toRect();\n        }\n    };\n\n    DateCategoryAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        var start = a;\n        var end = b;\n\n        if (typeof start === OBJECT) {\n            start = this.categoryIndex(start);\n        }\n\n        if (typeof end === OBJECT) {\n            end = this.categoryIndex(end);\n        }\n\n        return CategoryAxis.prototype.getSlot.call(this, start, end, limit);\n    };\n\n    DateCategoryAxis.prototype.valueRange = function valueRange () {\n        var options = this.options;\n        var range = categoryRange(options.srcCategories);\n\n        return {\n            min: toDate(range.min),\n            max: toDate(range.max)\n        };\n    };\n\n    DateCategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n        return this.dataRange.dateAt(index, total);\n    };\n\n    DateCategoryAxis.prototype.categoriesCount = function categoriesCount () {\n        return this.dataRange.valuesCount();\n    };\n\n    DateCategoryAxis.prototype.rangeIndices = function rangeIndices () {\n        return this.dataRange.displayIndices();\n    };\n\n    DateCategoryAxis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n        return !this.divisionRange.options.justified;\n    };\n\n    DateCategoryAxis.prototype.prepareUserOptions = function prepareUserOptions () {\n        if (this.isEmpty()) {\n            return;\n        }\n\n        this.options.categories = this.dataRange.values();\n    };\n\n    DateCategoryAxis.prototype.getCategory = function getCategory (point) {\n        var index = this.pointCategoryIndex(point);\n\n        if (index === null) {\n            return null;\n        }\n\n        return this.dataRange.dateAt(index);\n    };\n\n    DateCategoryAxis.prototype.totalIndex = function totalIndex (value) {\n        return this.dataRange.totalIndex(value);\n    };\n\n    DateCategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n        var range = this.dataRange.valueRange();\n        return {\n            min: this.dataRange.totalIndex(range.min),\n            max: this.dataRange.totalIndex(range.max)\n        };\n    };\n\n    DateCategoryAxis.prototype.totalRange = function totalRange () {\n        return this.dataRange.total();\n    };\n\n    DateCategoryAxis.prototype.totalCount = function totalCount () {\n        return this.dataRange.totalCount();\n    };\n\n    DateCategoryAxis.prototype.isEmpty = function isEmpty () {\n        return !this.options.srcCategories.length;\n    };\n\n    DateCategoryAxis.prototype.roundedRange = function roundedRange () {\n        if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n            return this.range();\n        }\n\n        var options = this.options;\n        var datesRange = categoryRange(options.srcCategories);\n\n        var dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n            justified: false,\n            roundToBaseUnit: true,\n            justifyEnd: options.justified\n        }));\n\n        return dateRange.displayRange();\n    };\n\n    return DateCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(DateCategoryAxis, {\n    type: DATE,\n    labels: {\n        dateFormats: DateLabelFormats\n    },\n    autoBaseUnitSteps: {\n        milliseconds: [ 1, 10, 100 ],\n        seconds: [ 1, 2, 5, 15, 30 ],\n        minutes: [ 1, 2, 5, 15, 30 ],\n        hours: [ 1, 2, 3 ],\n        days: [ 1, 2, 3 ],\n        weeks: [ 1, 2 ],\n        months: [ 1, 2, 3, 6 ],\n        years: [ 1, 2, 3, 5, 10, 25, 50 ]\n    },\n    maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n    return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n    return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n    return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION, X, Y } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nvar MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nvar NumericAxis = (function (Axis) {\n    function NumericAxis(seriesMin, seriesMax, options, chartService) {\n        Axis.call(this, Object.assign({}, options, {\n            seriesMin: seriesMin,\n            seriesMax: seriesMax\n        }), chartService);\n    }\n\n    if ( Axis ) NumericAxis.__proto__ = Axis;\n    NumericAxis.prototype = Object.create( Axis && Axis.prototype );\n    NumericAxis.prototype.constructor = NumericAxis;\n\n    NumericAxis.prototype.initUserOptions = function initUserOptions (options) {\n        var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n        this.totalOptions = totalAxisOptions(autoOptions, options);\n\n        return axisOptions(autoOptions, options);\n    };\n\n    NumericAxis.prototype.initFields = function initFields () {\n        this.totalMin = this.totalOptions.min;\n        this.totalMax = this.totalOptions.max;\n        this.totalMajorUnit = this.totalOptions.majorUnit;\n        this.seriesMin = this.options.seriesMin;\n        this.seriesMax = this.options.seriesMax;\n    };\n\n    NumericAxis.prototype.clone = function clone () {\n        return new NumericAxis(\n            this.seriesMin,\n            this.seriesMax,\n            Object.assign({}, this.options),\n            this.chartService\n        );\n    };\n\n    NumericAxis.prototype.startValue = function startValue () {\n        return 0;\n    };\n\n    NumericAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    NumericAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        if (stepValue === 0) {\n            return 1;\n        }\n\n        var options = this.options;\n        var range = options.max - options.min;\n\n        return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n    };\n\n    NumericAxis.prototype.getTickPositions = function getTickPositions (unit, skipUnit) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var lineBox = this.lineBox();\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var range = options.max - options.min;\n        var scale = lineSize / range;\n        var step = unit * scale;\n        var divisions = this.getDivisions(unit);\n        var dir = (vertical ? -1 : 1) * (reverse ? -1 : 1);\n        var startEdge = dir === 1 ? 1 : 2;\n        var positions = [];\n        var pos = lineBox[(vertical ? Y : X) + startEdge];\n        var skipStep = 0;\n\n        if (skipUnit) {\n            skipStep = skipUnit / unit;\n        }\n\n        for (var idx = 0; idx < divisions; idx++) {\n            if (idx % skipStep !== 0) {\n                positions.push(round(pos, COORD_PRECISION));\n            }\n\n            pos = pos + step * dir;\n        }\n\n        return positions;\n    };\n\n    NumericAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    NumericAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTickPositions(this.options.minorUnit);\n    };\n\n    NumericAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        if ( limit === void 0 ) limit = false;\n\n        var options = this.options;\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var lineStart = lineBox[valueAxis + (reverse ? 2 : 1)];\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var dir = reverse ? -1 : 1;\n        var step = dir * (lineSize / (options.max - options.min));\n        var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n\n        var start = a;\n        var end = b;\n\n        if (!defined(start)) {\n            start = end || 0;\n        }\n\n        if (!defined(end)) {\n            end = start || 0;\n        }\n\n        if (limit) {\n            start = Math.max(Math.min(start, options.max), options.min);\n            end = Math.max(Math.min(end, options.max), options.min);\n        }\n\n        var p1, p2;\n\n        if (vertical) {\n            p1 = options.max - Math.max(start, end);\n            p2 = options.max - Math.min(start, end);\n        } else {\n            p1 = Math.min(start, end) - options.min;\n            p2 = Math.max(start, end) - options.min;\n        }\n\n        slotBox[valueAxis + 1] = limitCoordinate(lineStart + step * (reverse ? p2 : p1));\n        slotBox[valueAxis + 2] = limitCoordinate(lineStart + step * (reverse ? p1 : p2));\n\n        return slotBox;\n    };\n\n    NumericAxis.prototype.getValue = function getValue (point) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var max = Number(options.max);\n        var min = Number(options.min);\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var lineStart = lineBox[valueAxis + (reverse ? 2 : 1)];\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var dir = reverse ? -1 : 1;\n        var offset = dir * (point[valueAxis] - lineStart);\n        var step = (max - min) / lineSize;\n        var valueOffset = offset * step;\n\n        if (offset < 0 || offset > lineSize) {\n            return null;\n        }\n\n        var value = vertical ?\n                max - valueOffset :\n                min + valueOffset;\n\n        return round(value, DEFAULT_PRECISION);\n    };\n\n    NumericAxis.prototype.translateRange = function translateRange (delta) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var reverse = options.reverse;\n        var max = options.max;\n        var min = options.min;\n        var lineBox = this.lineBox();\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var range = max - min;\n        var scale = size / range;\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if ((vertical || reverse) && !(vertical && reverse )) {\n            offset = -offset;\n        }\n\n        return {\n            min: min + offset,\n            max: max + offset,\n            offset: offset\n        };\n    };\n\n    NumericAxis.prototype.scaleRange = function scaleRange (delta) {\n        var options = this.options;\n        var offset = -delta * options.majorUnit;\n\n        return {\n            min: options.min - offset,\n            max: options.max + offset\n        };\n    };\n\n    NumericAxis.prototype.labelsCount = function labelsCount () {\n        return this.getDivisions(this.options.majorUnit);\n    };\n\n    NumericAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions) {\n        var options = this.options;\n        var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n        var text = this.axisLabelText(value, null, labelOptions);\n\n        return new AxisLabel(value, text, index, null, labelOptions);\n    };\n\n    NumericAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        return range.min <= value && value <= range.max;\n    };\n\n    NumericAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta);\n        return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n    };\n\n    NumericAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        if (this.isValidRange(min, max)) {\n            return {\n                min: min,\n                max: max\n            };\n        }\n    };\n\n    NumericAxis.prototype.zoomRange = function zoomRange (delta) {\n        var ref = this;\n        var totalMin = ref.totalMin;\n        var totalMax = ref.totalMax;\n        var newRange = this.scaleRange(delta);\n        var min = limitValue(newRange.min, totalMin, totalMax);\n        var max = limitValue(newRange.max, totalMin, totalMax);\n\n        if (this.isValidRange(min, max)) {\n            return {\n                min: min,\n                max: max\n            };\n        }\n    };\n\n    NumericAxis.prototype.isValidRange = function isValidRange (min, max) {\n        return max - min > MIN_VALUE_RANGE;\n    };\n\n    return NumericAxis;\n}(Axis));\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n    var narrowRange = options.narrowRange;\n\n    var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n    var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n    var majorUnit = autoMajorUnit(autoMin, autoMax);\n    var autoOptions = {\n        majorUnit: majorUnit\n    };\n\n    if (options.roundToMajorUnit !== false) {\n        if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n            autoMin -= majorUnit;\n        }\n\n        if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n            autoMax += majorUnit;\n        }\n    }\n\n    autoOptions.min = floor(autoMin, majorUnit);\n    autoOptions.max = ceil(autoMax, majorUnit);\n\n    return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n    return {\n        min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n        max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n        majorUnit: autoOptions.majorUnit\n    };\n}\n\nfunction clearNullValues(options, fields) {\n    for (var idx = 0; idx < fields.length; idx++) {\n        var field = fields[idx];\n        if (options[field] === null) {\n            options[field] = undefined;\n        }\n    }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n    var options = userOptions;\n    var userSetMin, userSetMax;\n\n    if (userOptions) {\n        clearNullValues(userOptions, [ 'min', 'max' ]);\n\n        userSetMin = defined(userOptions.min);\n        userSetMax = defined(userOptions.max);\n\n        var userSetLimits = userSetMin || userSetMax;\n\n        if (userSetLimits) {\n            if (userOptions.min === userOptions.max) {\n                if (userOptions.min > 0) {\n                    userOptions.min = 0;\n                } else {\n                    userOptions.max = 1;\n                }\n            }\n        }\n\n        if (userOptions.majorUnit) {\n            autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n            autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n        } else if (userSetLimits) {\n            options = deepExtend(autoOptions, userOptions);\n\n            // Determine an auto major unit after min/max have been set\n            autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n        }\n    }\n\n    autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n    var result = deepExtend(autoOptions, options);\n    if (result.min >= result.max) {\n        if (userSetMin && !userSetMax) {\n            result.max = result.min + result.majorUnit;\n        } else if (!userSetMin && userSetMax) {\n            result.min = result.max - result.majorUnit;\n        }\n    }\n\n    return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n    var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n    var threshold = divisor * (1 - ratio);\n\n    return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n    type: \"numeric\",\n    min: 0,\n    max: 1,\n    vertical: true,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        format: \"#.####################\"\n    },\n    zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n    if (!min && !max) {\n        return 0;\n    }\n\n    var axisMin;\n\n    if (min >= 0 && max >= 0) {\n        var minValue = min === max ? 0 : min;\n\n        var diff = (max - minValue) / max;\n        if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n            return 0;\n        }\n\n        axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n    } else {\n        axisMin = min;\n    }\n\n    return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n    if (!min && !max) {\n        return 1;\n    }\n\n    var axisMax;\n\n    if (min <= 0 && max <= 0) {\n        var maxValue = min === max ? 0 : max;\n\n        var diff = Math.abs((maxValue - min) / maxValue);\n        if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n            return 0;\n        }\n\n        axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n    } else {\n        axisMax = max;\n    }\n\n    return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nvar DateValueAxis = (function (Axis) {\n    function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {\n        var min = toDate(seriesMin);\n        var max = toDate(seriesMax);\n\n        var intlService = chartService.intl;\n        var options = axisOptions || {};\n        options = deepExtend(options || {}, {\n            min: parseDate(intlService, options.min),\n            max: parseDate(intlService, options.max),\n            axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue)\n        });\n        options = applyDefaults(min, max, options);\n\n        Axis.call(this, options, chartService);\n\n        this.intlService = intlService;\n        this.seriesMin = min;\n        this.seriesMax = max;\n\n        var weekStartDay = options.weekStartDay || 0;\n        this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n        this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n    }\n\n    if ( Axis ) DateValueAxis.__proto__ = Axis;\n    DateValueAxis.prototype = Object.create( Axis && Axis.prototype );\n    DateValueAxis.prototype.constructor = DateValueAxis;\n\n    DateValueAxis.prototype.clone = function clone () {\n        return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n    };\n\n    DateValueAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    DateValueAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        var options = this.options;\n\n        return Math.floor(\n            duration(options.min, options.max, options.baseUnit) / stepValue + 1\n        );\n    };\n\n    DateValueAxis.prototype.getTickPositions = function getTickPositions (step) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var lineBox = this.lineBox();\n        var dir = (vertical ? -1 : 1) * (options.reverse ? -1 : 1);\n        var startEdge = dir === 1 ? 1 : 2;\n        var start = lineBox[(vertical ? Y : X) + startEdge];\n        var divisions = this.getDivisions(step);\n        var timeRange = dateDiff(options.max, options.min);\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var scale = lineSize / timeRange;\n        var weekStartDay = options.weekStartDay || 0;\n\n        var positions = [ start ];\n        for (var i = 1; i < divisions; i++) {\n            var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n            var pos = start + dateDiff(date, options.min) * scale * dir;\n\n            positions.push(round(pos, COORD_PRECISION));\n        }\n\n        return positions;\n    };\n\n    DateValueAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    DateValueAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n        return this.getTickPositions(this.options.minorUnit);\n    };\n\n    DateValueAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        return NumericAxis.prototype.getSlot.call(\n            this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n        );\n    };\n\n    DateValueAxis.prototype.getValue = function getValue (point) {\n        var value = NumericAxis.prototype.getValue.call(this, point);\n\n        return value !== null ? toDate(value) : null;\n    };\n\n    DateValueAxis.prototype.labelsCount = function labelsCount () {\n        return this.getDivisions(this.options.majorUnit);\n    };\n\n    DateValueAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions) {\n        var options = this.options;\n        var offset = index * options.majorUnit;\n        var weekStartDay = options.weekStartDay || 0;\n        var date = options.min;\n\n        if (offset > 0) {\n            date = addDuration(date, offset, options.baseUnit, weekStartDay);\n        }\n\n        var unitFormat = labelOptions.dateFormats[options.baseUnit];\n        labelOptions.format = labelOptions.format || unitFormat;\n\n        var text = this.axisLabelText(date, null, labelOptions);\n        return new AxisLabel(date, text, index, null, labelOptions);\n    };\n\n    DateValueAxis.prototype.translateRange = function translateRange (delta, exact) {\n        var options = this.options;\n        var baseUnit = options.baseUnit;\n        var weekStartDay = options.weekStartDay || 0;\n        var lineBox = this.lineBox();\n        var size = options.vertical ? lineBox.height() : lineBox.width();\n        var range = this.range();\n        var scale = size / dateDiff(range.max, range.min);\n        var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n        var from = addTicks(options.min, offset);\n        var to = addTicks(options.max, offset);\n\n        if (!exact) {\n            from = addDuration(from, 0, baseUnit, weekStartDay);\n            to = addDuration(to, 0, baseUnit, weekStartDay);\n        }\n\n        return {\n            min: from,\n            max: to,\n            offset: offset\n        };\n    };\n\n    DateValueAxis.prototype.scaleRange = function scaleRange (delta) {\n        var ref = this.options;\n        var from = ref.min;\n        var to = ref.max;\n        var rounds = Math.abs(delta);\n\n        while (rounds--) {\n            var range = dateDiff(from, to);\n            var step = Math.round(range * 0.1);\n            if (delta < 0) {\n                from = addTicks(from, step);\n                to = addTicks(to, -step);\n            } else {\n                from = addTicks(from, -step);\n                to = addTicks(to, step);\n            }\n        }\n\n        return { min: from, max: to };\n    };\n\n    DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n\n        return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n    };\n\n    DateValueAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta, true);\n        var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n        if (limittedRange) {\n            return {\n                min: toDate(limittedRange.min),\n                max: toDate(limittedRange.max)\n            };\n        }\n    };\n\n    DateValueAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        return {\n            min: toDate(min),\n            max: toDate(max)\n        };\n    };\n\n    DateValueAxis.prototype.zoomRange = function zoomRange (delta) {\n        var range = this.scaleRange(delta);\n        var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n        var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    return DateValueAxis;\n}(Axis));\n\nfunction timeUnits(delta) {\n    var unit = HOURS;\n\n    if (delta >= TIME_PER_YEAR) {\n        unit = YEARS;\n    } else if (delta >= TIME_PER_MONTH) {\n        unit = MONTHS;\n    } else if (delta >= TIME_PER_WEEK) {\n        unit = WEEKS;\n    } else if (delta >= TIME_PER_DAY) {\n        unit = DAYS;\n    }\n\n    return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n    var min = options.min || seriesMin;\n    var max = options.max || seriesMax;\n    var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n    var baseUnitTime = TIME_PER_UNIT[baseUnit];\n    var weekStartDay = options.weekStartDay || 0;\n    var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n    var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n    var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n    var majorUnit = userMajorUnit || ceil(\n                        autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n                        baseUnitTime\n                    ) / baseUnitTime;\n    var actualUnits = duration(autoMin, autoMax, baseUnit);\n    var totalUnits = ceil(actualUnits, majorUnit);\n    var unitsToAdd = totalUnits - actualUnits;\n    var head = Math.floor(unitsToAdd / 2);\n    var tail = unitsToAdd - head;\n\n    if (!options.baseUnit) {\n        delete options.baseUnit;\n    }\n\n    options.baseUnit = options.baseUnit || baseUnit;\n    options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n    options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n    options.minorUnit = options.minorUnit || majorUnit / 5;\n    options.majorUnit = majorUnit;\n\n    return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n    type: DATE,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    labels: {\n        dateFormats: DateLabelFormats\n    }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar DEFAULT_MAJOR_UNIT = 10;\n\nvar LogarithmicAxis = (function (Axis) {\n    function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {\n\n        var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n        var base = axisOptions.majorUnit;\n        var autoMax = autoAxisMax(seriesMax, base);\n        var autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n        var range = initRange(autoMin, autoMax, axisOptions, options);\n\n        axisOptions.max = range.max;\n        axisOptions.min = range.min;\n        axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n        Axis.call(this, axisOptions, chartService);\n\n        this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n        this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n        this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n        this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n        this.seriesMin = seriesMin;\n        this.seriesMax = seriesMax;\n\n        this.createLabels();\n    }\n\n    if ( Axis ) LogarithmicAxis.__proto__ = Axis;\n    LogarithmicAxis.prototype = Object.create( Axis && Axis.prototype );\n    LogarithmicAxis.prototype.constructor = LogarithmicAxis;\n\n    LogarithmicAxis.prototype.clone = function clone () {\n        return new LogarithmicAxis(\n            this.seriesMin,\n            this.seriesMax,\n            Object.assign({}, this.options),\n            this.chartService\n        );\n    };\n\n    LogarithmicAxis.prototype.startValue = function startValue () {\n        return this.options.min;\n    };\n\n    LogarithmicAxis.prototype.getSlot = function getSlot (a, b, limit) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var reverse = options.reverse;\n        var vertical = options.vertical;\n        var base = options.majorUnit;\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var lineStart = lineBox[valueAxis + (reverse ? 2 : 1)];\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var dir = reverse ? -1 : 1;\n        var step = dir * (lineSize / (logMax - logMin));\n        var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n        var start = a;\n        var end = b;\n\n        if (!defined(start)) {\n            start = end || 1;\n        }\n\n        if (!defined(end)) {\n            end = start || 1;\n        }\n\n        if (start <= 0 || end <= 0) {\n            return null;\n        }\n\n        if (limit) {\n            start = Math.max(Math.min(start, options.max), options.min);\n            end = Math.max(Math.min(end, options.max), options.min);\n        }\n\n        start = log(start, base);\n        end = log(end, base);\n\n        var p1, p2;\n\n        if (vertical) {\n            p1 = logMax - Math.max(start, end);\n            p2 = logMax - Math.min(start, end);\n        } else {\n            p1 = Math.min(start, end) - logMin;\n            p2 = Math.max(start, end) - logMin;\n        }\n\n        slotBox[valueAxis + 1] = limitCoordinate(lineStart + step * (reverse ? p2 : p1));\n        slotBox[valueAxis + 2] = limitCoordinate(lineStart + step * (reverse ? p1 : p2));\n\n        return slotBox;\n    };\n\n    LogarithmicAxis.prototype.getValue = function getValue (point) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var reverse = options.reverse;\n        var vertical = options.vertical;\n        var base = options.majorUnit;\n        var lineBox = this.lineBox();\n        var dir = vertical === reverse ? 1 : -1;\n        var startEdge = dir === 1 ? 1 : 2;\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var step = ((logMax - logMin) / lineSize);\n        var valueAxis = vertical ? Y : X;\n        var lineStart = lineBox[valueAxis + startEdge];\n        var offset = dir * (point[valueAxis] - lineStart);\n        var valueOffset = offset * step;\n\n        if (offset < 0 || offset > lineSize) {\n            return null;\n        }\n\n        var value = logMin + valueOffset;\n\n        return round(Math.pow(base, value), DEFAULT_PRECISION);\n    };\n\n    LogarithmicAxis.prototype.range = function range () {\n        var options = this.options;\n        return { min: options.min, max: options.max };\n    };\n\n    LogarithmicAxis.prototype.scaleRange = function scaleRange (delta) {\n        var base = this.options.majorUnit;\n        var offset = -delta;\n\n        return {\n            min: Math.pow(base, this.logMin - offset),\n            max: Math.pow(base, this.logMax + offset)\n        };\n    };\n\n    LogarithmicAxis.prototype.translateRange = function translateRange (delta) {\n        var ref = this;\n        var options = ref.options;\n        var logMin = ref.logMin;\n        var logMax = ref.logMax;\n        var reverse = options.reverse;\n        var vertical = options.vertical;\n        var base = options.majorUnit;\n        var lineBox = this.lineBox();\n        var size = vertical ? lineBox.height() : lineBox.width();\n        var scale = size / (logMax - logMin);\n        var offset = round(delta / scale, DEFAULT_PRECISION);\n\n        if ((vertical || reverse) && !(vertical && reverse )) {\n            offset = -offset;\n        }\n\n        return {\n            min: Math.pow(base, logMin + offset),\n            max: Math.pow(base, logMax + offset),\n            offset: offset\n        };\n    };\n\n    LogarithmicAxis.prototype.labelsCount = function labelsCount () {\n        var floorMax = Math.floor(this.logMax);\n        var count = Math.floor(floorMax - this.logMin) + 1;\n\n        return count;\n    };\n\n    LogarithmicAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n        var ticks = [];\n\n        this.traverseMajorTicksPositions(function (position) {\n            ticks.push(position);\n        }, { step: 1, skip: 0 });\n\n        return ticks;\n    };\n\n    LogarithmicAxis.prototype.createTicks = function createTicks (lineGroup) {\n        var options = this.options;\n        var majorTicks = options.majorTicks;\n        var minorTicks = options.minorTicks;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var lineBox = this.lineBox();\n        var ticks = [];\n        var tickLineOptions = {\n            // TODO\n            // _alignLines: options._alignLines,\n            vertical: vertical\n        };\n\n        function render(tickPosition, tickOptions) {\n            tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n            tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n            tickLineOptions.position = tickPosition;\n\n            lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n        }\n\n        if (majorTicks.visible) {\n            this.traverseMajorTicksPositions(render, majorTicks);\n        }\n\n        if (minorTicks.visible) {\n            this.traverseMinorTicksPositions(render, minorTicks);\n        }\n\n        return ticks;\n    };\n\n    LogarithmicAxis.prototype.createGridLines = function createGridLines (altAxis) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var vertical = options.vertical;\n        var lineBox = altAxis.lineBox();\n        var lineOptions = {\n            lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n            lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n            vertical: vertical\n        };\n        var majorTicks = [];\n\n        var container = this.gridLinesVisual();\n        function render(tickPosition, gridLine) {\n            if (!inArray(tickPosition, majorTicks)) {\n                lineOptions.position = tickPosition;\n                container.append(createAxisGridLine(lineOptions, gridLine));\n\n                majorTicks.push(tickPosition);\n            }\n        }\n\n        if (majorGridLines.visible) {\n            this.traverseMajorTicksPositions(render, majorGridLines);\n        }\n\n        if (minorGridLines.visible) {\n            this.traverseMinorTicksPositions(render, minorGridLines);\n        }\n\n        return container.children;\n    };\n\n    LogarithmicAxis.prototype.traverseMajorTicksPositions = function traverseMajorTicksPositions (callback, tickOptions) {\n        var ref = this._lineOptions();\n        var lineStart = ref.lineStart;\n        var step = ref.step;\n        var ref$1 = this;\n        var logMin = ref$1.logMin;\n        var logMax = ref$1.logMax;\n\n        for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n            var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n            callback(position, tickOptions);\n        }\n    };\n\n    LogarithmicAxis.prototype.traverseMinorTicksPositions = function traverseMinorTicksPositions (callback, tickOptions) {\n        var this$1 = this;\n\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var minorUnit = ref.minorUnit;\n        var base = ref.majorUnit;\n        var ref$1 = this._lineOptions();\n        var lineStart = ref$1.lineStart;\n        var step = ref$1.step;\n        var ref$2 = this;\n        var logMin = ref$2.logMin;\n        var logMax = ref$2.logMax;\n        var start = Math.floor(logMin);\n\n        for (var power = start; power < logMax; power++) {\n            var minorOptions = this$1._minorIntervalOptions(power);\n            for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n                var value = minorOptions.value + idx * minorOptions.minorStep;\n                if (value > max) {\n                    break;\n                }\n                if (value >= min) {\n                    var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n                    callback(position, tickOptions);\n                }\n            }\n        }\n    };\n\n    LogarithmicAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions) {\n        var power = Math.ceil(this.logMin + index);\n        var value = Math.pow(this.options.majorUnit, power);\n        var text = this.axisLabelText(value, null, labelOptions);\n\n        return new AxisLabel(value, text, index, null, labelOptions);\n    };\n\n    LogarithmicAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n        var range = this.range();\n        return range.min <= value && value <= range.max;\n    };\n\n    LogarithmicAxis.prototype.pan = function pan (delta) {\n        var range = this.translateRange(delta);\n        return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n    };\n\n    LogarithmicAxis.prototype.pointsRange = function pointsRange (start, end) {\n        var startValue = this.getValue(start);\n        var endValue = this.getValue(end);\n        var min = Math.min(startValue, endValue);\n        var max = Math.max(startValue, endValue);\n\n        return {\n            min: min,\n            max: max\n        };\n    };\n\n    LogarithmicAxis.prototype.zoomRange = function zoomRange (delta) {\n        var ref = this;\n        var options = ref.options;\n        var totalMin = ref.totalMin;\n        var totalMax = ref.totalMax;\n        var newRange = this.scaleRange(delta);\n        var min = limitValue(newRange.min, totalMin, totalMax);\n        var max = limitValue(newRange.max, totalMin, totalMax);\n        var base = options.majorUnit;\n        var acceptOptionsRange = max > min && options.min && options.max && (round(log(options.max, base) - log(options.min, base), DEFAULT_PRECISION) < 1);\n        var acceptNewRange = !(options.min === totalMin && options.max === totalMax) && round(log(max, base) - log(min, base), DEFAULT_PRECISION) >= 1;\n\n        if (acceptOptionsRange || acceptNewRange) {\n            return {\n                min: min,\n                max: max\n            };\n        }\n    };\n\n    LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {\n        var ref = this.options;\n        var minorUnit = ref.minorUnit;\n        var base = ref.majorUnit;\n        var value = Math.pow(base, power);\n        var nextValue = Math.pow(base, power + 1);\n        var difference = nextValue - value;\n        var minorStep = difference / minorUnit;\n\n        return {\n            value: value,\n            minorStep: minorStep\n        };\n    };\n\n    LogarithmicAxis.prototype._lineOptions = function _lineOptions () {\n        var ref = this.options;\n        var reverse = ref.reverse;\n        var vertical = ref.vertical;\n        var valueAxis = vertical ? Y : X;\n        var lineBox = this.lineBox();\n        var dir = vertical === reverse ? 1 : -1;\n        var startEdge = dir === 1 ? 1 : 2;\n        var lineSize = vertical ? lineBox.height() : lineBox.width();\n        var step = dir * (lineSize / (this.logMax - this.logMin));\n        var lineStart = lineBox[valueAxis + startEdge];\n\n        return {\n            step: step,\n            lineStart: lineStart,\n            lineBox: lineBox\n        };\n    };\n\n    return LogarithmicAxis;\n}(Axis));\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n    var min = axisOptions.min;\n    var max = axisOptions.max;\n\n    if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n        throwNegativeValuesError();\n    }\n\n    if (!defined(options.max)) {\n        max = autoMax;\n    } else if (options.max <= 0) {\n        throwNegativeValuesError();\n    }\n\n    if (!defined(options.min)) {\n        min = autoMin;\n    } else if (options.min <= 0) {\n        throwNegativeValuesError();\n    }\n\n    return {\n        min: min,\n        max: max\n    };\n}\n\nfunction autoAxisMin(min, max, options) {\n    var base = options.majorUnit;\n    var autoMin = min;\n    if (min <= 0) {\n        autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n    } else if (!options.narrowRange) {\n        autoMin = Math.pow(base, Math.floor(log(min, base)));\n    }\n    return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n    var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n    var autoMax;\n    if (max <= 0) {\n        autoMax = base;\n    } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n        autoMax = Math.pow(base, log(max, base) + 0.2);\n    } else {\n        autoMax = Math.pow(base, Math.ceil(log(max, base)));\n    }\n\n    return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n    throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(y, x) {\n    return Math.log(y) / Math.log(x);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n    type: \"log\",\n    majorUnit: DEFAULT_MAJOR_UNIT,\n    minorUnit: 1,\n    axisCrossingValue: 1,\n    vertical: true,\n    majorGridLines: {\n        visible: true,\n        width: 1,\n        color: BLACK\n    },\n    zIndex: 1,\n    _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nvar GridLinesMixin = {\n    createGridLines: function(altAxis) {\n        var options = this.options;\n        var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n        var gridLines = [];\n        var skipMajor = false;\n        var majorAngles, minorAngles;\n\n        if (options.majorGridLines.visible) {\n            majorAngles = this.majorGridLineAngles(altAxis);\n            skipMajor = true;\n\n            gridLines = this.renderMajorGridLines(\n                majorAngles, radius, options.majorGridLines\n            );\n        }\n\n        if (options.minorGridLines.visible) {\n            minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n            append(gridLines, this.renderMinorGridLines(\n                minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n            ));\n        }\n\n        return gridLines;\n    },\n\n    renderMajorGridLines: function(angles, radius, options) {\n        return this.renderGridLines(angles, radius, options);\n    },\n\n    renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n        var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n        return this.renderGridLines(angles, radius, options, radiusCallback);\n    },\n\n    renderGridLines: function(angles, radius, options, radiusCallback) {\n        var style = {\n            stroke: {\n                width: options.width,\n                color: options.color,\n                dashType: options.dashType\n            }\n        };\n\n        var center = this.box.center();\n        var circle = new geom.Circle([ center.x, center.y ], radius);\n        var container = this.gridLinesVisual();\n\n        for (var i = 0; i < angles.length; i++) {\n            var line = new draw.Path(style);\n            if (radiusCallback) {\n                circle.radius = radiusCallback(angles[i]);\n            }\n\n            line.moveTo(circle.center)\n                .lineTo(circle.pointAt(angles[i] + 180));\n\n            container.append(line);\n        }\n\n        return container.children;\n    },\n\n    gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n        var this$1 = this;\n\n        var divs = this.intervals(size, skip, step, skipAngles);\n        var options = altAxis.options;\n        var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n        return map(divs, function (d) {\n            var alpha = this$1.intervalAngle(d);\n\n            if (!altAxisVisible || alpha !== 90) {\n                return alpha;\n            }\n        });\n    }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nvar RadarCategoryAxis = (function (CategoryAxis) {\n    function RadarCategoryAxis () {\n        CategoryAxis.apply(this, arguments);\n    }\n\n    if ( CategoryAxis ) RadarCategoryAxis.__proto__ = CategoryAxis;\n    RadarCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n    RadarCategoryAxis.prototype.constructor = RadarCategoryAxis;\n\n    RadarCategoryAxis.prototype.range = function range () {\n        return { min: 0, max: this.options.categories.length };\n    };\n\n    RadarCategoryAxis.prototype.reflow = function reflow (box) {\n        this.box = box;\n        this.reflowLabels();\n    };\n\n    RadarCategoryAxis.prototype.lineBox = function lineBox () {\n        return this.box;\n    };\n\n    RadarCategoryAxis.prototype.reflowLabels = function reflowLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var labels = ref.labels;\n        var labelOptions = ref.options.labels;\n        var skip = labelOptions.skip || 0;\n        var step = labelOptions.step || 1;\n        var measureBox = new Box();\n\n        for (var i = 0; i < labels.length; i++) {\n            labels[i].reflow(measureBox);\n            var labelBox = labels[i].box;\n\n            labels[i].reflow(this$1.getSlot(skip + i * step).adjacentBox(\n                0, labelBox.width(), labelBox.height()\n            ));\n        }\n    };\n\n    RadarCategoryAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n        if ( skipAngles === void 0 ) skipAngles = false;\n\n        var options = this.options;\n        var categories = options.categories.length;\n        var divCount = categories / size || 1;\n        var divAngle = 360 / divCount;\n        var skip = skipOption || 0;\n        var step = stepOption || 1;\n        var divs = [];\n        var angle = 0;\n\n        for (var i = skip; i < divCount; i += step) {\n            if (options.reverse) {\n                angle = 360 - i * divAngle;\n            } else {\n                angle = i * divAngle;\n            }\n\n            angle = round(angle, COORD_PRECISION) % 360;\n\n            if (!(skipAngles && inArray(angle, skipAngles))) {\n                divs.push(angle);\n            }\n        }\n\n        return divs;\n    };\n\n    RadarCategoryAxis.prototype.majorIntervals = function majorIntervals () {\n        return this.intervals(1);\n    };\n\n    RadarCategoryAxis.prototype.minorIntervals = function minorIntervals () {\n        return this.intervals(0.5);\n    };\n\n    RadarCategoryAxis.prototype.intervalAngle = function intervalAngle (interval) {\n        return (360 + interval + this.options.startAngle) % 360;\n    };\n\n    RadarCategoryAxis.prototype.majorAngles = function majorAngles () {\n        var this$1 = this;\n\n        return map(this.majorIntervals(), function (interval) { return this$1.intervalAngle(interval); });\n    };\n\n    RadarCategoryAxis.prototype.createLine = function createLine () {\n        return [];\n    };\n\n    RadarCategoryAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n        var majorGridLines = this.options.majorGridLines;\n        return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n    };\n\n    RadarCategoryAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n        var ref = this.options;\n        var minorGridLines = ref.minorGridLines;\n        var majorGridLines = ref.majorGridLines;\n        var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n        return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n    };\n\n    RadarCategoryAxis.prototype.radiusCallback = function radiusCallback (radius, altAxis, skipMajor) {\n        if (altAxis.options.type !== ARC) {\n            var minorAngle = rad(360 / (this.options.categories.length * 2));\n            var minorRadius = Math.cos(minorAngle) * radius;\n            var majorAngles = this.majorAngles();\n\n            var radiusCallback = function(angle) {\n                if (!skipMajor && inArray(angle, majorAngles)) {\n                    return radius;\n                }\n\n                return minorRadius;\n            };\n            return radiusCallback;\n        }\n    };\n\n    RadarCategoryAxis.prototype.createPlotBands = function createPlotBands () {\n        var this$1 = this;\n\n        var plotBands = this.options.plotBands || [];\n\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        for (var i = 0; i < plotBands.length; i++) {\n            var band = plotBands[i];\n            var slot = this$1.plotBandSlot(band);\n            var singleSlot = this$1.getSlot(band.from);\n\n            var head = band.from - Math.floor(band.from);\n            slot.startAngle += head * singleSlot.angle;\n\n            var tail = Math.ceil(band.to) - band.to;\n            slot.angle -= (tail + head) * singleSlot.angle;\n\n            var ring = ShapeBuilder.current.createRing(slot, {\n                fill: {\n                    color: band.color,\n                    opacity: band.opacity\n                },\n                stroke: {\n                    opacity: band.opacity\n                }\n            });\n            group.append(ring);\n        }\n\n        this.appendVisual(group);\n    };\n\n    RadarCategoryAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n        return this.getSlot(band.from, band.to - 1);\n    };\n\n    RadarCategoryAxis.prototype.getSlot = function getSlot (from, to) {\n        var options = this.options;\n        var justified = options.justified;\n        var box = this.box;\n        var divs = this.majorAngles();\n        var totalDivs = divs.length;\n        var slotAngle = 360 / totalDivs;\n        var fromValue = from;\n\n        if (options.reverse && !justified) {\n            fromValue = (fromValue + 1) % totalDivs;\n        }\n\n        fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n        var slotStart = divs[fromValue];\n\n        if (justified) {\n            slotStart = slotStart - slotAngle / 2;\n\n            if (slotStart < 0) {\n                slotStart += 360;\n            }\n        }\n\n        var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n        var slots = toValue - fromValue + 1;\n        var angle = slotAngle * slots;\n\n        return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n    };\n\n    RadarCategoryAxis.prototype.slot = function slot (from, to) {\n        var slot = this.getSlot(from, to);\n        var startAngle = slot.startAngle + 180;\n        var endAngle = startAngle + slot.angle;\n\n        return new geom.Arc([ slot.center.x, slot.center.y ], {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: slot.radius,\n            radiusY: slot.radius\n        });\n    };\n\n    RadarCategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n        var this$1 = this;\n\n        var length = this.options.categories.length;\n        var index = null;\n\n        for (var i = 0; i < length; i++) {\n            var slot = this$1.getSlot(i);\n            if (slot.containsPoint(point)) {\n                index = i;\n                break;\n            }\n        }\n\n        return index;\n    };\n\n    return RadarCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(RadarCategoryAxis, {\n    startAngle: 90,\n    labels: {\n        margin: getSpacing(10)\n    },\n    majorGridLines: {\n        visible: true\n    },\n    justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nvar PolarAxis = (function (Axis) {\n    function PolarAxis(options, chartService) {\n        Axis.call(this, options, chartService);\n\n        var instanceOptions = this.options;\n\n        instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n    }\n\n    if ( Axis ) PolarAxis.__proto__ = Axis;\n    PolarAxis.prototype = Object.create( Axis && Axis.prototype );\n    PolarAxis.prototype.constructor = PolarAxis;\n\n    PolarAxis.prototype.getDivisions = function getDivisions (stepValue) {\n        return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n    };\n\n    PolarAxis.prototype.reflow = function reflow (box) {\n        this.box = box;\n        this.reflowLabels();\n    };\n\n    PolarAxis.prototype.reflowLabels = function reflowLabels () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var labels = ref.labels;\n        var labelOptions = ref.options.labels;\n        var skip = labelOptions.skip || 0;\n        var step = labelOptions.step || 1;\n\n        var measureBox = new Box();\n        var divs = this.intervals(options.majorUnit, skip, step);\n\n        for (var i = 0; i < labels.length; i++) {\n            labels[i].reflow(measureBox);\n            var labelBox = labels[i].box;\n\n            labels[i].reflow(this$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n        }\n    };\n\n    PolarAxis.prototype.lineBox = function lineBox () {\n        return this.box;\n    };\n\n    PolarAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n        if ( skipAngles === void 0 ) skipAngles = false;\n\n        var min = this.options.min;\n        var divisions = this.getDivisions(size);\n        var divs = [];\n        var skip = skipOption || 0;\n        var step = stepOption || 1;\n\n        for (var i = skip; i < divisions; i += step) {\n            var current = (360 + min + i * size) % 360;\n            if (!(skipAngles && inArray(current, skipAngles))) {\n                divs.push(current);\n            }\n        }\n\n        return divs;\n    };\n\n    PolarAxis.prototype.majorIntervals = function majorIntervals () {\n        return this.intervals(this.options.majorUnit);\n    };\n\n    PolarAxis.prototype.minorIntervals = function minorIntervals () {\n        return this.intervals(this.options.minorUnit);\n    };\n\n    PolarAxis.prototype.intervalAngle = function intervalAngle (i) {\n        return (540 - i - this.options.startAngle) % 360;\n    };\n\n    PolarAxis.prototype.createLine = function createLine () {\n        return [];\n    };\n\n    PolarAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n        var majorGridLines = this.options.majorGridLines;\n        return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n    };\n\n    PolarAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n        var options = this.options;\n        var minorGridLines = options.minorGridLines;\n        var majorGridLines = options.majorGridLines;\n        var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n        return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n    };\n\n    PolarAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n        return this.getSlot(band.from, band.to);\n    };\n\n    PolarAxis.prototype.getSlot = function getSlot (a, b) {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var startAngle = options.startAngle;\n        var start = limitValue(a, options.min, options.max);\n        var end = limitValue(b || start, start, options.max);\n\n        if (options.reverse) {\n            start *= -1;\n            end *= -1;\n        }\n\n        start = (540 - start - startAngle) % 360;\n        end = (540 - end - startAngle) % 360;\n\n        if (end < start) {\n            var tmp = start;\n            start = end;\n            end = tmp;\n        }\n\n        return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n    };\n\n    PolarAxis.prototype.slot = function slot (from, to) {\n        if ( to === void 0 ) to = from;\n\n        var options = this.options;\n        var start = 360 - options.startAngle;\n        var slot = this.getSlot(from, to);\n        var min = Math.min(from, to);\n        var max = Math.max(from, to);\n        var startAngle, endAngle;\n\n        if (options.reverse) {\n            startAngle = min;\n            endAngle = max;\n        } else {\n            startAngle = 360 - max;\n            endAngle = 360 - min;\n        }\n\n        startAngle = (startAngle + start) % 360;\n        endAngle = (endAngle + start) % 360;\n\n        return new geom.Arc([ slot.center.x, slot.center.y ], {\n            startAngle: startAngle,\n            endAngle: endAngle,\n            radiusX: slot.radius,\n            radiusY: slot.radius\n        });\n    };\n\n    PolarAxis.prototype.getValue = function getValue (point) {\n        var options = this.options;\n        var center = this.box.center();\n        var dx = point.x - center.x;\n        var dy = point.y - center.y;\n        var theta = Math.round(deg(Math.atan2(dy, dx)));\n        var start = options.startAngle;\n\n        if (!options.reverse) {\n            theta *= -1;\n            start *= -1;\n        }\n\n        return (theta + start + 360) % 360;\n    };\n\n    PolarAxis.prototype.valueRange = function valueRange () {\n        return {\n            min: 0,\n            max: Math.PI * 2\n        };\n    };\n\n    return PolarAxis;\n}(Axis));\n\nsetDefaultOptions(PolarAxis, {\n    type: \"polar\",\n    startAngle: 0,\n    reverse: false,\n    majorUnit: 60,\n    min: 0,\n    max: 360,\n    labels: {\n        margin: getSpacing(10)\n    },\n    majorGridLines: {\n        color: BLACK,\n        visible: true,\n        width: 1\n    },\n    minorGridLines: {\n        color: \"#aaa\"\n    }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n    createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n    majorAngles: RadarCategoryAxis.prototype.majorAngles,\n    range: NumericAxis.prototype.range,\n    labelsCount: NumericAxis.prototype.labelsCount,\n    createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nvar RadarNumericAxisMixin = {\n    options: {\n        majorGridLines: {\n            visible: true\n        }\n    },\n\n    createPlotBands: function() {\n        var this$1 = this;\n\n        var ref = this.options;\n        var type = ref.majorGridLines.type;\n        var plotBands = ref.plotBands; if ( plotBands === void 0 ) plotBands = [];\n        var altAxis = this.plotArea.polarAxis;\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var group = this._plotbandGroup = new draw.Group({\n            zIndex: -1\n        });\n\n        for (var i = 0; i < plotBands.length; i++) {\n            var band = plotBands[i];\n            var bandStyle = {\n                fill: {\n                    color: band.color,\n                    opacity: band.opacity\n                },\n                stroke: {\n                    opacity: band.opacity\n                }\n            };\n\n            var slot = this$1.getSlot(band.from, band.to, true);\n            var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n            var shape = (void 0);\n            if (type === ARC) {\n                shape = ShapeBuilder.current.createRing(ring, bandStyle);\n            } else {\n                shape = draw.Path.fromPoints(this$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n            }\n\n            group.append(shape);\n        }\n\n        this.appendVisual(group);\n    },\n\n    plotBandPoints: function(ring, angles) {\n        var innerPoints = [];\n        var outerPoints = [];\n        var center = [ ring.center.x, ring.center.y ];\n        var innerCircle = new geom.Circle(center, ring.innerRadius);\n        var outerCircle = new geom.Circle(center, ring.radius);\n\n        for (var i = 0; i < angles.length; i++) {\n            innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n            outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n        }\n\n        innerPoints.reverse();\n        innerPoints.push(innerPoints[0]);\n        outerPoints.push(outerPoints[0]);\n\n        return outerPoints.concat(innerPoints);\n    },\n\n    createGridLines: function(altAxis) {\n        var options = this.options;\n        var majorTicks = this.radarMajorGridLinePositions();\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var gridLines = [];\n\n        if (options.majorGridLines.visible) {\n            gridLines = this.renderGridLines(\n                center, majorTicks, majorAngles, options.majorGridLines\n            );\n        }\n\n        if (options.minorGridLines.visible) {\n            var minorTicks = this.radarMinorGridLinePositions();\n            append(gridLines, this.renderGridLines(\n                center, minorTicks, majorAngles, options.minorGridLines\n            ));\n        }\n\n        return gridLines;\n    },\n\n    renderGridLines: function(center, ticks, angles, options) {\n        var style = {\n            stroke: {\n                width: options.width,\n                color: options.color,\n                dashType: options.dashType\n            }\n        };\n        var skip = options.skip; if ( skip === void 0 ) skip = 0;\n        var step = options.step; if ( step === void 0 ) step = 0;\n        var container = this.gridLinesVisual();\n\n        for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n            var tickRadius = center.y - ticks[tickIx];\n            if (tickRadius > 0) {\n                var circle = new geom.Circle([ center.x, center.y ], tickRadius);\n                if (options.type === ARC) {\n                    container.append(new draw.Circle(circle, style));\n                } else {\n                    var line = new draw.Path(style);\n                    for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n                        line.lineTo(circle.pointAt(angles[angleIx] + 180));\n                    }\n\n                    line.close();\n                    container.append(line);\n                }\n            }\n        }\n\n        return container.children;\n    },\n\n    getValue: function(point) {\n        var lineBox = this.lineBox();\n        var altAxis = this.plotArea.polarAxis;\n        var majorAngles = altAxis.majorAngles();\n        var center = altAxis.box.center();\n        var radius = point.distanceTo(center);\n        var distance = radius;\n\n        if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n            var dx = point.x - center.x;\n            var dy = point.y - center.y;\n            var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n            majorAngles.sort(function(a, b) {\n                return angularDistance(a, theta) - angularDistance(b, theta);\n            });\n\n            // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n            // Angles are derived from triangle (center, point, gridline X)\n            var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n            var alpha = angularDistance(theta, majorAngles[0]);\n            var gamma = 90 - midAngle;\n            var beta = 180 - alpha - gamma;\n\n            distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n        }\n\n        return this.axisType().prototype.getValue.call(\n            this, new Point(lineBox.x1, lineBox.y2 - distance)\n        );\n    }\n};\n\nfunction angularDistance(a, b) {\n    return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarNumericAxis = (function (NumericAxis) {\n    function RadarNumericAxis () {\n        NumericAxis.apply(this, arguments);\n    }\n\n    if ( NumericAxis ) RadarNumericAxis.__proto__ = NumericAxis;\n    RadarNumericAxis.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    RadarNumericAxis.prototype.constructor = RadarNumericAxis;\n\n    RadarNumericAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n        return this.getTickPositions(this.options.majorUnit);\n    };\n\n    RadarNumericAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n        var options = this.options;\n        var minorSkipStep = 0;\n\n        if (options.majorGridLines.visible) {\n            minorSkipStep = options.majorUnit;\n        }\n        return this.getTickPositions(options.minorUnit, minorSkipStep);\n    };\n\n    RadarNumericAxis.prototype.axisType = function axisType () {\n        return NumericAxis;\n    };\n\n    return RadarNumericAxis;\n}(NumericAxis));\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarLogarithmicAxis = (function (LogarithmicAxis) {\n    function RadarLogarithmicAxis () {\n        LogarithmicAxis.apply(this, arguments);\n    }\n\n    if ( LogarithmicAxis ) RadarLogarithmicAxis.__proto__ = LogarithmicAxis;\n    RadarLogarithmicAxis.prototype = Object.create( LogarithmicAxis && LogarithmicAxis.prototype );\n    RadarLogarithmicAxis.prototype.constructor = RadarLogarithmicAxis;\n\n    RadarLogarithmicAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n        var positions = [];\n\n        this.traverseMajorTicksPositions(function(position) {\n            positions.push(position);\n        }, this.options.majorGridLines);\n\n        return positions;\n    };\n\n    RadarLogarithmicAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n        var positions = [];\n\n        this.traverseMinorTicksPositions(function(position) {\n            positions.push(position);\n        }, this.options.minorGridLines);\n\n        return positions;\n    };\n\n    RadarLogarithmicAxis.prototype.axisType = function axisType () {\n        return LogarithmicAxis;\n    };\n\n    return RadarLogarithmicAxis;\n}(LogarithmicAxis));\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nvar CurveProcessor = (function (Class) {\n    function CurveProcessor(closed) {\n        Class.call(this);\n\n        this.closed = closed;\n    }\n\n    if ( Class ) CurveProcessor.__proto__ = Class;\n    CurveProcessor.prototype = Object.create( Class && Class.prototype );\n    CurveProcessor.prototype.constructor = CurveProcessor;\n\n    CurveProcessor.prototype.process = function process (dataPoints) {\n        var this$1 = this;\n\n        var points = dataPoints.slice(0);\n        var segments = [];\n        var closed = this.closed;\n        var length = points.length;\n\n        if (length > 2) {\n            this.removeDuplicates(0, points);\n            length = points.length;\n        }\n\n        if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n            return segments;\n        }\n\n        var p0 = points[0];\n        var p1 = points[1];\n        var p2 = points[2];\n\n        segments.push(new geom.Segment(p0));\n\n        while (p0.equals(points[length - 1])) {\n            closed = true;\n            points.pop();\n            length--;\n        }\n\n        if (length === 2) {\n            var tangent = this.tangent(p0,p1, X, Y);\n\n            last(segments).controlOut(\n                this.firstControlPoint(tangent, p0, p1, X, Y)\n            );\n\n            segments.push(new geom.Segment(\n                p1,\n                this.secondControlPoint(tangent, p0, p1, X, Y)\n            ));\n\n            return segments;\n        }\n\n        var initialControlPoint, lastControlPoint;\n\n        if (closed) {\n            p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n            var controlPoints = this.controlPoints(p0, p1, p2);\n            initialControlPoint = controlPoints[1];\n            lastControlPoint = controlPoints[0];\n        } else {\n            var tangent$1 = this.tangent(p0, p1, X,Y);\n            initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n        }\n\n        var cp0 = initialControlPoint;\n        for (var idx = 0; idx <= length - 3; idx++) {\n            this$1.removeDuplicates(idx, points);\n            length = points.length;\n            if (idx + 3 <= length) {\n                p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n                var controlPoints$1 = this$1.controlPoints(p0,p1,p2);\n\n                last(segments).controlOut(cp0);\n                cp0 = controlPoints$1[1];\n\n                var cp1 = controlPoints$1[0];\n                segments.push(new geom.Segment(p1, cp1));\n            }\n        }\n\n        if (closed) {\n            p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n            var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n            last(segments).controlOut(cp0);\n            segments.push(new geom.Segment(\n                p1,\n                controlPoints$2[0]\n            ));\n\n            last(segments).controlOut(controlPoints$2[1]);\n            segments.push(new geom.Segment(\n                p2,\n                lastControlPoint\n            ));\n        } else {\n            var tangent$2 = this.tangent(p1, p2, X, Y);\n\n            last(segments).controlOut(cp0);\n            segments.push(new geom.Segment(\n                p2,\n                this.secondControlPoint(tangent$2, p1, p2, X, Y)\n            ));\n        }\n\n        return segments;\n    };\n\n    CurveProcessor.prototype.removeDuplicates = function removeDuplicates (idx, points) {\n        while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n            points.splice(idx + 1, 1);\n        }\n    };\n\n    CurveProcessor.prototype.invertAxis = function invertAxis (p0, p1, p2) {\n        var invertAxis = false;\n\n        if (p0.x === p1.x) {\n            invertAxis = true;\n        } else if (p1.x === p2.x) {\n            if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n                invertAxis = true;\n            }\n        } else {\n            var fn = this.lineFunction(p0,p1);\n            var y2 = this.calculateFunction(fn, p2.x);\n            if (!(p0.y <= p1.y && p2.y <= y2) &&\n                !(p1.y <= p0.y && p2.y >= y2)) {\n                invertAxis = true;\n            }\n        }\n\n        return invertAxis;\n    };\n\n    CurveProcessor.prototype.isLine = function isLine (p0, p1, p2) {\n        var fn = this.lineFunction(p0, p1);\n        var y2 = this.calculateFunction(fn, p2.x);\n\n        return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n    };\n\n    CurveProcessor.prototype.lineFunction = function lineFunction (p1, p2) {\n        var a = (p2.y - p1.y) / (p2.x - p1.x);\n        var b = p1.y - a * p1.x;\n\n        return [ b, a ];\n    };\n\n    CurveProcessor.prototype.controlPoints = function controlPoints (p0, p1, p2) {\n        var xField = X;\n        var yField = Y;\n        var restrict = false;\n        var switchOrientation = false;\n        var tangent;\n\n        if (this.isLine(p0, p1, p2)) {\n            tangent = this.tangent(p0, p1, X, Y);\n        } else {\n            var monotonic = {\n                x: this.isMonotonicByField(p0, p1, p2, X),\n                y: this.isMonotonicByField(p0, p1, p2, Y)\n            };\n\n            if (monotonic.x && monotonic.y) {\n                tangent = this.tangent(p0, p2, X, Y);\n                restrict = true;\n            } else {\n                if (this.invertAxis(p0, p1, p2)) {\n                    xField = Y;\n                    yField = X;\n                }\n\n                if (monotonic[xField]) {\n                    tangent = 0;\n                } else {\n                    var sign;\n                    if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n                        (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n                        sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n                    } else {\n                        sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n                    }\n\n                    tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n                    switchOrientation = true;\n                }\n            }\n        }\n\n        var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n        if (switchOrientation) {\n            var oldXField = xField;\n            xField = yField;\n            yField = oldXField;\n        }\n\n        var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n        if (restrict) {\n            this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n            this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n        }\n\n        return [ secondControlPoint, firstControlPoint ];\n    };\n\n    CurveProcessor.prototype.restrictControlPoint = function restrictControlPoint (p1, p2, cp, tangent) {\n        if (p1.y < p2.y) {\n            if (p2.y < cp.y) {\n                cp.x = p1.x + (p2.y - p1.y) / tangent;\n                cp.y = p2.y;\n            } else if (cp.y < p1.y) {\n                cp.x = p2.x - (p2.y - p1.y) / tangent;\n                cp.y = p1.y;\n            }\n        } else {\n            if (cp.y < p2.y) {\n                cp.x = p1.x - (p1.y - p2.y) / tangent;\n                cp.y = p2.y;\n            } else if (p1.y < cp.y) {\n                cp.x = p2.x + (p1.y - p2.y) / tangent;\n                cp.y = p1.y;\n            }\n        }\n    };\n\n    CurveProcessor.prototype.tangent = function tangent (p0, p1, xField, yField) {\n        var x = p1[xField] - p0[xField];\n        var y = p1[yField] - p0[yField];\n        var tangent;\n\n        if (x === 0) {\n            tangent = 0;\n        } else {\n            tangent = y / x;\n        }\n\n        return tangent;\n    };\n\n    CurveProcessor.prototype.isMonotonicByField = function isMonotonicByField (p0, p1, p2, field) {\n        return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n                    (p2[field] < p1[field] && p1[field] < p0[field]);\n    };\n\n    CurveProcessor.prototype.firstControlPoint = function firstControlPoint (tangent, p0, p3, xField, yField) {\n        var t1 = p0[xField];\n        var t2 = p3[xField];\n        var distance = (t2 - t1) * WEIGHT;\n\n        return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n    };\n\n    CurveProcessor.prototype.secondControlPoint = function secondControlPoint (tangent, p0, p3, xField, yField) {\n        var t1 = p0[xField];\n        var t2 = p3[xField];\n        var distance = (t2 - t1) * WEIGHT;\n\n        return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n    };\n\n    CurveProcessor.prototype.point = function point (xValue, yValue, xField, yField) {\n        var controlPoint = new geom.Point();\n        controlPoint[xField] = xValue;\n        controlPoint[yField] = yValue;\n\n        return controlPoint;\n    };\n\n    CurveProcessor.prototype.calculateFunction = function calculateFunction (fn, x) {\n        var length = fn.length;\n        var result = 0;\n\n        for (var i = 0; i < length; i++) {\n            result += Math.pow(x,i) * fn[i];\n        }\n        return result;\n    };\n\n    return CurveProcessor;\n}(Class));\n\nfunction numberSign(value) {\n    return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nvar ChartAxis = (function (Class) {\n    function ChartAxis(axis) {\n        Class.call(this);\n\n        this._axis = axis;\n        this.options = axis.options;\n    }\n\n    if ( Class ) ChartAxis.__proto__ = Class;\n    ChartAxis.prototype = Object.create( Class && Class.prototype );\n    ChartAxis.prototype.constructor = ChartAxis;\n\n    ChartAxis.prototype.value = function value (point) {\n        var axis = this._axis;\n        var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n        return value;\n    };\n\n    ChartAxis.prototype.slot = function slot (from, to, limit) {\n        if ( limit === void 0 ) limit = true;\n\n        return this._axis.slot(from, to, limit);\n    };\n\n    ChartAxis.prototype.range = function range () {\n        return this._axis.range();\n    };\n\n    ChartAxis.prototype.valueRange = function valueRange () {\n        return this._axis.valueRange();\n    };\n\n    return ChartAxis;\n}(Class));\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n    for (var idx = 0; idx < axes.length; idx++) {\n        if (axes[idx].options.name === name) {\n            axes[idx].prepareUserOptions();\n            return new ChartAxis(axes[idx]);\n        }\n    }\n}","import findAxisByName from './find-axis-by-name';\n\nvar ChartPane = function ChartPane(pane) {\n    this.visual = pane.visual;\n    this.chartsVisual = pane.chartContainer.visual;\n    this._pane = pane;\n};\n\nChartPane.prototype.findAxisByName = function findAxisByName$1 (name) {\n    return findAxisByName(name, this._pane.axes);\n};\n\nexport default ChartPane;","import { Class } from '../../common';\n\nvar ChartPlotArea = (function (Class) {\n    function ChartPlotArea(plotArea) {\n        Class.call(this);\n\n        this._plotArea = plotArea;\n        this.visual = plotArea.visual;\n        this.backgroundVisual = plotArea._bgVisual;\n    }\n\n    if ( Class ) ChartPlotArea.__proto__ = Class;\n    ChartPlotArea.prototype = Object.create( Class && Class.prototype );\n    ChartPlotArea.prototype.constructor = ChartPlotArea;\n\n    return ChartPlotArea;\n}(Class));\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n    var length = values.length;\n    var count = 0;\n\n    for (var i = 0; i < length; i++) {\n        var num = values[i];\n        if (isNumber(num)) {\n            count++;\n        }\n    }\n\n    return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nvar Aggregates = {\n    min: function(values) {\n        var length = values.length;\n        var min = MAX_VALUE;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                min = Math.min(min, value);\n            }\n        }\n\n        return min === MAX_VALUE ? values[0] : min;\n    },\n\n    max: function(values) {\n        var length = values.length;\n        var max = MIN_VALUE;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                max = Math.max(max, value);\n            }\n        }\n\n        return max === MIN_VALUE ? values[0] : max;\n    },\n\n    sum: function(values) {\n        var length = values.length;\n        var sum = 0;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (isNumber(value)) {\n                sum += value;\n            }\n        }\n\n        return sum;\n    },\n\n    sumOrNull: function(values) {\n        var result = null;\n\n        if (countNumbers(values)) {\n            result = Aggregates.sum(values);\n        }\n\n        return result;\n    },\n\n    count: function(values) {\n        var length = values.length;\n        var count = 0;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (value !== null && defined(value)) {\n                count++;\n            }\n        }\n\n        return count;\n    },\n\n    avg: function(values) {\n        var count = countNumbers(values);\n        var result = values[0];\n\n        if (count > 0) {\n            result = Aggregates.sum(values) / count;\n        }\n\n        return result;\n    },\n\n    first: function(values) {\n        var length = values.length;\n\n        for (var i = 0; i < length; i++) {\n            var value = values[i];\n            if (value !== null && defined(value)) {\n                return value;\n            }\n        }\n\n        return values[0];\n    }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n    if (row === null) {\n        return row;\n    }\n\n    var get = getter(field, true);\n    return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nvar SeriesBinder = (function (Class) {\n    function SeriesBinder() {\n        Class.call(this);\n\n        this._valueFields = {};\n        this._otherFields = {};\n        this._nullValue = {};\n        this._undefinedValue = {};\n    }\n\n    if ( Class ) SeriesBinder.__proto__ = Class;\n    SeriesBinder.prototype = Object.create( Class && Class.prototype );\n    SeriesBinder.prototype.constructor = SeriesBinder;\n\n    SeriesBinder.prototype.register = function register (seriesTypes, valueFields, otherFields) {\n        var this$1 = this;\n        if ( valueFields === void 0 ) valueFields = [ VALUE ];\n        if ( otherFields === void 0 ) otherFields = {};\n\n\n        for (var i = 0; i < seriesTypes.length; i++) {\n            var type = seriesTypes[i];\n\n            this$1._valueFields[type] = valueFields;\n            this$1._otherFields[type] = otherFields;\n            this$1._nullValue[type] = this$1._makeValue(valueFields, null);\n            this$1._undefinedValue[type] = this$1._makeValue(valueFields, undefined);\n        }\n    };\n\n    SeriesBinder.prototype.canonicalFields = function canonicalFields (series) {\n        return this.valueFields(series).concat(this.otherFields(series));\n    };\n\n    SeriesBinder.prototype.valueFields = function valueFields (series) {\n        return this._valueFields[series.type] || [ VALUE ];\n    };\n\n    SeriesBinder.prototype.otherFields = function otherFields (series) {\n        return this._otherFields[series.type] || [ VALUE ];\n    };\n\n    SeriesBinder.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n        var data = series.data;\n        var pointData = defined(item) ? item : data[pointIx];\n        var result = { valueFields: { value: pointData } };\n        var valueFields = this.valueFields(series);\n        var otherFields = this._otherFields[series.type];\n        var fields, value;\n\n        if (pointData === null) {\n            value = this._nullValue[series.type];\n        } else if (!defined(pointData)) {\n            value = this._undefinedValue[series.type];\n        } else if (Array.isArray(pointData)) {\n            var fieldData = pointData.slice(valueFields.length);\n            value = this._bindFromArray(pointData, valueFields);\n            fields = this._bindFromArray(fieldData, otherFields);\n        } else if (typeof pointData === \"object\") {\n            var srcValueFields = this.sourceFields(series, valueFields);\n            var srcPointFields = this.sourceFields(series, otherFields);\n\n            value = this._bindFromObject(pointData, valueFields, srcValueFields);\n            fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n        }\n\n        if (defined(value)) {\n            if (valueFields.length === 1) {\n                result.valueFields.value = value[valueFields[0]];\n            } else {\n                result.valueFields = value;\n            }\n        }\n\n        result.fields = fields || {};\n\n        return result;\n    };\n\n    SeriesBinder.prototype._makeValue = function _makeValue (fields, initialValue) {\n        var value = {};\n        var length = fields.length;\n\n        for (var i = 0; i < length; i++) {\n            var fieldName = fields[i];\n            value[fieldName] = initialValue;\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype._bindFromArray = function _bindFromArray (array, fields) {\n        var value = {};\n\n        if (fields) {\n            var length = Math.min(fields.length, array.length);\n\n            for (var i = 0; i < length; i++) {\n                value[fields[i]] = array[i];\n            }\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype._bindFromObject = function _bindFromObject (object, fields, srcFields) {\n        if ( srcFields === void 0 ) srcFields = fields;\n\n        var value = {};\n\n        if (fields) {\n            var length = fields.length;\n\n            for (var i = 0; i < length; i++) {\n                var fieldName = fields[i];\n                var srcFieldName = srcFields[i];\n                if (srcFieldName !== null) {\n                    value[fieldName] = getField(srcFieldName, object);\n                }\n            }\n        }\n\n        return value;\n    };\n\n    SeriesBinder.prototype.sourceFields = function sourceFields (series, canonicalFields) {\n        var sourceFields = [];\n\n        if (canonicalFields) {\n            var length = canonicalFields.length;\n\n            for (var i = 0; i < length; i++) {\n                var fieldName = canonicalFields[i];\n                var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n                sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n            }\n        }\n\n        return sourceFields;\n    };\n\n    return SeriesBinder;\n}(Class));\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nvar STD_ERR = \"stderr\";\nvar STD_DEV = \"stddev\";\nvar percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nvar standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nvar ErrorRangeCalculator = (function (Class) {\n    function ErrorRangeCalculator(errorValue, series, field) {\n        Class.call(this);\n\n        this.initGlobalRanges(errorValue, series, field);\n    }\n\n    if ( Class ) ErrorRangeCalculator.__proto__ = Class;\n    ErrorRangeCalculator.prototype = Object.create( Class && Class.prototype );\n    ErrorRangeCalculator.prototype.constructor = ErrorRangeCalculator;\n\n    ErrorRangeCalculator.prototype.initGlobalRanges = function initGlobalRanges (errorValue, series, field) {\n        var data = series.data;\n        var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n        if (deviationMatch) {\n            this.valueGetter = this.createValueGetter(series, field);\n\n            var average = this.getAverage(data);\n            var deviation = this.getStandardDeviation(data, average, false);\n            var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n            var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n            this.globalRange = function() {\n                return errorRange;\n            };\n        } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n            this.valueGetter = this.createValueGetter(series, field);\n            var standardError = this.getStandardError(data, this.getAverage(data));\n\n            this.globalRange = function(value) {\n                return { low: value - standardError, high: value + standardError };\n            };\n        }\n    };\n\n    ErrorRangeCalculator.prototype.createValueGetter = function createValueGetter (series, field) {\n        var data = series.data;\n        var binder = SeriesBinder.current;\n        var valueFields = binder.valueFields(series);\n        var item = defined(data[0]) ? data[0] : {};\n        var valueGetter;\n\n        if (isArray(item)) {\n            var index = field ? valueFields.indexOf(field) : 0;\n            valueGetter = getter(\"[\" + index + \"]\");\n        } else if (isNumber(item)) {\n            valueGetter = getter();\n        } else if (typeof item === OBJECT) {\n            var srcValueFields = binder.sourceFields(series, valueFields);\n            valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n        }\n\n        return valueGetter;\n    };\n\n    ErrorRangeCalculator.prototype.getErrorRange = function getErrorRange (pointValue, errorValue) {\n        var low, high, value;\n\n        if (!defined(errorValue)) {\n            return null;\n        }\n\n        if (this.globalRange) {\n            return this.globalRange(pointValue);\n        }\n\n        if (isArray(errorValue)) {\n            low = pointValue - errorValue[0];\n            high = pointValue + errorValue[1];\n        } else if (isNumber(value = parseFloat(errorValue))) {\n            low = pointValue - value;\n            high = pointValue + value;\n        } else if ((value = percentRegex.exec(errorValue))) {\n            var percentValue = pointValue * (parseFloat(value[1]) / 100);\n            low = pointValue - Math.abs(percentValue);\n            high = pointValue + Math.abs(percentValue);\n        } else {\n            throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n        }\n\n        return { low: low, high: high };\n    };\n\n    ErrorRangeCalculator.prototype.getStandardError = function getStandardError (data, average) {\n        return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n    };\n\n    ErrorRangeCalculator.prototype.getStandardDeviation = function getStandardDeviation (data, average, isSample) {\n        var this$1 = this;\n\n        var length = data.length;\n        var total = isSample ? average.count - 1 : average.count;\n        var squareDifferenceSum = 0;\n\n        for (var idx = 0; idx < length; idx++) {\n            var value = this$1.valueGetter(data[idx]);\n            if (isNumber(value)) {\n                squareDifferenceSum += Math.pow(value - average.value, 2);\n            }\n        }\n\n        return Math.sqrt(squareDifferenceSum / total);\n    };\n\n    ErrorRangeCalculator.prototype.getAverage = function getAverage (data) {\n        var this$1 = this;\n\n        var length = data.length;\n        var sum = 0;\n        var count = 0;\n\n        for (var idx = 0; idx < length; idx++) {\n            var value = this$1.valueGetter(data[idx]);\n            if (isNumber(value)) {\n                sum += value;\n                count++;\n            }\n        }\n\n        return {\n            value: sum / count,\n            count: count\n        };\n    };\n\n    return ErrorRangeCalculator;\n}(Class));\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nvar INITIAL_ANIMATION_DURATION = 600;\nvar FADEIN = \"fadeIn\";\n\nvar GLASS = \"glass\";\nvar BORDER_BRIGHTNESS = 0.8;\nvar TOOLTIP_OFFSET = 5;\nvar START_SCALE = browser.msie ? 0.001 : 0;\nvar ERROR_LOW_FIELD = \"errorLow\";\nvar ERROR_HIGH_FIELD = \"errorHigh\";\nvar X_ERROR_LOW_FIELD = \"xErrorLow\";\nvar X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nvar Y_ERROR_LOW_FIELD = \"yErrorLow\";\nvar Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nvar LINE_MARKER_SIZE = 8;\nvar ZERO = \"zero\";\nvar INTERPOLATE = \"interpolate\";\nvar GAP = \"gap\";\nvar ABOVE = \"above\";\nvar BELOW = \"below\";\n\nvar SMOOTH = \"smooth\";\nvar STEP = \"step\";\n\nvar AREA = \"area\";\nvar BAR = \"bar\";\nvar BOX_PLOT = \"boxPlot\";\nvar BUBBLE = \"bubble\";\nvar BULLET = \"bullet\";\nvar CANDLESTICK = \"candlestick\";\nvar COLUMN = \"column\";\nvar DONUT = \"donut\";\nvar FUNNEL = \"funnel\";\nvar HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nvar LINE = \"line\";\nvar OHLC = \"ohlc\";\nvar PIE = \"pie\";\nvar POLAR_AREA = \"polarArea\";\nvar POLAR_LINE = \"polarLine\";\nvar POLAR_SCATTER = \"polarScatter\";\nvar RADAR_AREA = \"radarArea\";\nvar RADAR_COLUMN = \"radarColumn\";\nvar RADAR_LINE = \"radarLine\";\nvar RANGE_AREA = \"rangeArea\";\nvar RANGE_BAR = \"rangeBar\";\nvar RANGE_COLUMN = \"rangeColumn\";\nvar SCATTER = \"scatter\";\nvar SCATTER_LINE = \"scatterLine\";\nvar VERTICAL_AREA = \"verticalArea\";\nvar VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nvar VERTICAL_BULLET = \"verticalBullet\";\nvar VERTICAL_LINE = \"verticalLine\";\nvar VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nvar WATERFALL = \"waterfall\";\nvar EQUALLY_SPACED_SERIES = [\n    BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n    BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nvar LEGEND_ITEM_CLICK = \"legendItemClick\";\nvar LEGEND_ITEM_HOVER = \"legendItemHover\";\nvar LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nvar SERIES_CLICK = \"seriesClick\";\nvar SERIES_HOVER = \"seriesHover\";\nvar SERIES_OVER = \"seriesOver\";\nvar SERIES_LEAVE = \"seriesLeave\";\nvar PLOT_AREA_CLICK = \"plotAreaClick\";\nvar PLOT_AREA_HOVER = \"plotAreaHover\";\nvar PLOT_AREA_LEAVE = \"plotAreaLeave\";\nvar DRAG = \"drag\";\nvar DRAG_END = \"dragEnd\";\nvar DRAG_START = \"dragStart\";\nvar ZOOM_START = \"zoomStart\";\nvar ZOOM = \"zoom\";\nvar ZOOM_END = \"zoomEnd\";\nvar SELECT_START = \"selectStart\";\nvar SELECT = \"select\";\nvar SELECT_END = \"selectEnd\";\nvar RENDER = \"render\";\nvar SHOW_TOOLTIP = \"showTooltip\";\nvar HIDE_TOOLTIP = \"hideTooltip\";\nvar PANE_RENDER = \"paneRender\";\n\nvar LOGARITHMIC = \"log\";\nvar CATEGORY = \"category\";\n\nvar INSIDE_END = \"insideEnd\";\nvar INSIDE_BASE = \"insideBase\";\nvar OUTSIDE_END = \"outsideEnd\";\n\nvar MOUSEWHEEL = \"DOMMouseScroll mousewheel\";\nvar MOUSEWHEEL_DELAY = 150;\n\nexport {\n    INITIAL_ANIMATION_DURATION, FADEIN,\n    LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n    SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE, GLASS,\n    BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n    START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n    X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n    Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n    LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n    SMOOTH, STEP, CATEGORY, FUNNEL,\n    BAR, CANDLESTICK, PIE, COLUMN, AREA,\n    VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n    BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n    RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n    SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n    RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n    RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n    LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n    SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n    DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n    MOUSEWHEEL, MOUSEWHEEL_DELAY, SHOW_TOOLTIP, HIDE_TOOLTIP,\n    EQUALLY_SPACED_SERIES, ABOVE, BELOW\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nvar DEFAULT_ERROR_BAR_WIDTH = 4;\n\nvar ErrorBarBase = (function (ChartElement) {\n    function ErrorBarBase(low, high, isVertical, chart, series, options) {\n        ChartElement.call(this, options);\n\n        this.low = low;\n        this.high = high;\n        this.isVertical = isVertical;\n        this.chart = chart;\n        this.series = series;\n    }\n\n    if ( ChartElement ) ErrorBarBase.__proto__ = ChartElement;\n    ErrorBarBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ErrorBarBase.prototype.constructor = ErrorBarBase;\n\n    ErrorBarBase.prototype.reflow = function reflow (targetBox) {\n        var endCaps = this.options.endCaps;\n        var isVertical = this.isVertical;\n        var axis = this.getAxis();\n        var valueBox = axis.getSlot(this.low, this.high);\n        var centerBox = targetBox.center();\n        var capsWidth = this.getCapsWidth(targetBox, isVertical);\n        var capValue = isVertical ? centerBox.x : centerBox.y;\n        var capStart = capValue - capsWidth;\n        var capEnd = capValue + capsWidth;\n        var linePoints;\n\n        if (isVertical) {\n            linePoints = [\n                new Point(centerBox.x, valueBox.y1),\n                new Point(centerBox.x, valueBox.y2)\n            ];\n            if (endCaps) {\n                linePoints.push(new Point(capStart, valueBox.y1),\n                    new Point(capEnd, valueBox.y1),\n                    new Point(capStart, valueBox.y2),\n                    new Point(capEnd, valueBox.y2));\n            }\n            this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n        } else {\n            linePoints = [\n                new Point(valueBox.x1, centerBox.y),\n                new Point(valueBox.x2, centerBox.y)\n            ];\n            if (endCaps) {\n                linePoints.push(new Point(valueBox.x1, capStart),\n                    new Point(valueBox.x1, capEnd),\n                    new Point(valueBox.x2, capStart),\n                    new Point(valueBox.x2, capEnd));\n            }\n            this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n        }\n\n        this.linePoints = linePoints;\n    };\n\n    ErrorBarBase.prototype.getCapsWidth = function getCapsWidth (box, isVertical) {\n        var boxSize = isVertical ? box.width() : box.height();\n        var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n        return capsWidth;\n    };\n\n    ErrorBarBase.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var visual = options.visual;\n\n        if (visual) {\n            this.visual = visual({\n                low: this.low,\n                high: this.high,\n                rect: this.box.toRect(),\n                sender: this.getSender(),\n                options: {\n                    endCaps: options.endCaps,\n                    color: options.color,\n                    line: options.line\n                },\n                createVisual: function () {\n                    this$1.createDefaultVisual();\n                    var defaultVisual = this$1.visual;\n                    delete this$1.visual;\n                    return defaultVisual;\n                }\n            });\n        } else {\n            this.createDefaultVisual();\n        }\n    };\n\n    ErrorBarBase.prototype.createDefaultVisual = function createDefaultVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var linePoints = ref.linePoints;\n        var lineOptions = {\n            stroke: {\n                color: options.color,\n                width: options.line.width,\n                dashType: options.line.dashType\n            }\n        };\n\n        ChartElement.prototype.createVisual.call(this);\n\n        for (var idx = 0; idx < linePoints.length; idx += 2) {\n            var line = new draw.Path(lineOptions)\n                .moveTo(linePoints[idx].x, linePoints[idx].y)\n                .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n            alignPathToPixel(line);\n            this$1.visual.append(line);\n        }\n    };\n\n    return ErrorBarBase;\n}(ChartElement));\n\nsetDefaultOptions(ErrorBarBase, {\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    },\n    endCaps: true,\n    line: {\n        width: 2\n    },\n    zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nvar CategoricalErrorBar = (function (ErrorBarBase) {\n    function CategoricalErrorBar () {\n        ErrorBarBase.apply(this, arguments);\n    }\n\n    if ( ErrorBarBase ) CategoricalErrorBar.__proto__ = ErrorBarBase;\n    CategoricalErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n    CategoricalErrorBar.prototype.constructor = CategoricalErrorBar;\n\n    CategoricalErrorBar.prototype.getAxis = function getAxis () {\n        var axis = this.chart.seriesValueAxis(this.series);\n\n        return axis;\n    };\n\n    return CategoricalErrorBar;\n}(ErrorBarBase));\n\nexport default CategoricalErrorBar;","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nvar MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state, dryRun) {\n    if ( state === void 0 ) state = {};\n    if ( dryRun === void 0 ) dryRun = false;\n\n    var defaults = state.defaults = state.defaults || {};\n    var depth = state.depth = state.depth || 0;\n    var needsEval = false;\n\n    state.excluded = state.excluded || [];\n\n    if (depth > MAX_EXPAND_DEPTH) {\n        return null;\n    }\n\n    for (var property in options) {\n        if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n            var propValue = options[property];\n            if (isFunction(propValue)) {\n                needsEval = true;\n                if (!dryRun) {\n                    options[property] = valueOrDefault(propValue(context), defaults[property]);\n                }\n            } else if (isObject(propValue)) {\n                if (!dryRun) {\n                    state.defaults = defaults[property];\n                }\n                state.depth++;\n                needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n                state.depth--;\n            }\n        }\n    }\n\n    return needsEval;\n}","export default function categoriesCount(series) {\n    var seriesCount = series.length;\n    var categories = 0;\n\n    for (var i = 0; i < seriesCount; i++) {\n        categories = Math.max(categories, series[i].data.length);\n    }\n\n    return categories;\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport SeriesBinder from './series-binder';\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport evalOptions from './utils/eval-options';\nimport categoriesCount from './utils/categories-count';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nvar CategoricalChart = (function (ChartElement) {\n    function CategoricalChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n        // Value axis ranges grouped by axis name, e.g.:\n        // primary: { min: 0, max: 1 }\n        this.valueAxisRanges = {};\n\n        this.points = [];\n        this.categoryPoints = [];\n        this.seriesPoints = [];\n        this.seriesOptions = [];\n        this._evalSeries = [];\n\n        this.render();\n    }\n\n    if ( ChartElement ) CategoricalChart.__proto__ = ChartElement;\n    CategoricalChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    CategoricalChart.prototype.constructor = CategoricalChart;\n\n    CategoricalChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    CategoricalChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n        var options = this.seriesOptions[seriesIx];\n        if (!options) {\n            var defaults = this.pointType().prototype.defaults;\n            this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n                vertical: !this.options.invertAxes\n            }, series);\n        }\n\n        return options;\n    };\n\n    CategoricalChart.prototype.plotValue = function plotValue (point) {\n        if (!point) {\n            return 0;\n        }\n\n        if (this.options.isStacked100 && isNumber(point.value)) {\n            var categoryIx = point.categoryIx;\n            var categoryPoints = this.categoryPoints[categoryIx];\n            var otherValues = [];\n            var categorySum = 0;\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n                if (other) {\n                    var stack = point.series.stack;\n                    var otherStack = other.series.stack;\n\n                    if ((stack && otherStack) && stack.group !== otherStack.group) {\n                        continue;\n                    }\n\n                    if (isNumber(other.value)) {\n                        categorySum += Math.abs(other.value);\n                        otherValues.push(Math.abs(other.value));\n                    }\n                }\n            }\n\n            if (categorySum > 0) {\n                return point.value / categorySum;\n            }\n        }\n\n        return point.value;\n    };\n\n    CategoricalChart.prototype.plotRange = function plotRange (point, startValue) {\n        var this$1 = this;\n        if ( startValue === void 0 ) startValue = 0;\n\n        var categoryPoints = this.categoryPoints[point.categoryIx];\n\n        if (this.options.isStacked) {\n            var plotValue = this.plotValue(point);\n            var positive = plotValue >= 0;\n            var prevValue = startValue;\n            var isStackedBar = false;\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n\n                if (point === other) {\n                    break;\n                }\n\n                var stack = point.series.stack;\n                var otherStack = other.series.stack;\n                if (stack && otherStack) {\n                    if (typeof stack === STRING && stack !== otherStack) {\n                        continue;\n                    }\n\n                    if (stack.group && stack.group !== otherStack.group) {\n                        continue;\n                    }\n                }\n\n                var otherValue = this$1.plotValue(other);\n                if ((otherValue >= 0 && positive) ||\n                    (otherValue < 0 && !positive)) {\n                    prevValue += otherValue;\n                    plotValue += otherValue;\n                    isStackedBar = true;\n\n                    if (this$1.options.isStacked100) {\n                        plotValue = Math.min(plotValue, 1);\n                    }\n                }\n            }\n\n            if (isStackedBar) {\n                prevValue -= startValue;\n            }\n\n            return [ prevValue, plotValue ];\n        }\n\n        var series = point.series;\n        var valueAxis = this.seriesValueAxis(series);\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n        return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n    };\n\n    CategoricalChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n        var this$1 = this;\n\n        var min = MAX_VALUE;\n        var max = MIN_VALUE;\n\n        for (var i = 0; i < this.categoryPoints.length; i++) {\n            var categoryPoints = this$1.categoryPoints[i];\n            if (!categoryPoints) {\n                continue;\n            }\n\n            for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n                var point = categoryPoints[pIx];\n                if (point) {\n                    if (point.series.stack === stackName || point.series.axis === axisName) {\n                        var to = this$1.plotRange(point, 0)[1];\n                        if (defined(to) && isFinite(to)) {\n                            max = Math.max(max, to);\n                            min = Math.min(min, to);\n                        }\n                    }\n                }\n            }\n        }\n\n        return { min: min, max: max };\n    };\n\n    CategoricalChart.prototype.updateStackRange = function updateStackRange () {\n        var this$1 = this;\n\n        var ref = this.options;\n        var isStacked = ref.isStacked;\n        var chartSeries = ref.series;\n        var limitsCache = {};\n\n        if (isStacked) {\n            for (var i = 0; i < chartSeries.length; i++) {\n                var series = chartSeries[i];\n                var axisName = series.axis;\n                var key = axisName + series.stack;\n\n                var limits = limitsCache[key];\n                if (!limits) {\n                    limits = this$1.stackLimits(axisName, series.stack);\n\n                    var errorTotals = this$1.errorTotals;\n                    if (errorTotals) {\n                        if (errorTotals.negative.length) {\n                            limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n                        }\n                        if (errorTotals.positive.length) {\n                            limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n                        }\n                    }\n\n                    if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n                        limitsCache[key] = limits;\n                    } else {\n                        limits = null;\n                    }\n                }\n\n                if (limits) {\n                    this$1.valueAxisRanges[axisName] = limits;\n                }\n            }\n        }\n    };\n\n    CategoricalChart.prototype.addErrorBar = function addErrorBar (point, data, categoryIx) {\n        var value = point.value;\n        var series = point.series;\n        var seriesIx = point.seriesIx;\n        var errorBars = point.options.errorBars;\n        var lowValue = data.fields[ERROR_LOW_FIELD];\n        var highValue = data.fields[ERROR_HIGH_FIELD];\n        var errorRange;\n\n        if (isNumber(lowValue) && isNumber(highValue)) {\n            errorRange = { low: lowValue, high: highValue };\n        } else if (errorBars && defined(errorBars.value)) {\n            this.seriesErrorRanges = this.seriesErrorRanges || [];\n            this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n                new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n            errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n        }\n\n        if (errorRange) {\n            point.low = errorRange.low;\n            point.high = errorRange.high;\n            this.addPointErrorBar(point, categoryIx);\n        }\n    };\n\n    CategoricalChart.prototype.addPointErrorBar = function addPointErrorBar (point, categoryIx) {\n        var isVertical = !this.options.invertAxes;\n        var options = point.options.errorBars;\n        var series = point.series;\n        var low = point.low;\n        var high = point.high;\n\n        if (this.options.isStacked) {\n            var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n            low = stackedErrorRange.low;\n            high = stackedErrorRange.high;\n        } else {\n            var fields = { categoryIx: categoryIx, series: series };\n            this.updateRange({ value: low }, fields);\n            this.updateRange({ value: high }, fields);\n        }\n\n        var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n        point.errorBars = [ errorBar ];\n        point.append(errorBar);\n    };\n\n    CategoricalChart.prototype.stackedErrorRange = function stackedErrorRange (point, categoryIx) {\n        var plotValue = this.plotRange(point, 0)[1] - point.value;\n        var low = point.low + plotValue;\n        var high = point.high + plotValue;\n\n        this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n        if (low < 0) {\n            this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n        }\n\n        if (high > 0) {\n            this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n        }\n\n        return { low: low, high: high };\n    };\n\n    CategoricalChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n\n        var categoryPoints = this.categoryPoints[categoryIx];\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        var seriesPoints = this.seriesPoints[seriesIx];\n        if (!seriesPoints) {\n            this.seriesPoints[seriesIx] = seriesPoints = [];\n        }\n\n        var point = this.createPoint(data, fields);\n        if (point) {\n            Object.assign(point, fields);\n\n            point.owner = this;\n            point.noteText = data.fields.noteText;\n            if (!defined(point.dataItem)) {\n                point.dataItem = series.data[categoryIx];\n            }\n            this.addErrorBar(point, data, categoryIx);\n        }\n\n        this.points.push(point);\n        seriesPoints.push(point);\n        categoryPoints.push(point);\n\n        this.updateRange(data.valueFields, fields);\n    };\n\n    CategoricalChart.prototype.evalPointOptions = function evalPointOptions (options, value, category, categoryIx, series, seriesIx) {\n        var state = { defaults: series._defaults, excluded: [ \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n        var doEval = this._evalSeries[seriesIx];\n        if (!defined(doEval)) {\n            this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n        }\n\n        var pointOptions = options;\n        if (doEval) {\n            pointOptions = deepExtend({}, pointOptions);\n            evalOptions(pointOptions, {\n                value: value,\n                category: category,\n                index: categoryIx,\n                series: series,\n                dataItem: series.data[categoryIx]\n            }, state);\n        }\n\n        return pointOptions;\n    };\n\n    CategoricalChart.prototype.updateRange = function updateRange (data, fields) {\n        var axisName = fields.series.axis;\n        var value = data.value;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (isFinite(value) && value !== null) {\n            axisRange = this.valueAxisRanges[axisName] =\n                axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, value);\n            axisRange.max = Math.max(axisRange.max, value);\n        }\n    };\n\n    CategoricalChart.prototype.seriesValueAxis = function seriesValueAxis (series) {\n        var plotArea = this.plotArea;\n        var axisName = series.axis;\n        var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n        if (!axis) {\n            throw new Error(\"Unable to locate value axis with name \" + axisName);\n        }\n\n        return axis;\n    };\n\n    CategoricalChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var categorySlots = this.categorySlots = [];\n        var chartPoints = this.points;\n        var categoryAxis = this.categoryAxis;\n        var pointIx = 0;\n\n        this.traverseDataPoints(function (data, fields) {\n            var categoryIx = fields.categoryIx;\n            var currentSeries = fields.series;\n\n            var valueAxis = this$1.seriesValueAxis(currentSeries);\n            var point = chartPoints[pointIx++];\n\n            var categorySlot = categorySlots[categoryIx];\n            if (!categorySlot) {\n                categorySlots[categoryIx] = categorySlot =\n                    this$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n            }\n\n            if (point) {\n                var plotRange = this$1.plotRange(point, valueAxis.startValue());\n                var valueSlot = this$1.valueSlot(valueAxis, plotRange);\n                if (valueSlot) {\n                    var pointSlot = this$1.pointSlot(categorySlot, valueSlot);\n\n                    point.aboveAxis = this$1.aboveAxis(point, valueAxis);\n                    point.stackValue = plotRange[1];\n\n                    if (this$1.options.isStacked100) {\n                        point.percentage = this$1.plotValue(point);\n                    }\n\n                    this$1.reflowPoint(point, pointSlot);\n                } else {\n                    point.visible = false;\n                }\n            }\n        });\n\n        this.reflowCategories(categorySlots);\n        if (!this.options.clip && this.options.limitPoints && this.points.length) {\n            this.limitPoints();\n        }\n\n        this.box = targetBox;\n    };\n\n    CategoricalChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n        return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n    };\n\n    CategoricalChart.prototype.limitPoints = function limitPoints () {\n        var this$1 = this;\n\n        var categoryPoints = this.categoryPoints;\n        var points = categoryPoints[0].concat(last(categoryPoints));\n        for (var idx = 0; idx < points.length; idx++) {\n            if (points[idx]) {\n                this$1.limitPoint(points[idx]);\n            }\n        }\n    };\n\n    CategoricalChart.prototype.limitPoint = function limitPoint (point) {\n        var limittedSlot = this.categoryAxis.limitSlot(point.box);\n        if (!limittedSlot.equals(point.box)) {\n            point.reflow(limittedSlot);\n        }\n    };\n\n    CategoricalChart.prototype.aboveAxis = function aboveAxis (point, valueAxis) {\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n        var value = point.value;\n\n        return valueAxis.options.reverse ?\n            value < axisCrossingValue : value >= axisCrossingValue;\n    };\n\n    CategoricalChart.prototype.categoryAxisCrossingValue = function categoryAxisCrossingValue (valueAxis) {\n        var categoryAxis = this.categoryAxis;\n        var options = valueAxis.options;\n        var crossingValues = [].concat(\n            options.axisCrossingValues || options.axisCrossingValue\n        );\n\n        return crossingValues[categoryAxis.axisIndex || 0] || 0;\n    };\n\n    CategoricalChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n        point.reflow(pointSlot);\n    };\n\n    CategoricalChart.prototype.reflowCategories = function reflowCategories () { };\n\n    CategoricalChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var options = this.options;\n        var invertAxes = options.invertAxes;\n        var slotX = invertAxes ? valueSlot : categorySlot;\n        var slotY = invertAxes ? categorySlot : valueSlot;\n\n        return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n    };\n\n    CategoricalChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n        return categoryAxis.getSlot(categoryIx);\n    };\n\n    CategoricalChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var count = categoriesCount(series);\n        var seriesCount = series.length;\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            this$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n        }\n\n        for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n            for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n                var currentSeries = series[seriesIx$1];\n                var currentCategory = this$1.categoryAxis.categoryAt(categoryIx);\n                var pointData = this$1._bindPoint(currentSeries, seriesIx$1, categoryIx);\n\n                callback(pointData, {\n                    category: currentCategory,\n                    categoryIx: categoryIx,\n                    series: currentSeries,\n                    seriesIx: seriesIx$1\n                });\n            }\n        }\n\n        for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n            this$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n        }\n    };\n\n    CategoricalChart.prototype._outOfRangeCallback = function _outOfRangeCallback (series, field, seriesIx, callback) {\n        var outOfRangePoint = series[field];\n        if (outOfRangePoint) {\n            var categoryIx = outOfRangePoint.categoryIx;\n            var pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n            callback(pointData, {\n                category: outOfRangePoint.category,\n                categoryIx: categoryIx,\n                series: series,\n                seriesIx: seriesIx,\n                dataItem: outOfRangePoint.item\n            });\n        }\n    };\n\n    CategoricalChart.prototype._bindPoint = function _bindPoint (series, seriesIx, categoryIx, item) {\n        if (!this._bindCache) {\n            this._bindCache = [];\n        }\n\n        var bindCache = this._bindCache[seriesIx];\n        if (!bindCache) {\n            bindCache = this._bindCache[seriesIx] = [];\n        }\n\n        var data = bindCache[categoryIx];\n        if (!data) {\n            data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n        }\n\n        return data;\n    };\n\n    CategoricalChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        if (point.value === null) {\n            return \"\";\n        }\n\n        return this.chartService.format.auto(format, point.value);\n    };\n\n    CategoricalChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields.value;\n    };\n\n    return CategoricalChart;\n}(ChartElement));\n\nsetDefaultOptions(CategoricalChart, {\n    series: [],\n    invertAxes: false,\n    isStacked: false,\n    clip: true,\n    limitPoints: true\n});\n\nexport default CategoricalChart;","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nvar PointEventsMixin = {\n    click: function(chart, e) {\n        return chart.trigger(\n            SERIES_CLICK,\n            this.eventArgs(e)\n        );\n    },\n\n    hover: function(chart, e) {\n        return chart.trigger(\n            SERIES_HOVER,\n            this.eventArgs(e)\n        );\n    },\n\n    over: function(chart, e) {\n        return chart.trigger(\n            SERIES_OVER,\n            this.eventArgs(e)\n        );\n    },\n\n    out: function(chart, e) {\n        return chart.trigger(\n            SERIES_LEAVE,\n            this.eventArgs(e)\n        );\n    },\n\n    eventArgs: function(e) {\n        return {\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            category: this.category,\n            series: this.series,\n            dataItem: this.dataItem,\n            runningTotal: this.runningTotal,\n            total: this.total,\n            element: eventElement(e),\n            originalEvent: e,\n            point: this\n        };\n    }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nvar NoteMixin = {\n    createNote: function() {\n        var options = this.options.notes;\n        var text = this.noteText || options.label.text;\n\n        if (options.visible !== false && defined(text) && text !== null) {\n            this.note = new Note({\n                value: this.value,\n                text: text,\n                dataItem: this.dataItem,\n                category: this.category,\n                series: this.series\n            }, this.options.notes, this.owner.chartService);\n\n            this.append(this.note);\n        }\n    }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nvar LinePoint = (function (ChartElement) {\n    function LinePoint(value, options) {\n        ChartElement.call(this);\n\n        this.value = value;\n        this.options = options;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.tooltipTracking = true;\n    }\n\n    if ( ChartElement ) LinePoint.__proto__ = ChartElement;\n    LinePoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LinePoint.prototype.constructor = LinePoint;\n\n    LinePoint.prototype.render = function render () {\n        var ref = this.options;\n        var markers = ref.markers;\n        var labels = ref.labels;\n\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        if (markers.visible && markers.size) {\n            this.marker = this.createMarker();\n            this.append(this.marker);\n        }\n\n        if (labels.visible) {\n            var labelTemplate = getTemplate(labels);\n            var pointData = this.pointData();\n            var labelText = this.value;\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else if (labels.format) {\n                labelText = this.formatValue(labels.format);\n            }\n            this.label = new TextBox(labelText,\n                deepExtend({\n                    align: CENTER,\n                    vAlign: CENTER,\n                    margin: {\n                        left: 5,\n                        right: 5\n                    },\n                    zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n                }, labels),\n                pointData\n            );\n            this.append(this.label);\n        }\n\n        this.createNote();\n\n        if (this.errorBar) {\n            this.append(this.errorBar);\n        }\n    };\n\n    LinePoint.prototype.markerBorder = function markerBorder () {\n        var options = this.options.markers;\n        var background = options.background;\n        var border = deepExtend({ color: this.color }, options.border);\n\n        if (!defined(border.color)) {\n            border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n        }\n\n        return border;\n    };\n\n    LinePoint.prototype.createVisual = function createVisual () {};\n\n    LinePoint.prototype.createMarker = function createMarker () {\n        var options = this.options.markers;\n        var marker = new ShapeElement({\n            type: options.type,\n            width: options.size,\n            height: options.size,\n            rotation: options.rotation,\n            background: options.background,\n            border: this.markerBorder(),\n            opacity: options.opacity,\n            zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n            animation: options.animation,\n            visual: options.visual\n        }, {\n            dataItem: this.dataItem,\n            value: this.value,\n            series: this.series,\n            category: this.category\n        });\n\n        return marker;\n    };\n\n    LinePoint.prototype.markerBox = function markerBox () {\n        if (!this.marker) {\n            this.marker = this.createMarker();\n            this.marker.reflow(this._childBox);\n        }\n\n        return this.marker.box;\n    };\n\n    LinePoint.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var aboveAxis = ref.aboveAxis;\n        var vertical = options.vertical;\n\n        this.render();\n\n        this.box = targetBox;\n        var childBox = targetBox.clone();\n\n        if (vertical) {\n            if (aboveAxis) {\n                childBox.y1 -= childBox.height();\n            } else {\n                childBox.y2 += childBox.height();\n            }\n        } else {\n            if (aboveAxis) {\n                childBox.x1 += childBox.width();\n            } else {\n                childBox.x2 -= childBox.width();\n            }\n        }\n\n        this._childBox = childBox;\n        if (this.marker) {\n            this.marker.reflow(childBox);\n        }\n\n        this.reflowLabel(childBox);\n\n        if (this.errorBars) {\n            for (var i = 0; i < this.errorBars.length; i++) {\n                this$1.errorBars[i].reflow(childBox);\n            }\n        }\n\n        if (this.note) {\n            var noteTargetBox = this.markerBox();\n\n            if (!(options.markers.visible && options.markers.size)) {\n                var center = noteTargetBox.center();\n                noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n            }\n\n            this.note.reflow(noteTargetBox);\n        }\n    };\n\n    LinePoint.prototype.reflowLabel = function reflowLabel (box) {\n        var ref = this;\n        var options = ref.options;\n        var label = ref.label;\n        var anchor = options.labels.position;\n\n        if (label) {\n            anchor = anchor === ABOVE ? TOP : anchor;\n            anchor = anchor === BELOW ? BOTTOM : anchor;\n\n            label.reflow(box);\n            label.box.alignTo(this.markerBox(), anchor);\n            label.reflow(label.box);\n        }\n    };\n\n    LinePoint.prototype.createHighlight = function createHighlight () {\n        var markers = this.options.highlight.markers;\n        var defaultColor = this.markerBorder().color;\n        var options = this.options.markers;\n        var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n        var shadow = new ShapeElement({\n            type: options.type,\n            width: size,\n            height: size,\n            rotation: options.rotation,\n            background: markers.color || defaultColor,\n            border: {\n                color: markers.border.color,\n                width: markers.border.width,\n                opacity: valueOrDefault(markers.border.opacity, 1)\n            },\n            opacity: valueOrDefault(markers.opacity, 1)\n        });\n        shadow.reflow(this._childBox);\n\n        return shadow.getElement();\n    };\n\n    LinePoint.prototype.highlightVisual = function highlightVisual () {\n        return (this.marker || {}).visual;\n    };\n\n    LinePoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var marker = this.marker;\n        var visual, rect;\n\n        if (marker) {\n            rect = marker.paddingBox.toRect();\n            visual = marker.visual;\n        } else {\n            var size = this.options.markers.size;\n            var halfSize = size / 2;\n            var center = this.box.center();\n            rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n        }\n\n        return {\n            options: this.options,\n            rect: rect,\n            visual: visual\n        };\n    };\n\n    LinePoint.prototype.tooltipAnchor = function tooltipAnchor () {\n        var markerBox = this.markerBox();\n        var clipBox = this.owner.pane.clipBox();\n        var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n        if (showTooltip) {\n            var x = markerBox.x2 + TOOLTIP_OFFSET;\n            var horizontalAlign = LEFT;\n            var y, verticalAlign;\n\n            if (this.aboveAxis) {\n                y = markerBox.y1;\n                verticalAlign = BOTTOM;\n            } else {\n                y = markerBox.y2;\n                verticalAlign = TOP;\n            }\n\n            return {\n                point: new Point(x, y),\n                align: {\n                    horizontal: horizontalAlign,\n                    vertical: verticalAlign\n                }\n            };\n        }\n    };\n\n    LinePoint.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    LinePoint.prototype.overlapsBox = function overlapsBox (box) {\n        var markerBox = this.markerBox();\n        return markerBox.overlaps(box);\n    };\n\n    LinePoint.prototype.unclipElements = function unclipElements () {\n        if (this.label) {\n            this.label.options.noclip = true;\n        }\n\n        if (this.note) {\n            this.note.options.noclip = true;\n        }\n    };\n\n    LinePoint.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            series: this.series\n        };\n    };\n\n    return LinePoint;\n}(ChartElement));\n\nLinePoint.prototype.defaults = {\n    vertical: true,\n    markers: {\n        visible: true,\n        background: WHITE,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        border: {\n            width: 2\n        },\n        opacity: 1\n    },\n    labels: {\n        visible: false,\n        position: ABOVE,\n        margin: getSpacing(3),\n        padding: getSpacing(4),\n        animation: {\n            type: FADEIN,\n            delay: INITIAL_ANIMATION_DURATION\n        }\n    },\n    notes: {\n        label: {}\n    },\n    highlight: {\n        markers: {\n            border: {\n                color: \"#fff\",\n                width: 2\n            }\n        },\n        zIndex: HIGHLIGHT_ZINDEX\n    },\n    errorBars: {\n        line: {\n            width: 1\n        }\n    }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar LineSegment = (function (ChartElement) {\n    function LineSegment(linePoints, series, seriesIx) {\n        ChartElement.call(this);\n\n        this.linePoints = linePoints;\n        this.series = series;\n        this.seriesIx = seriesIx;\n    }\n\n    if ( ChartElement ) LineSegment.__proto__ = ChartElement;\n    LineSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LineSegment.prototype.constructor = LineSegment;\n\n    LineSegment.prototype.points = function points () {\n        return this.toGeometryPoints(this.linePoints);\n    };\n\n    LineSegment.prototype.toGeometryPoints = function toGeometryPoints (points) {\n        var result = [];\n        for (var i = 0, length = points.length; i < length; i++) {\n            if (points[i] && points[i].visible !== false) {\n                result.push(points[i]._childBox.toRect().center());\n            }\n        }\n\n        return result;\n    };\n\n    LineSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var customVisual = this.series.visual;\n        if (customVisual) {\n            this.visual = customVisual({\n                points: this.toGeometryPoints(this.linePoints),\n                series: this.series,\n                sender: this.getSender(),\n                createVisual: function () {\n                    this$1.segmentVisual();\n\n                    return this$1.visual;\n                }\n            });\n            if (this.visual && !defined(this.visual.options.zIndex)) {\n                this.visual.options.zIndex = this.series.zIndex;\n            }\n        } else {\n            this.segmentVisual();\n        }\n    };\n\n    LineSegment.prototype.segmentVisual = function segmentVisual () {\n        var ref = this;\n        var options = ref.options;\n        var series = ref.series;\n        var color = series.color;\n        var defaults = series._defaults;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        var line = draw.Path.fromPoints(this.points(), {\n            stroke: {\n                color: color,\n                width: series.width,\n                opacity: series.opacity,\n                dashType: series.dashType\n            },\n            zIndex: series.zIndex\n        });\n\n        if (options.closed) {\n            line.close();\n        }\n\n        this.visual = line;\n    };\n\n    LineSegment.prototype.aliasFor = function aliasFor (e, coords) {\n        return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n    };\n\n    return LineSegment;\n}(ChartElement));\n\nsetDefaultOptions(LineSegment, {\n    closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nvar StepLineMixin = {\n    calculateStepPoints: function(points) {\n        var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n        var ref = categoryAxis.options;\n        var justified = ref.justified;\n        var vertical = ref.vertical;\n        var reverse = ref.reverse;\n\n        var stepAxis = vertical ? X : Y;\n        var axis = vertical ? Y : X;\n        var stepDir = reverse ? 2 : 1;\n        var dir = stepDir;\n\n        var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n        var result = [ previousPoint ];\n\n        for (var idx = 1; idx < points.length; idx++) {\n            var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n            if (previousPoint[stepAxis] !== point[stepAxis]) {\n                var stepPoint = new geom.Point();\n                stepPoint[stepAxis] = previousPoint[stepAxis];\n                stepPoint[axis] = point[axis];\n\n                result.push(stepPoint, point);\n            }\n\n            previousPoint = point;\n        }\n\n        if (!justified) {\n            result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n        } else if (previousPoint !== last(result)) {\n            result.push(previousPoint);\n        }\n\n        return result;\n\n    }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n    var box = lintPoint.box;\n    var result = new geom.Point();\n\n    result[stepAxis] = box[stepAxis + stepDir];\n    result[axis] = box[axis + dir];\n\n    return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nvar StepLineSegment = (function (LineSegment) {\n    function StepLineSegment () {\n        LineSegment.apply(this, arguments);\n    }\n\n    if ( LineSegment ) StepLineSegment.__proto__ = LineSegment;\n    StepLineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    StepLineSegment.prototype.constructor = StepLineSegment;\n\n    StepLineSegment.prototype.points = function points () {\n        return this.calculateStepPoints(this.linePoints);\n    };\n\n    return StepLineSegment;\n}(LineSegment));\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nvar SplineSegment = (function (LineSegment) {\n    function SplineSegment () {\n        LineSegment.apply(this, arguments);\n    }\n\n    if ( LineSegment ) SplineSegment.__proto__ = LineSegment;\n    SplineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    SplineSegment.prototype.constructor = SplineSegment;\n\n    SplineSegment.prototype.segmentVisual = function segmentVisual () {\n        var series = this.series;\n        var defaults = series._defaults;\n        var color = series.color;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        var curveProcessor = new CurveProcessor(this.options.closed);\n        var segments = curveProcessor.process(this.points());\n        var curve = new draw.Path({\n            stroke: {\n                color: color,\n                width: series.width,\n                opacity: series.opacity,\n                dashType: series.dashType\n            },\n            zIndex: series.zIndex\n        });\n\n        curve.segments.push.apply(curve.segments, segments);\n\n        this.visual = curve;\n    };\n\n    return SplineSegment;\n}(LineSegment));\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar LineChartMixin = {\n    renderSegments: function() {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesPoints = ref.seriesPoints;\n        var series = options.series;\n        var seriesCount = seriesPoints.length;\n        var lastSegment;\n\n        this._segments = [];\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var sortedPoints = this$1.sortPoints(seriesPoints[seriesIx]);\n            var pointCount = sortedPoints.length;\n            var linePoints = [];\n\n            for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n                var point = sortedPoints[pointIx];\n                if (point) {\n                    linePoints.push(point);\n                } else if (this$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n                    if (linePoints.length > 1) {\n                        lastSegment = this$1.createSegment(\n                            linePoints, currentSeries, seriesIx, lastSegment\n                        );\n                        this$1._addSegment(lastSegment);\n                    }\n                    linePoints = [];\n                }\n            }\n\n            if (linePoints.length > 1) {\n                lastSegment = this$1.createSegment(\n                    linePoints, currentSeries, seriesIx, lastSegment\n                );\n                this$1._addSegment(lastSegment);\n            }\n        }\n\n        this.children.unshift.apply(this.children, this._segments);\n    },\n\n    _addSegment: function(segment) {\n        this._segments.push(segment);\n        segment.parent = this;\n    },\n\n    sortPoints: function(points) {\n        return points;\n    },\n\n    seriesMissingValues: function(series) {\n        var missingValues = series.missingValues;\n        var assumeZero = !missingValues && this.options.isStacked;\n\n        return assumeZero ? ZERO : missingValues || INTERPOLATE;\n    },\n\n    getNearestPoint: function(x, y, seriesIx) {\n        var target = new Point(x, y);\n        var allPoints = this.seriesPoints[seriesIx];\n        var nearestPointDistance = MAX_VALUE;\n        var nearestPoint;\n\n        for (var i = 0; i < allPoints.length; i++) {\n            var point = allPoints[i];\n\n            if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n                var pointBox = point.box;\n                var pointDistance = pointBox.center().distanceTo(target);\n\n                if (pointDistance < nearestPointDistance) {\n                    nearestPoint = point;\n                    nearestPointDistance = pointDistance;\n                }\n            }\n        }\n\n        return nearestPoint;\n    }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar ClipAnimation = (function (superclass) {\n    function ClipAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) ClipAnimation.__proto__ = superclass;\n    ClipAnimation.prototype = Object.create( superclass && superclass.prototype );\n    ClipAnimation.prototype.constructor = ClipAnimation;\n\n    ClipAnimation.prototype.setup = function setup () {\n        this._setEnd(this.options.box.x1);\n    };\n\n    ClipAnimation.prototype.step = function step (pos) {\n        var box = this.options.box;\n        this._setEnd(interpolateValue(box.x1, box.x2, pos));\n    };\n\n    ClipAnimation.prototype._setEnd = function _setEnd (x) {\n        var element = this.element;\n        var segments = element.segments;\n        var topRight = segments[1].anchor();\n        var bottomRight = segments[2].anchor();\n\n        element.suspend();\n        topRight.setX(x);\n        element.resume();\n        bottomRight.setX(x);\n    };\n\n    return ClipAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(ClipAnimation, {\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n    for (var idx = 0; idx < elements.length; idx++) {\n        if (defined(elements[idx].zIndex)) {\n            return true;\n        }\n    }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nvar ClipAnimationMixin = {\n    createAnimation: function() {\n        var root = this.getRoot();\n        if (root && (root.options || {}).transitions !== false) {\n            var box = root.size();\n            var clipPath = draw.Path.fromRect(box.toRect());\n            this.visual.clip(clipPath);\n            this.animation = new ClipAnimation(clipPath, {\n                box: box\n            });\n            if (anyHasZIndex(this.options.series)) {\n                this._setChildrenAnimation(clipPath);\n            }\n        }\n    },\n\n    _setChildrenAnimation: function(clipPath) {\n        var points = this.animationPoints();\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            if (point && point.visual && defined(point.visual.options.zIndex)) {\n                point.visual.clip(clipPath);\n            }\n        }\n    }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nvar LineChart = (function (CategoricalChart) {\n    function LineChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) LineChart.__proto__ = CategoricalChart;\n    LineChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    LineChart.prototype.constructor = LineChart;\n\n    LineChart.prototype.render = function render () {\n\n        CategoricalChart.prototype.render.call(this);\n\n        this.updateStackRange();\n        this.renderSegments();\n    };\n\n    LineChart.prototype.pointType = function pointType () {\n        return LinePoint;\n    };\n\n    LineChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var missingValues = this.seriesMissingValues(series);\n        var value = data.valueFields.value;\n\n        if (!defined(value) || value === null) {\n            if (missingValues === ZERO) {\n                value = 0;\n            } else {\n                return null;\n            }\n        }\n\n        var pointOptions = this.pointOptions(series, seriesIx);\n        pointOptions = this.evalPointOptions(\n            pointOptions, value, category, categoryIx, series, seriesIx\n        );\n\n        var color = data.fields.color || series.color;\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new LinePoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    LineChart.prototype.plotRange = function plotRange (point) {\n        var this$1 = this;\n\n        var plotValue = this.plotValue(point);\n\n        if (this.options.isStacked) {\n            var categoryIx = point.categoryIx;\n            var categoryPoints = this.categoryPoints[categoryIx];\n\n            for (var i = 0; i < categoryPoints.length; i++) {\n                var other = categoryPoints[i];\n\n                if (point === other) {\n                    break;\n                }\n\n                plotValue += this$1.plotValue(other);\n\n                if (this$1.options.isStacked100) {\n                    plotValue = Math.min(plotValue, 1);\n                }\n            }\n\n        }\n\n        return [ plotValue, plotValue ];\n    };\n\n    LineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === STEP) {\n            pointType = StepLineSegment;\n        } else if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx);\n    };\n\n    LineChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            result.push((points[idx] || {}).marker);\n        }\n        return result.concat(this._segments);\n    };\n\n    return LineChart;\n}(CategoricalChart));\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nvar AreaSegment = (function (LineSegment) {\n    function AreaSegment(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n        LineSegment.call(this, linePoints, currentSeries, seriesIx);\n\n        this.prevSegment = prevSegment;\n        this.stackPoints = stackPoints;\n    }\n\n    if ( LineSegment ) AreaSegment.__proto__ = LineSegment;\n    AreaSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n    AreaSegment.prototype.constructor = AreaSegment;\n\n    AreaSegment.prototype.createVisual = function createVisual () {\n        var series = this.series;\n        var defaults = series._defaults;\n        var lineOptions = series.line || {};\n        var color = series.color;\n\n        if (isFunction(color) && defaults) {\n            color = defaults.color;\n        }\n\n        this.visual = new draw.Group({\n            zIndex: series.zIndex\n        });\n\n        this.createFill({\n            fill: {\n                color: color,\n                opacity: series.opacity\n            },\n            stroke: null\n        });\n\n        if (lineOptions.width > 0 && lineOptions.visible !== false) {\n            this.createStroke({\n                stroke: deepExtend({\n                    color: color,\n                    opacity: series.opacity,\n                    lineCap: \"butt\"\n                }, lineOptions)\n            });\n        }\n    };\n\n    AreaSegment.prototype.strokeSegments = function strokeSegments () {\n        var segments = this._strokeSegments;\n\n        if (!segments) {\n            segments = this._strokeSegments = this.createStrokeSegments();\n        }\n\n        return segments;\n    };\n\n    AreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.points());\n    };\n\n    AreaSegment.prototype.stackSegments = function stackSegments () {\n        if (this.prevSegment) {\n            return this.prevSegment.createStackSegments(this.stackPoints);\n        }\n\n        return this.createStackSegments(this.stackPoints);\n    };\n\n    AreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n        return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n    };\n\n    AreaSegment.prototype.segmentsFromPoints = function segmentsFromPoints (points) {\n        return points.map(function (point) { return new geom.Segment(point); });\n    };\n\n    AreaSegment.prototype.createStroke = function createStroke (style) {\n        var stroke = new draw.Path(style);\n        stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n        this.visual.append(stroke);\n    };\n\n    AreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n        return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n    };\n\n    AreaSegment.prototype.createFill = function createFill (style) {\n        var strokeSegments = this.strokeSegments();\n        var fillSegments = strokeSegments.slice(0);\n        var hasStackSegments = this.hasStackSegment();\n\n        if (hasStackSegments) {\n            var stackSegments = this.stackSegments();\n\n            append(fillSegments, stackSegments);\n        }\n\n        var fill = new draw.Path(style);\n        fill.segments.push.apply(fill.segments, fillSegments);\n\n        if (!hasStackSegments && strokeSegments.length > 1) {\n            this.fillToAxes(fill);\n        }\n\n        this.visual.append(fill);\n    };\n\n    AreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var chart = this.parent;\n        var invertAxes = chart.options.invertAxes;\n        var valueAxis = chart.seriesValueAxis(this.series);\n        var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n        var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n        var segments = this.strokeSegments();\n        var firstPoint = segments[0].anchor();\n        var lastPoint = last(segments).anchor();\n        var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n        if (invertAxes) {\n            fillPath.lineTo(end, lastPoint.y)\n                    .lineTo(end, firstPoint.y);\n        } else {\n            fillPath.lineTo(lastPoint.x, end)\n                    .lineTo(firstPoint.x, end);\n        }\n    };\n\n    return AreaSegment;\n}(LineSegment));\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nvar StepAreaSegment = (function (AreaSegment) {\n    function StepAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) StepAreaSegment.__proto__ = AreaSegment;\n    StepAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    StepAreaSegment.prototype.constructor = StepAreaSegment;\n\n    StepAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n    };\n\n    StepAreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n        return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n    };\n\n    return StepAreaSegment;\n}(AreaSegment));\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nvar SplineAreaSegment = (function (AreaSegment) {\n    function SplineAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) SplineAreaSegment.__proto__ = AreaSegment;\n    SplineAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    SplineAreaSegment.prototype.constructor = SplineAreaSegment;\n\n    SplineAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        var curveProcessor = new CurveProcessor(this.options.closed);\n        var linePoints = this.points();\n\n        return curveProcessor.process(linePoints);\n    };\n\n    SplineAreaSegment.prototype.createStackSegments = function createStackSegments () {\n        var strokeSegments = this.strokeSegments();\n        var stackSegments = [];\n        for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n            var segment = strokeSegments[idx];\n            stackSegments.push(new geom.Segment(\n                segment.anchor(),\n                segment.controlOut(),\n                segment.controlIn()\n            ));\n        }\n\n        return stackSegments;\n    };\n\n    return SplineAreaSegment;\n}(AreaSegment));\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nvar AreaChart = (function (LineChart) {\n    function AreaChart () {\n        LineChart.apply(this, arguments);\n    }\n\n    if ( LineChart ) AreaChart.__proto__ = LineChart;\n    AreaChart.prototype = Object.create( LineChart && LineChart.prototype );\n    AreaChart.prototype.constructor = AreaChart;\n\n    AreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n        var isStacked = this.options.isStacked;\n        var style = (currentSeries.line || {}).style;\n        var previousSegment;\n\n        var stackPoints;\n        if (isStacked && seriesIx > 0 && prevSegment) {\n            var missingValues = this.seriesMissingValues(currentSeries);\n            if (missingValues !== \"gap\") {\n                stackPoints = prevSegment.linePoints;\n                previousSegment = prevSegment;\n            } else {\n                stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n            }\n        }\n\n        var pointType;\n        if (style === STEP) {\n            pointType = StepAreaSegment;\n        } else if (style === SMOOTH) {\n            pointType = SplineAreaSegment;\n        } else {\n            pointType = AreaSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n    };\n\n    AreaChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        LineChart.prototype.reflow.call(this, targetBox);\n\n        var stackPoints = this._stackPoints;\n        if (stackPoints) {\n            for (var idx = 0; idx < stackPoints.length; idx++) {\n                var stackPoint = stackPoints[idx];\n                var pointSlot = this$1.categoryAxis.getSlot(stackPoint.categoryIx);\n                stackPoint.reflow(pointSlot);\n            }\n        }\n    };\n\n    AreaChart.prototype._gapStackPoints = function _gapStackPoints (linePoints, seriesIx, style) {\n        var this$1 = this;\n\n        var seriesPoints = this.seriesPoints;\n        var startIdx = linePoints[0].categoryIx;\n        var length = linePoints.length;\n        if (startIdx < 0) {\n            startIdx = 0;\n            length--;\n        }\n\n        var endIdx = startIdx + length;\n        var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n        var stackPoints = [];\n\n        this._stackPoints = this._stackPoints || [];\n        for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n            var pointIx = categoryIx + pointOffset;\n            var currentSeriesIx = seriesIx;\n            var point = (void 0);\n\n            do {\n                currentSeriesIx--;\n                point = seriesPoints[currentSeriesIx][pointIx];\n            } while (currentSeriesIx > 0 && !point);\n\n            if (point) {\n                if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n                    stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n                }\n\n                stackPoints.push(point);\n\n                if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n                    stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n                }\n            } else {\n                var gapStackPoint = this$1._createGapStackPoint(categoryIx);\n                this$1._stackPoints.push(gapStackPoint);\n                stackPoints.push(gapStackPoint);\n            }\n        }\n\n        return stackPoints;\n    };\n\n    AreaChart.prototype._previousSegmentPoint = function _previousSegmentPoint (categoryIx, pointIx, segmentIx, seriesIdx) {\n        var seriesPoints = this.seriesPoints;\n        var index = seriesIdx;\n        var point;\n\n        while (index > 0 && !point) {\n            index--;\n            point = seriesPoints[index][segmentIx];\n        }\n\n        if (!point) {\n            point = this._createGapStackPoint(categoryIx);\n            this._stackPoints.push(point);\n        } else {\n            point = seriesPoints[index][pointIx];\n        }\n\n        return point;\n    };\n\n    AreaChart.prototype._createGapStackPoint = function _createGapStackPoint (categoryIx) {\n        var options = this.pointOptions({}, 0);\n        var point = new LinePoint(0, options);\n        point.categoryIx = categoryIx;\n        point.series = {};\n\n        return point;\n    };\n\n    AreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    return AreaChart;\n}(LineChart));\n\nexport default AreaChart;","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nvar AxisGroupRangeTracker = (function (Class) {\n    function AxisGroupRangeTracker() {\n        Class.call(this);\n\n        this.axisRanges = {};\n    }\n\n    if ( Class ) AxisGroupRangeTracker.__proto__ = Class;\n    AxisGroupRangeTracker.prototype = Object.create( Class && Class.prototype );\n    AxisGroupRangeTracker.prototype.constructor = AxisGroupRangeTracker;\n\n    AxisGroupRangeTracker.prototype.update = function update (chartAxisRanges) {\n        var axisRanges = this.axisRanges;\n\n        for (var axisName in chartAxisRanges) {\n            var chartRange = chartAxisRanges[axisName];\n            var range = axisRanges[axisName];\n            axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n            range.min = Math.min(range.min, chartRange.min);\n            range.max = Math.max(range.max, chartRange.max);\n        }\n    };\n\n    AxisGroupRangeTracker.prototype.reset = function reset (axisName) {\n        this.axisRanges[axisName] = undefined;\n    };\n\n    AxisGroupRangeTracker.prototype.query = function query (axisName) {\n        return this.axisRanges[axisName];\n    };\n\n    return AxisGroupRangeTracker;\n}(Class));\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nvar BarLabel = (function (ChartElement) {\n    function BarLabel(content, options, pointData) {\n        ChartElement.call(this, options);\n\n        this.textBox = new TextBox(content, this.options, pointData);\n        this.append(this.textBox);\n    }\n\n    if ( ChartElement ) BarLabel.__proto__ = ChartElement;\n    BarLabel.prototype = Object.create( ChartElement && ChartElement.prototype );\n    BarLabel.prototype.constructor = BarLabel;\n\n    BarLabel.prototype.createVisual = function createVisual () {\n        this.textBox.options.noclip = this.options.noclip;\n    };\n\n    BarLabel.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var vertical = options.vertical;\n        var aboveAxis = options.aboveAxis;\n        var text = this.children[0];\n        var textOptions = text.options;\n        var box = text.box;\n        var padding = text.options.padding;\n        var labelBox = targetBox;\n\n        textOptions.align = vertical ? CENTER : LEFT;\n        textOptions.vAlign = vertical ? TOP : CENTER;\n\n        if (options.position === INSIDE_END) {\n            if (vertical) {\n                textOptions.vAlign = TOP;\n\n                if (!aboveAxis && box.height() < targetBox.height()) {\n                    textOptions.vAlign = BOTTOM;\n                }\n            } else {\n                textOptions.align = aboveAxis ? RIGHT : LEFT;\n            }\n        } else if (options.position === CENTER) {\n            textOptions.vAlign = CENTER;\n            textOptions.align = CENTER;\n        } else if (options.position === INSIDE_BASE) {\n            if (vertical) {\n                textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n            } else {\n                textOptions.align = aboveAxis ? LEFT : RIGHT;\n            }\n        } else if (options.position === OUTSIDE_END) {\n            if (vertical) {\n                if (aboveAxis) {\n                    labelBox = new Box(\n                        targetBox.x1, targetBox.y1 - box.height(),\n                        targetBox.x2, targetBox.y1\n                    );\n                } else {\n                    labelBox = new Box(\n                        targetBox.x1, targetBox.y2,\n                        targetBox.x2, targetBox.y2 + box.height()\n                    );\n                }\n            } else {\n                textOptions.align = CENTER;\n                if (aboveAxis) {\n                    labelBox = new Box(\n                        targetBox.x2, targetBox.y1,\n                        targetBox.x2 + box.width(), targetBox.y2\n                    );\n                } else {\n                    labelBox = new Box(\n                        targetBox.x1 - box.width(), targetBox.y1,\n                        targetBox.x1, targetBox.y2\n                    );\n                }\n            }\n        }\n\n        if (!options.rotation) {\n            if (vertical) {\n                padding.left = padding.right =\n                    (labelBox.width() - text.contentBox.width()) / 2;\n            } else {\n                padding.top = padding.bottom =\n                    (labelBox.height() - text.contentBox.height()) / 2;\n            }\n        }\n\n        text.reflow(labelBox);\n    };\n\n    BarLabel.prototype.alignToClipBox = function alignToClipBox (clipBox) {\n        var vertical = this.options.vertical;\n        var field = vertical ? Y : X;\n        var start = field + \"1\";\n        var end = field + \"2\";\n        var text = this.children[0];\n        var parentBox = this.parent.box;\n\n        if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n            var targetBox = text.paddingBox.clone();\n            targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n            targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n            this.reflow(targetBox);\n        }\n    };\n\n    return BarLabel;\n}(ChartElement));\n\nsetDefaultOptions(BarLabel, {\n    position: OUTSIDE_END,\n    margin: getSpacing(3),\n    padding: getSpacing(4),\n    color: BLACK,\n    background: \"\",\n    border: {\n        width: 1,\n        color: \"\"\n    },\n    aboveAxis: true,\n    vertical: false,\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    },\n    zIndex: 2\n});\n\nexport default BarLabel;","export default function hasGradientOverlay(options) {\n    var overlay = options.overlay;\n\n    return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nvar BAR_ALIGN_MIN_WIDTH = 6;\n\nvar Bar = (function (ChartElement) {\n    function Bar(value, options) {\n        ChartElement.call(this);\n\n        this.options = options;\n        this.color = options.color || WHITE;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.value = value;\n    }\n\n    if ( ChartElement ) Bar.__proto__ = ChartElement;\n    Bar.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Bar.prototype.constructor = Bar;\n\n    Bar.prototype.render = function render () {\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        this.createLabel();\n        this.createNote();\n\n        if (this.errorBar) {\n            this.append(this.errorBar);\n        }\n    };\n\n    Bar.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labels = options.labels;\n\n        if (labels.visible) {\n            var pointData = this.pointData();\n            var labelTemplate = getTemplate(labels);\n            var labelText;\n\n            if (labelTemplate) {\n                labelText = labelTemplate(pointData);\n            } else {\n                labelText = this.formatValue(labels.format);\n            }\n\n            this.label = new BarLabel(labelText,\n                deepExtend({\n                    vertical: options.vertical\n                },\n                labels\n            ), pointData);\n            this.append(this.label);\n        }\n    };\n\n    Bar.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    Bar.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        this.render();\n\n        var label = this.label;\n\n        this.box = targetBox;\n\n        if (label) {\n            label.options.aboveAxis = this.aboveAxis;\n            label.reflow(targetBox);\n        }\n\n        if (this.note) {\n            this.note.reflow(targetBox);\n        }\n\n        if (this.errorBars) {\n            for (var i = 0; i < this.errorBars.length; i++) {\n                this$1.errorBars[i].reflow(targetBox);\n            }\n        }\n    };\n\n    Bar.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var box = ref.box;\n        var options = ref.options;\n        var customVisual = options.visual;\n\n        if (this.visible !== false) {\n            ChartElement.prototype.createVisual.call(this);\n\n            if (customVisual) {\n                var visual = this.rectVisual = customVisual({\n                    category: this.category,\n                    dataItem: this.dataItem,\n                    value: this.value,\n                    sender: this.getSender(),\n                    series: this.series,\n                    percentage: this.percentage,\n                    stackValue: this.stackValue,\n                    runningTotal: this.runningTotal,\n                    total: this.total,\n                    rect: box.toRect(),\n                    createVisual: function () {\n                        var group = new draw.Group();\n                        this$1.createRect(group);\n                        return group;\n                    },\n                    options: options\n                });\n\n                if (visual) {\n                    this.visual.append(visual);\n                }\n            } else if (box.width() > 0 && box.height() > 0) {\n                this.createRect(this.visual);\n            }\n        }\n    };\n\n    Bar.prototype.createRect = function createRect (visual) {\n        var options = this.options;\n        var border = options.border;\n        var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n        var rect = this.box.toRect();\n\n        rect.size.width = Math.round(rect.size.width);\n\n        var path = this.rectVisual = draw.Path.fromRect(rect, {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: {\n                color: this.getBorderColor(),\n                width: border.width,\n                opacity: strokeOpacity,\n                dashType: border.dashType\n            }\n        });\n\n        var width = this.box.width();\n        var height = this.box.height();\n\n        var size = options.vertical ? width : height;\n\n        if (size > BAR_ALIGN_MIN_WIDTH) {\n            alignPathToPixel(path);\n\n            // Fixes lineJoin issue in firefox when the joined lines are parallel\n            if (width < 1 || height < 1) {\n                path.options.stroke.lineJoin = \"round\";\n            }\n        }\n\n        visual.append(path);\n\n        if (hasGradientOverlay(options)) {\n            var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n                end: !options.vertical ? [ 0, 1 ] : undefined\n            }, options.overlay));\n\n            visual.append(overlay);\n        }\n    };\n\n    Bar.prototype.createHighlight = function createHighlight (style) {\n        var highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n        return alignPathToPixel(highlight);\n    };\n\n    Bar.prototype.highlightVisual = function highlightVisual () {\n        return this.rectVisual;\n    };\n\n    Bar.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            rect: this.box.toRect(),\n            visual: this.rectVisual\n        };\n    };\n\n    Bar.prototype.getBorderColor = function getBorderColor () {\n        var color = this.color;\n        var border = this.options.border;\n        var brightness = border._brightness || BORDER_BRIGHTNESS;\n        var borderColor = border.color;\n\n        if (!defined(borderColor)) {\n            borderColor = new Color(color).brightness(brightness).toHex();\n        }\n\n        return borderColor;\n    };\n\n    Bar.prototype.tooltipAnchor = function tooltipAnchor () {\n        var ref = this;\n        var options = ref.options;\n        var box = ref.box;\n        var aboveAxis = ref.aboveAxis;\n        var clipBox = this.owner.pane.clipBox() || box;\n        var horizontalAlign = LEFT;\n        var verticalAlign = TOP;\n        var x, y;\n\n        if (options.vertical) {\n            x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n            if (aboveAxis) {\n                y = Math.max(box.y1, clipBox.y1);\n            } else {\n                y = Math.min(box.y2, clipBox.y2);\n                verticalAlign = BOTTOM;\n            }\n        } else {\n            var x1 = Math.max(box.x1, clipBox.x1);\n            var x2 = Math.min(box.x2, clipBox.x2);\n\n            if (options.isStacked) {\n                verticalAlign = BOTTOM;\n                if (aboveAxis) {\n                    horizontalAlign = RIGHT;\n                    x = x2;\n                } else {\n                    x = x1;\n                }\n                y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n            } else {\n                if (aboveAxis) {\n                    x = x2 + TOOLTIP_OFFSET;\n                } else {\n                    x = x1 - TOOLTIP_OFFSET;\n                    horizontalAlign = RIGHT;\n                }\n                y = Math.max(box.y1, clipBox.y1);\n            }\n        }\n\n        return {\n            point: new Point(x, y),\n            align: {\n                horizontal: horizontalAlign,\n                vertical: verticalAlign\n            }\n        };\n    };\n\n    Bar.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    Bar.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            percentage: this.percentage,\n            stackValue: this.stackValue,\n            runningTotal: this.runningTotal,\n            total: this.total,\n            series: this.series\n        };\n    };\n\n    return Bar;\n}(ChartElement));\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n    border: {\n        width: 1\n    },\n    vertical: true,\n    overlay: {\n        gradient: \"glass\"\n    },\n    labels: {\n        visible: false,\n        format: \"{0}\"\n    },\n    opacity: 1,\n    notes: {\n        label: {}\n    }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n    elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n    var length = elements.length;\n\n    for (var idx = length - 1; idx >= 0; idx--) {\n        callback(elements[idx], idx - length - 1);\n    }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nvar ClusterLayout = (function (ChartElement) {\n    function ClusterLayout(options) {\n        ChartElement.call(this, options);\n\n        this.forEach = options.rtl ? forEachReverse : forEach;\n    }\n\n    if ( ChartElement ) ClusterLayout.__proto__ = ChartElement;\n    ClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ClusterLayout.prototype.constructor = ClusterLayout;\n\n    ClusterLayout.prototype.reflow = function reflow (box) {\n        var ref = this.options;\n        var vertical = ref.vertical;\n        var gap = ref.gap;\n        var spacing = ref.spacing;\n        var children = this.children;\n        var count = children.length;\n        var axis = vertical ? Y : X;\n        var slots = count + gap + (spacing * (count - 1));\n        var slotSize = (vertical ? box.height() : box.width()) / slots;\n        var position = box[axis + 1] + slotSize * (gap / 2);\n\n        this.forEach(children, function (child, idx) {\n            var childBox = (child.box || box).clone();\n\n            childBox[axis + 1] = position;\n            childBox[axis + 2] = position + slotSize;\n\n            child.reflow(childBox);\n            if (idx < count - 1) {\n                position += (slotSize * spacing);\n            }\n\n            position += slotSize;\n        });\n    };\n\n    return ClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(ClusterLayout, {\n    vertical: false,\n    gap: 0,\n    spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar StackWrap = (function (ChartElement) {\n    function StackWrap () {\n        ChartElement.apply(this, arguments);\n    }\n\n    if ( ChartElement ) StackWrap.__proto__ = ChartElement;\n    StackWrap.prototype = Object.create( ChartElement && ChartElement.prototype );\n    StackWrap.prototype.constructor = StackWrap;\n\n    StackWrap.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var positionAxis = this.options.vertical ? X : Y;\n        var children = this.children;\n        var childrenCount = children.length;\n        var box = this.box = new Box();\n\n        for (var i = 0; i < childrenCount; i++) {\n            var currentChild = children[i];\n\n            if (currentChild.visible !== false) {\n                var childBox = currentChild.box.clone();\n                childBox.snapTo(targetBox, positionAxis);\n\n                if (i === 0) {\n                    box = this$1.box = childBox.clone();\n                }\n\n                currentChild.reflow(childBox);\n                box.wrap(childBox);\n            }\n        }\n    };\n\n    return StackWrap;\n}(ChartElement));\n\nsetDefaultOptions(StackWrap, {\n    vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar BarChart = (function (CategoricalChart) {\n    function BarChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) BarChart.__proto__ = CategoricalChart;\n    BarChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    BarChart.prototype.constructor = BarChart;\n\n    BarChart.prototype.render = function render () {\n        CategoricalChart.prototype.render.call(this);\n        this.updateStackRange();\n    };\n\n    BarChart.prototype.pointType = function pointType () {\n        return Bar;\n    };\n\n    BarChart.prototype.clusterType = function clusterType () {\n        return ClusterLayout;\n    };\n\n    BarChart.prototype.stackType = function stackType () {\n        return StackWrap;\n    };\n\n    BarChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n        var limits = CategoricalChart.prototype.stackLimits.call(this, axisName, stackName);\n\n        return limits;\n    };\n\n    BarChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var isStacked = options.isStacked;\n        var value = this.pointValue(data);\n        var pointOptions = this.pointOptions(series, seriesIx);\n\n        var labelOptions = pointOptions.labels;\n        if (isStacked) {\n            if (labelOptions.position === OUTSIDE_END) {\n                labelOptions.position = INSIDE_END;\n            }\n        }\n\n        pointOptions.isStacked = isStacked;\n\n        var color = data.fields.color || series.color;\n        if (value < 0 && pointOptions.negativeColor) {\n            color = pointOptions.negativeColor;\n        }\n\n        pointOptions = this.evalPointOptions(\n            pointOptions, value, category, categoryIx, series, seriesIx\n        );\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var pointType = this.pointType();\n        var point = new pointType(value, pointOptions);\n        point.color = color;\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            var clusterType = this.clusterType();\n            cluster = new clusterType({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (isStacked) {\n            var stackWrap = this.getStackWrap(series, cluster);\n            stackWrap.append(point);\n        } else {\n            cluster.append(point);\n        }\n\n        return point;\n    };\n\n    BarChart.prototype.getStackWrap = function getStackWrap (series, cluster) {\n        var stack = series.stack;\n        var stackGroup = stack ? stack.group || stack : stack;\n        var wraps = cluster.children;\n        var stackWrap;\n\n        if (typeof stackGroup === STRING) {\n            for (var i = 0; i < wraps.length; i++) {\n                if (wraps[i]._stackGroup === stackGroup) {\n                    stackWrap = wraps[i];\n                    break;\n                }\n            }\n        } else {\n            stackWrap = wraps[0];\n        }\n\n        if (!stackWrap) {\n            var stackType = this.stackType();\n            stackWrap = new stackType({\n                vertical: !this.options.invertAxes\n            });\n            stackWrap._stackGroup = stackGroup;\n            cluster.append(stackWrap);\n        }\n\n        return stackWrap;\n    };\n\n    BarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx, valueAxis) {\n        var options = this.options;\n        var categorySlot = categoryAxis.getSlot(categoryIx);\n        var startValue = valueAxis.startValue();\n\n        if (options.isStacked) {\n            var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n            var stackAxis = options.invertAxes ? X : Y;\n            categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n        }\n\n        return categorySlot;\n    };\n\n    BarChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    BarChart.prototype.createAnimation = function createAnimation () {\n        this._setAnimationOptions();\n        CategoricalChart.prototype.createAnimation.call(this);\n\n        if (anyHasZIndex(this.options.series)) {\n            this._setChildrenAnimation();\n        }\n    };\n\n    BarChart.prototype._setChildrenAnimation = function _setChildrenAnimation () {\n        var this$1 = this;\n\n        var points = this.points;\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            var pointVisual = point.visual;\n            if (pointVisual && defined(pointVisual.options.zIndex)) {\n                point.options.animation = this$1.options.animation;\n                point.createAnimation();\n            }\n        }\n    };\n\n    BarChart.prototype._setAnimationOptions = function _setAnimationOptions () {\n        var options = this.options;\n        var animation = options.animation || {};\n        var origin;\n\n        if (options.isStacked) {\n            var valueAxis = this.seriesValueAxis(options.series[0]);\n            origin = valueAxis.getSlot(valueAxis.startValue());\n        } else {\n            origin = this.categoryAxis.getSlot(0);\n        }\n\n        animation.origin = new geom.Point(origin.x1, origin.y1);\n        animation.vertical = !options.invertAxes;\n    };\n\n    return BarChart;\n}(CategoricalChart));\n\nsetDefaultOptions(BarChart, {\n    animation: {\n        type: BAR\n    }\n});\n\nexport default BarChart;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar Candlestick = (function (ChartElement) {\n    function Candlestick(value, options) {\n        ChartElement.call(this, options);\n        this.value = value;\n    }\n\n    if ( ChartElement ) Candlestick.__proto__ = ChartElement;\n    Candlestick.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Candlestick.prototype.constructor = Candlestick;\n\n    Candlestick.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var ocSlot = valueAxis.getSlot(value.open, value.close);\n        var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n        ocSlot.x1 = lhSlot.x1 = box.x1;\n        ocSlot.x2 = lhSlot.x2 = box.x2;\n\n        this.realBody = ocSlot;\n\n        var mid = lhSlot.center().x;\n        var points = [];\n\n        points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n        points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n        this.lines = points;\n\n        this.box = lhSlot.clone().wrap(ocSlot);\n\n        if (!this._rendered) {\n            this._rendered = true;\n            this.createNote();\n        }\n\n        this.reflowNote();\n    };\n\n    Candlestick.prototype.reflowNote = function reflowNote () {\n        if (this.note) {\n            this.note.reflow(this.box);\n        }\n    };\n\n    Candlestick.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n        this._mainVisual = this.mainVisual(this.options);\n        this.visual.append(\n            this._mainVisual\n        );\n\n        this.createOverlay();\n    };\n\n    Candlestick.prototype.mainVisual = function mainVisual (options) {\n        var group = new draw.Group();\n\n        this.createBody(group, options);\n        this.createLines(group, options);\n\n        return group;\n    };\n\n    Candlestick.prototype.createBody = function createBody (container, options) {\n        var body = draw.Path.fromRect(this.realBody.toRect(), {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: null\n        });\n\n        if (options.border.width > 0) {\n            body.options.set(\"stroke\", {\n                color: this.getBorderColor(),\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: valueOrDefault(options.border.opacity, options.opacity)\n            });\n        }\n\n        alignPathToPixel(body);\n        container.append(body);\n\n        if (hasGradientOverlay(options)) {\n            container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n                end: !options.vertical ? [ 0, 1 ] : undefined\n            }, options.overlay)));\n        }\n    };\n\n    Candlestick.prototype.createLines = function createLines (container, options) {\n        this.drawLines(container, options, this.lines, options.line);\n    };\n\n    Candlestick.prototype.drawLines = function drawLines (container, options, lines, lineOptions) {\n        if (!lines) {\n            return;\n        }\n\n        var lineStyle = {\n            stroke: {\n                color: lineOptions.color || this.color,\n                opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n                width: lineOptions.width,\n                dashType: lineOptions.dashType,\n                lineCap: \"butt\"\n            }\n        };\n\n        for (var i = 0; i < lines.length; i++) {\n            var line = draw.Path.fromPoints(lines[i], lineStyle);\n            alignPathToPixel(line);\n            container.append(line);\n        }\n    };\n\n    Candlestick.prototype.getBorderColor = function getBorderColor () {\n        var border = this.options.border;\n        var borderColor = border.color;\n\n        if (!defined(borderColor)) {\n            borderColor = new Color(this.color).brightness(border._brightness).toHex();\n        }\n\n        return borderColor;\n    };\n\n    Candlestick.prototype.createOverlay = function createOverlay () {\n        var overlay = draw.Path.fromRect(this.box.toRect(), {\n            fill: {\n                color: WHITE,\n                opacity: 0\n            },\n            stroke: null\n        });\n\n        this.visual.append(overlay);\n    };\n\n    Candlestick.prototype.createHighlight = function createHighlight () {\n        var highlight = this.options.highlight;\n        var normalColor = this.color;\n\n        this.color = highlight.color || this.color;\n        var overlay = this.mainVisual(\n            deepExtend({}, this.options, {\n                line: {\n                    color: this.getBorderColor()\n                }\n            }, highlight)\n        );\n        this.color = normalColor;\n\n        return overlay;\n    };\n\n    Candlestick.prototype.highlightVisual = function highlightVisual () {\n        return this._mainVisual;\n    };\n\n    Candlestick.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            rect: this.box.toRect(),\n            visual: this._mainVisual\n        };\n    };\n\n    Candlestick.prototype.tooltipAnchor = function tooltipAnchor () {\n        var box = this.box;\n        var clipBox = this.owner.pane.clipBox() || box;\n\n        return {\n            point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n            align: {\n                horizontal: LEFT,\n                vertical: TOP\n            }\n        };\n    };\n\n    Candlestick.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    Candlestick.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    return Candlestick;\n}(ChartElement));\n\nsetDefaultOptions(Candlestick, {\n    vertical: true,\n    border: {\n        _brightness: 0.8\n    },\n    line: {\n        width: 2\n    },\n    overlay: {\n        gradient: \"glass\"\n    },\n    tooltip: {\n        format: \"<table>\" +\n                    \"<tr><th colspan='2'>{4:d}</th></tr>\" +\n                    \"<tr><td>Open:</td><td>{0:C}</td></tr>\" +\n                    \"<tr><td>High:</td><td>{1:C}</td></tr>\" +\n                    \"<tr><td>Low:</td><td>{2:C}</td></tr>\" +\n                    \"<tr><td>Close:</td><td>{3:C}</td></tr>\" +\n                \"</table>\"\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            width: 1,\n            opacity: 1\n        },\n        line: {\n            width: 1,\n            opacity: 1\n        }\n    },\n    notes: {\n        visible: true,\n        label: {}\n    }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n    return countNumbers(values) === values.length;\n}","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nvar CandlestickChart = (function (CategoricalChart) {\n    function CandlestickChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) CandlestickChart.__proto__ = CategoricalChart;\n    CandlestickChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    CandlestickChart.prototype.constructor = CandlestickChart;\n\n    CandlestickChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    CandlestickChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var value = data.valueFields;\n        var valueParts = this.splitValue(value);\n        var hasValue = areNumbers(valueParts);\n        var dataItem = series.data[categoryIx];\n        var categoryPoints = this.categoryPoints[categoryIx];\n        var point;\n\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        if (hasValue) {\n            point = this.createPoint(data, fields);\n        }\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (point) {\n            this.updateRange(value, fields);\n\n            cluster.append(point);\n\n            point.categoryIx = categoryIx;\n            point.category = category;\n            point.series = series;\n            point.seriesIx = seriesIx;\n            point.owner = this;\n            point.dataItem = dataItem;\n            point.noteText = data.fields.noteText;\n        }\n\n        this.points.push(point);\n        categoryPoints.push(point);\n    };\n\n    CandlestickChart.prototype.pointType = function pointType () {\n        return Candlestick;\n    };\n\n    CandlestickChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var pointType = this.pointType();\n        var value = data.valueFields;\n        var pointOptions = deepExtend({}, series);\n        var color = data.fields.color || series.color;\n\n        pointOptions = this.evalPointOptions(\n            pointOptions, value, category, categoryIx, series, seriesIx\n        );\n\n        if (series.type === CANDLESTICK) {\n            if (value.open > value.close) {\n                color = data.fields.downColor || series.downColor || series.color;\n            }\n        }\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        pointOptions.vertical = !this.options.invertAxes;\n\n        var point = new pointType(value, pointOptions);\n        point.color = color;\n\n        return point;\n    };\n\n    CandlestickChart.prototype.splitValue = function splitValue (value) {\n        return [ value.low, value.open, value.close, value.high ];\n    };\n\n    CandlestickChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var parts = this.splitValue(value);\n        var axisRange = this.valueAxisRanges[axisName];\n\n        axisRange = this.valueAxisRanges[axisName] =\n            axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n        axisRange = this.valueAxisRanges[axisName] = {\n            min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n            max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n        };\n    };\n\n    CandlestickChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format,\n            value.open, value.high,\n            value.low, value.close, point.category\n        );\n    };\n\n    CandlestickChart.prototype.animationPoints = function animationPoints () {\n        return this.points;\n    };\n\n    return CandlestickChart;\n}(CategoricalChart));\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nvar BoxPlot = (function (Candlestick) {\n    function BoxPlot(value, options) {\n        Candlestick.call(this, value, options);\n\n        this.createNote();\n    }\n\n    if ( Candlestick ) BoxPlot.__proto__ = Candlestick;\n    BoxPlot.prototype = Object.create( Candlestick && Candlestick.prototype );\n    BoxPlot.prototype.constructor = BoxPlot;\n\n    BoxPlot.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var whiskerSlot, boxSlot;\n\n        this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n        this.realBody = boxSlot;\n        this.reflowBoxSlot(box);\n\n        this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n        this.reflowWhiskerSlot(box);\n\n        var medianSlot = valueAxis.getSlot(value.median);\n\n        if (value.mean) {\n            var meanSlot = valueAxis.getSlot(value.mean);\n            this.meanPoints = this.calcMeanPoints(box, meanSlot);\n        }\n\n        this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n        this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n        this.box = whiskerSlot.clone().wrap(boxSlot);\n        this.reflowNote();\n    };\n\n    BoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n        this.boxSlot.x1 = box.x1;\n        this.boxSlot.x2 = box.x2;\n    };\n\n    BoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n        this.whiskerSlot.x1 = box.x1;\n        this.whiskerSlot.x2 = box.x2;\n    };\n\n    BoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n        return [\n            [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n        ];\n    };\n\n    BoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n        var mid = whiskerSlot.center().x;\n        return [ [\n            [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n            [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n        ], [\n            [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n            [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n        ] ];\n    };\n\n    BoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n        return [\n            [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n        ];\n    };\n\n    BoxPlot.prototype.renderOutliers = function renderOutliers (options) {\n        var this$1 = this;\n\n        var value = this.value;\n        var outliers = value.outliers || [];\n        var outerFence = Math.abs(value.q3 - value.q1) * 3;\n        var elements = [];\n        var markers = options.markers || {};\n\n        for (var i = 0; i < outliers.length; i++) {\n            var outlierValue = outliers[i];\n            if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n                markers = options.outliers;\n            } else {\n                markers = options.extremes;\n            }\n            var markersBorder = deepExtend({}, markers.border);\n\n            if (!defined(markersBorder.color)) {\n                if (defined(this$1.color)) {\n                    markersBorder.color = this$1.color;\n                } else {\n                    markersBorder.color =\n                        new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n                }\n            }\n\n            var shape = new ShapeElement({\n                type: markers.type,\n                width: markers.size,\n                height: markers.size,\n                rotation: markers.rotation,\n                background: markers.background,\n                border: markersBorder,\n                opacity: markers.opacity\n            });\n\n            shape.value = outlierValue;\n\n            elements.push(shape);\n        }\n\n        this.reflowOutliers(elements);\n        return elements;\n    };\n\n    BoxPlot.prototype.reflowOutliers = function reflowOutliers (outliers) {\n        var this$1 = this;\n\n        var valueAxis = this.owner.seriesValueAxis(this.options);\n        var center = this.box.center();\n\n        for (var i = 0; i < outliers.length; i++) {\n            var outlierValue = outliers[i].value;\n            var markerBox = valueAxis.getSlot(outlierValue);\n\n            if (this$1.options.vertical) {\n                markerBox.move(center.x);\n            } else {\n                markerBox.move(undefined, center.y);\n            }\n\n            this$1.box = this$1.box.wrap(markerBox);\n            outliers[i].reflow(markerBox);\n        }\n    };\n\n    BoxPlot.prototype.mainVisual = function mainVisual (options) {\n        var group = Candlestick.prototype.mainVisual.call(this, options);\n        var outliers = this.renderOutliers(options);\n\n        for (var i = 0; i < outliers.length; i++) {\n            var element = outliers[i].getElement();\n            if (element) {\n                group.append(element);\n            }\n        }\n\n        return group;\n    };\n\n    BoxPlot.prototype.createLines = function createLines (container, options) {\n        this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n        this.drawLines(container, options, this.medianPoints, options.median);\n        this.drawLines(container, options, this.meanPoints, options.mean);\n    };\n\n    BoxPlot.prototype.getBorderColor = function getBorderColor () {\n        if ((this.options.border || {}).color) {\n            return this.options.border.color;\n        }\n\n        if (this.color) {\n            return this.color;\n        }\n\n        return Candlestick.prototype.getBorderColor.call(this);\n    };\n\n    return BoxPlot;\n}(Candlestick));\n\nsetDefaultOptions(BoxPlot, {\n    border: {\n        _brightness: 0.8\n    },\n    line: {\n        width: 2\n    },\n    median: {\n        color: \"#f6f6f6\"\n    },\n    mean: {\n        width: 2,\n        dashType: \"dash\",\n        color: \"#f6f6f6\"\n    },\n    overlay: {\n        gradient: \"glass\"\n    },\n    tooltip: {\n        format: \"<table>\" +\n                    \"<tr><th colspan='2'>{6:d}</th></tr>\" +\n                    \"<tr><td>Lower:</td><td>{0:C}</td></tr>\" +\n                    \"<tr><td>Q1:</td><td>{1:C}</td></tr>\" +\n                    \"<tr><td>Median:</td><td>{2:C}</td></tr>\" +\n                    \"<tr><td>Mean:</td><td>{5:C}</td></tr>\" +\n                    \"<tr><td>Q3:</td><td>{3:C}</td></tr>\" +\n                    \"<tr><td>Upper:</td><td>{4:C}</td></tr>\" +\n                \"</table>\"\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            width: 1,\n            opacity: 1\n        },\n        line: {\n            width: 1,\n            opacity: 1\n        }\n    },\n    notes: {\n        visible: true,\n        label: {}\n    },\n    outliers: {\n        visible: true,\n        size: LINE_MARKER_SIZE,\n        type: CROSS,\n        background: WHITE,\n        border: {\n            width: 2,\n            opacity: 1\n        },\n        opacity: 0\n    },\n    extremes: {\n        visible: true,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        background: WHITE,\n        border: {\n            width: 2,\n            opacity: 1\n        },\n        opacity: 0\n    }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nvar VerticalBoxPlot = (function (BoxPlot) {\n    function VerticalBoxPlot () {\n        BoxPlot.apply(this, arguments);\n    }\n\n    if ( BoxPlot ) VerticalBoxPlot.__proto__ = BoxPlot;\n    VerticalBoxPlot.prototype = Object.create( BoxPlot && BoxPlot.prototype );\n    VerticalBoxPlot.prototype.constructor = VerticalBoxPlot;\n\n    VerticalBoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n        this.boxSlot.y1 = box.y1;\n        this.boxSlot.y2 = box.y2;\n    };\n\n    VerticalBoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n        this.whiskerSlot.y1 = box.y1;\n        this.whiskerSlot.y2 = box.y2;\n    };\n\n    VerticalBoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n        return [\n            [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n        ];\n    };\n\n    VerticalBoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n        var mid = whiskerSlot.center().y;\n        return [ [\n            [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n            [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n        ], [\n            [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n            [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n        ] ];\n    };\n\n    VerticalBoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n        return [\n            [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n        ];\n    };\n\n    return VerticalBoxPlot;\n}(BoxPlot));\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar BoxPlotChart = (function (CandlestickChart) {\n    function BoxPlotChart () {\n        CandlestickChart.apply(this, arguments);\n    }\n\n    if ( CandlestickChart ) BoxPlotChart.__proto__ = CandlestickChart;\n    BoxPlotChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n    BoxPlotChart.prototype.constructor = BoxPlotChart;\n\n    BoxPlotChart.prototype.addValue = function addValue (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var value = data.valueFields;\n        var valueParts = this.splitValue(value);\n        var hasValue = areNumbers(valueParts);\n        var dataItem = series.data[categoryIx];\n        var categoryPoints = this.categoryPoints[categoryIx];\n        var point;\n\n        if (!categoryPoints) {\n            this.categoryPoints[categoryIx] = categoryPoints = [];\n        }\n\n        if (hasValue) {\n            point = this.createPoint(data, fields);\n        }\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        if (point) {\n            this.updateRange(value, fields);\n\n            cluster.append(point);\n\n            point.categoryIx = categoryIx;\n            point.category = category;\n            point.series = series;\n            point.seriesIx = seriesIx;\n            point.owner = this;\n            point.dataItem = dataItem;\n        }\n\n        this.points.push(point);\n        categoryPoints.push(point);\n    };\n\n    BoxPlotChart.prototype.pointType = function pointType () {\n        if (this.options.invertAxes) {\n            return VerticalBoxPlot;\n        }\n\n        return BoxPlot;\n    };\n\n    BoxPlotChart.prototype.splitValue = function splitValue (value) {\n        return [\n            value.lower, value.q1, value.median,\n            value.q3, value.upper\n        ];\n    };\n\n    BoxPlotChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var axisRange = this.valueAxisRanges[axisName];\n        var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n        if (defined(value.mean)) {\n            parts = parts.concat(value.mean);\n        }\n\n        axisRange = this.valueAxisRanges[axisName] =\n            axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n        axisRange = this.valueAxisRanges[axisName] = {\n            min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n            max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n        };\n    };\n\n    BoxPlotChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format,\n            value.lower, value.q1, value.median,\n            value.q3, value.upper, value.mean, point.category\n        );\n    };\n\n    BoxPlotChart.prototype.filterOutliers = function filterOutliers (items) {\n        var length = (items || []).length;\n        var result = [];\n\n        for (var i = 0; i < length; i++) {\n            var item = items[i];\n            if (defined(item) && item !== null) {\n                result.push(item);\n            }\n        }\n\n        return result;\n    };\n\n    return BoxPlotChart;\n}(CandlestickChart));\n\nexport default BoxPlotChart;","import ErrorBarBase from './error-bar-base';\n\nvar ScatterErrorBar = (function (ErrorBarBase) {\n    function ScatterErrorBar () {\n        ErrorBarBase.apply(this, arguments);\n    }\n\n    if ( ErrorBarBase ) ScatterErrorBar.__proto__ = ErrorBarBase;\n    ScatterErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n    ScatterErrorBar.prototype.constructor = ScatterErrorBar;\n\n    ScatterErrorBar.prototype.getAxis = function getAxis () {\n        var axes = this.chart.seriesAxes(this.series);\n        var axis = this.isVertical ? axes.y : axes.x;\n\n        return axis;\n    };\n\n    return ScatterErrorBar;\n}(ErrorBarBase));\n\nexport default ScatterErrorBar;","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n    return defined(value) && value !== null;\n}","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\nimport CategoricalChart from '../categorical-chart';\n\nimport hasValue from '../utils/has-value';\nimport evalOptions from '../utils/eval-options';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nvar ScatterChart = (function (ChartElement) {\n    function ScatterChart(plotArea, options) {\n\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this._initFields();\n\n        this.render();\n    }\n\n    if ( ChartElement ) ScatterChart.__proto__ = ChartElement;\n    ScatterChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ScatterChart.prototype.constructor = ScatterChart;\n\n    ScatterChart.prototype._initFields = function _initFields () {\n        // X and Y axis ranges grouped by name, e.g.:\n        // primary: { min: 0, max: 1 }\n        this.xAxisRanges = {};\n        this.yAxisRanges = {};\n\n        this.points = [];\n        this.seriesPoints = [];\n        this.seriesOptions = [];\n        this._evalSeries = [];\n    };\n\n    ScatterChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    ScatterChart.prototype.addErrorBar = function addErrorBar (point, field, fields) {\n        var value = point.value[field];\n        var valueErrorField = field + \"Value\";\n        var lowField = field + \"ErrorLow\";\n        var highField = field + \"ErrorHigh\";\n        var seriesIx = fields.seriesIx;\n        var series = fields.series;\n        var errorBars = point.options.errorBars;\n        var lowValue = fields[lowField];\n        var highValue = fields[highField];\n\n        if (isNumber(value)) {\n            var errorRange;\n            if (isNumber(lowValue) && isNumber(highValue)) {\n                errorRange = { low: lowValue, high: highValue };\n            }\n\n            if (errorBars && defined(errorBars[valueErrorField])) {\n                this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n                this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n                    new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n                errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n            }\n\n            if (errorRange) {\n                this.addPointErrorBar(errorRange, point, field);\n            }\n        }\n    };\n\n    ScatterChart.prototype.addPointErrorBar = function addPointErrorBar (errorRange, point, field) {\n        var low = errorRange.low;\n        var high = errorRange.high;\n        var series = point.series;\n        var options = point.options.errorBars;\n        var isVertical = field === Y;\n        var item = {};\n\n        point[field + \"Low\"] = low;\n        point[field + \"High\"] = high;\n\n        point.errorBars = point.errorBars || [];\n        var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n        point.errorBars.push(errorBar);\n        point.append(errorBar);\n\n        item[field] = low;\n        this.updateRange(item, series);\n        item[field] = high;\n        this.updateRange(item, series);\n    };\n\n    ScatterChart.prototype.addValue = function addValue (value, fields) {\n        var x = value.x;\n        var y = value.y;\n        var seriesIx = fields.seriesIx;\n        var series = this.options.series[seriesIx];\n        var missingValues = this.seriesMissingValues(series);\n        var seriesPoints = this.seriesPoints[seriesIx];\n\n        var pointValue = value;\n        if (!(hasValue(x) && hasValue(y))) {\n            pointValue = this.createMissingValue(pointValue, missingValues);\n        }\n\n        var point;\n        if (pointValue) {\n            point = this.createPoint(pointValue, fields);\n            if (point) {\n                Object.assign(point, fields);\n                this.addErrorBar(point, X, fields);\n                this.addErrorBar(point, Y, fields);\n            }\n            this.updateRange(pointValue, fields.series);\n        }\n\n        this.points.push(point);\n        seriesPoints.push(point);\n    };\n\n    ScatterChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues;\n    };\n\n    ScatterChart.prototype.createMissingValue = function createMissingValue () {};\n\n    ScatterChart.prototype.updateRange = function updateRange (value, series) {\n        var intlService = this.chartService.intl;\n        var xAxisName = series.xAxis;\n        var yAxisName = series.yAxis;\n        var x = value.x;\n        var y = value.y;\n        var xAxisRange = this.xAxisRanges[xAxisName];\n        var yAxisRange = this.yAxisRanges[yAxisName];\n\n        if (hasValue(x)) {\n            xAxisRange = this.xAxisRanges[xAxisName] =\n                xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            if (isString(x)) {\n                x = parseDate(intlService, x);\n            }\n\n            xAxisRange.min = Math.min(xAxisRange.min, x);\n            xAxisRange.max = Math.max(xAxisRange.max, x);\n        }\n\n        if (hasValue(y)) {\n            yAxisRange = this.yAxisRanges[yAxisName] =\n                yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            if (isString(y)) {\n                y = parseDate(intlService, y);\n            }\n\n            yAxisRange.min = Math.min(yAxisRange.min, y);\n            yAxisRange.max = Math.max(yAxisRange.max, y);\n        }\n    };\n\n    ScatterChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n        var doEval = this._evalSeries[seriesIx];\n        if (!defined(doEval)) {\n            this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n        }\n\n        var pointOptions = options;\n        if (doEval) {\n            pointOptions = deepExtend({}, options);\n            evalOptions(pointOptions, {\n                value: value,\n                series: series,\n                dataItem: fields.dataItem\n            }, state);\n        }\n\n        return pointOptions;\n    };\n\n    ScatterChart.prototype.pointType = function pointType () {\n        return LinePoint;\n    };\n\n    ScatterChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n        var options = this.seriesOptions[seriesIx];\n        if (!options) {\n            var defaults = this.pointType().prototype.defaults;\n            this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n                markers: {\n                    opacity: series.opacity\n                },\n                tooltip: {\n                    format: this.options.tooltip.format\n                },\n                labels: {\n                    format: this.options.labels.format\n                }\n            }, series);\n        }\n\n        return options;\n    };\n\n    ScatterChart.prototype.createPoint = function createPoint (value, fields) {\n        var series = fields.series;\n        var pointOptions = this.pointOptions(series, fields.seriesIx);\n        var color = fields.color || series.color;\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new LinePoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    ScatterChart.prototype.seriesAxes = function seriesAxes (series) {\n        var xAxisName = series.xAxis;\n        var yAxisName = series.yAxis;\n        var plotArea = this.plotArea;\n        var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n        var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n        if (!xAxis) {\n            throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n        }\n\n        if (!yAxis) {\n            throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n        }\n\n        return {\n            x: xAxis,\n            y: yAxis\n        };\n    };\n\n    ScatterChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var chartPoints = this.points;\n        var limit = !this.options.clip;\n        var pointIx = 0;\n\n\n        this.traverseDataPoints(function (value, fields) {\n            var point = chartPoints[pointIx++];\n            var seriesAxes = this$1.seriesAxes(fields.series);\n            var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n            var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n            if (point) {\n                if (slotX && slotY) {\n                    var pointSlot = this$1.pointSlot(slotX, slotY);\n                    point.reflow(pointSlot);\n                } else {\n                    point.visible = false;\n                }\n            }\n        });\n\n        this.box = targetBox;\n    };\n\n    ScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n        return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n    };\n\n    ScatterChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n        var seriesPoints = ref.seriesPoints;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var currentSeriesPoints = seriesPoints[seriesIx];\n            if (!currentSeriesPoints) {\n                seriesPoints[seriesIx] = [];\n            }\n\n            for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n                var ref$1 = this$1._bindPoint(currentSeries, seriesIx, pointIx);\n                var value = ref$1.valueFields;\n                var fields = ref$1.fields;\n\n                callback(value, deepExtend({\n                    pointIx: pointIx,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    dataItem: currentSeries.data[pointIx],\n                    owner: this$1\n                }, fields));\n            }\n        }\n    };\n\n    ScatterChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n        return this.chartService.format.auto(format, value.x, value.y);\n    };\n\n    ScatterChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            result.push((points[idx] || {}).marker);\n        }\n        return result;\n    };\n\n    return ScatterChart;\n}(ChartElement));\nsetDefaultOptions(ScatterChart, {\n    series: [],\n    tooltip: {\n        format: \"{0}, {1}\"\n    },\n    labels: {\n        format: \"{0}, {1}\"\n    },\n    clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n    _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default ScatterChart;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nvar Bubble = (function (LinePoint) {\n    function Bubble(value, options) {\n        LinePoint.call(this, value, options);\n\n        this.category = value.category;\n    }\n\n    if ( LinePoint ) Bubble.__proto__ = LinePoint;\n    Bubble.prototype = Object.create( LinePoint && LinePoint.prototype );\n    Bubble.prototype.constructor = Bubble;\n\n    Bubble.prototype.createHighlight = function createHighlight () {\n        var highlight = this.options.highlight;\n        var border = highlight.border;\n        var markers = this.options.markers;\n        var center = this.box.center();\n        var radius = (markers.size + markers.border.width + border.width) / 2;\n        var highlightGroup = new draw.Group();\n        var shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n            stroke: {\n                color: 'none'\n            },\n            fill: this.createGradient({\n                gradient: 'bubbleShadow',\n                color: markers.background,\n                stops: [ {\n                    offset: 0,\n                    color: markers.background,\n                    opacity: 0.3\n                }, {\n                    offset: 1,\n                    color: markers.background,\n                    opacity: 0\n                } ]\n            })\n        });\n        var overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n            stroke: {\n                color: border.color ||\n                    new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n                width: border.width,\n                opacity: border.opacity\n            },\n            fill: {\n                color: markers.background,\n                opacity: highlight.opacity\n            }\n        });\n\n        highlightGroup.append(shadow, overlay);\n\n        return highlightGroup;\n    };\n\n    return Bubble;\n}(LinePoint));\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n    labels: {\n        position: CENTER\n    },\n    highlight: {\n        opacity: 1,\n        border: {\n            color: \"#fff\",\n            width: 2,\n            opacity: 1\n        }\n    }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar BubbleChart = (function (ScatterChart) {\n    function BubbleChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) BubbleChart.__proto__ = ScatterChart;\n    BubbleChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    BubbleChart.prototype.constructor = BubbleChart;\n\n    BubbleChart.prototype._initFields = function _initFields () {\n        this._maxSize = MIN_VALUE;\n        ScatterChart.prototype._initFields.call(this);\n    };\n\n    BubbleChart.prototype.addValue = function addValue (value, fields) {\n        if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n            this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n            ScatterChart.prototype.addValue.call(this, value, fields);\n        } else {\n            this.points.push(null);\n            this.seriesPoints[fields.seriesIx].push(null);\n        }\n    };\n\n    BubbleChart.prototype.reflow = function reflow (box) {\n        this.updateBubblesSize(box);\n        ScatterChart.prototype.reflow.call(this, box);\n    };\n\n    BubbleChart.prototype.pointType = function pointType () {\n        return Bubble;\n    };\n\n    BubbleChart.prototype.createPoint = function createPoint (value, fields) {\n        var series = fields.series;\n        var pointsCount = series.data.length;\n        var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n        var animationOptions = {\n            delay: delay,\n            duration: INITIAL_ANIMATION_DURATION - delay,\n            type: BUBBLE\n        };\n\n        var color = fields.color || series.color;\n        if (value.size < 0 && series.negativeValues.visible) {\n            color = valueOrDefault(\n                series.negativeValues.color, color\n            );\n        }\n\n        var pointOptions = deepExtend({\n            labels: {\n                animation: {\n                    delay: delay,\n                    duration: INITIAL_ANIMATION_DURATION - delay\n                }\n            }\n        }, this.pointOptions(series, fields.seriesIx), {\n            markers: {\n                type: CIRCLE,\n                border: series.border,\n                opacity: series.opacity,\n                animation: animationOptions\n            }\n        });\n\n        pointOptions = this.evalPointOptions(pointOptions, value, fields);\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        pointOptions.markers.background = color;\n\n        var point = new Bubble(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    BubbleChart.prototype.updateBubblesSize = function updateBubblesSize (box) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref.options.series;\n        var boxSize = Math.min(box.width(), box.height());\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var seriesPoints = this$1.seriesPoints[seriesIx];\n            var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n            var maxSize = currentSeries.maxSize || boxSize * 0.2;\n            var minR = minSize / 2;\n            var maxR = maxSize / 2;\n            var minArea = Math.PI * minR * minR;\n            var maxArea = Math.PI * maxR * maxR;\n            var areaRange = maxArea - minArea;\n            var areaRatio = areaRange / this$1._maxSize;\n\n            for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n                var point = seriesPoints[pointIx];\n                if (point) {\n                    var area = Math.abs(point.value.size) * areaRatio;\n                    var radius = Math.sqrt((minArea + area) / Math.PI);\n                    var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n                    var zIndex = baseZIndex + (1 - radius / maxR);\n\n                    deepExtend(point.options, {\n                        zIndex: zIndex,\n                        markers: {\n                            size: radius * 2,\n                            zIndex: zIndex\n                        },\n                        labels: {\n                            zIndex: zIndex + 1\n                        }\n                    });\n                }\n            }\n        }\n    };\n\n    BubbleChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n        return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n    };\n\n    BubbleChart.prototype.createAnimation = function createAnimation () {};\n    BubbleChart.prototype.createVisual = function createVisual () {};\n\n    return BubbleChart;\n}(ScatterChart));\n\nsetDefaultOptions(BubbleChart, {\n    tooltip: {\n        format: \"{3}\"\n    },\n    labels: {\n        format: \"{3}\"\n    }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar Target = (function (ShapeElement) {\n\tfunction Target () {\n\t\tShapeElement.apply(this, arguments);\n\t}if ( ShapeElement ) Target.__proto__ = ShapeElement;\n\tTarget.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n\tTarget.prototype.constructor = Target;\n\n\t\n\n\treturn Target;\n}(ShapeElement));\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { ChartElement, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar Bullet = (function (ChartElement) {\n    function Bullet(value, options) {\n        ChartElement.call(this, options);\n\n        this.aboveAxis = this.options.aboveAxis;\n        this.color = options.color || WHITE;\n        this.value = value;\n    }\n\n    if ( ChartElement ) Bullet.__proto__ = ChartElement;\n    Bullet.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Bullet.prototype.constructor = Bullet;\n\n    Bullet.prototype.render = function render () {\n        var options = this.options;\n\n        if (!this._rendered) {\n            this._rendered = true;\n\n            if (defined(this.value.target)) {\n                this.target = new Target({\n                    type: options.target.shape,\n                    background: options.target.color || this.color,\n                    opacity: options.opacity,\n                    zIndex: options.zIndex,\n                    border: options.target.border,\n                    vAlign: TOP,\n                    align: RIGHT\n                });\n\n                this.target.value = this.value;\n                this.target.dataItem = this.dataItem;\n                this.target.series = this.series;\n\n                this.append(this.target);\n            }\n\n            this.createNote();\n        }\n    };\n\n    Bullet.prototype.reflow = function reflow (box) {\n        this.render();\n\n        var ref = this;\n        var options = ref.options;\n        var target = ref.target;\n        var chart = ref.owner;\n        var invertAxes = options.invertAxes;\n        var valueAxis = chart.seriesValueAxis(this.options);\n        var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n        var targetValueSlot = valueAxis.getSlot(this.value.target);\n        var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n        var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n        if (target) {\n            var targetSlot = new Box(\n                targetSlotX.x1, targetSlotY.y1,\n                targetSlotX.x2, targetSlotY.y2\n            );\n            target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n            target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n            target.reflow(targetSlot);\n        }\n\n        if (this.note) {\n            this.note.reflow(box);\n        }\n\n        this.box = box;\n    };\n\n    Bullet.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        var body = draw.Path.fromRect(this.box.toRect(), {\n            fill: {\n                color: this.color,\n                opacity: options.opacity\n            },\n            stroke: null\n        });\n\n        if (options.border.width > 0) {\n            body.options.set(\"stroke\", {\n                color: options.border.color || this.color,\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: valueOrDefault(options.border.opacity, options.opacity)\n            });\n        }\n\n        this.bodyVisual = body;\n\n        alignPathToPixel(body);\n        this.visual.append(body);\n    };\n\n    Bullet.prototype.createAnimation = function createAnimation () {\n        if (this.bodyVisual) {\n            this.animation = draw.Animation.create(\n                this.bodyVisual, this.options.animation\n            );\n        }\n    };\n\n    Bullet.prototype.createHighlight = function createHighlight (style) {\n        return draw.Path.fromRect(this.box.toRect(), style);\n    };\n\n    Bullet.prototype.highlightVisual = function highlightVisual () {\n        return this.bodyVisual;\n    };\n\n    Bullet.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            rect: this.box.toRect(),\n            visual: this.bodyVisual,\n            options: this.options\n        };\n    };\n\n    Bullet.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    return Bullet;\n}(ChartElement));\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n    border: {\n        width: 1\n    },\n    vertical: false,\n    opacity: 1,\n    target: {\n        shape: \"\",\n        border: {\n            width: 0,\n            color: \"green\"\n        },\n        line: {\n            width: 2\n        }\n    },\n    tooltip: {\n        format: \"Current: {0}<br />Target: {1}\"\n    }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nvar BulletChart = (function (CategoricalChart) {\n    function BulletChart(plotArea, options) {\n\n        wrapData(options);\n\n        CategoricalChart.call(this, plotArea, options);\n    }\n\n    if ( CategoricalChart ) BulletChart.__proto__ = CategoricalChart;\n    BulletChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    BulletChart.prototype.constructor = BulletChart;\n\n    BulletChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n        var children = this.children;\n        var childrenLength = children.length;\n\n        for (var i = 0; i < childrenLength; i++) {\n            children[i].reflow(categorySlots[i]);\n        }\n    };\n\n    BulletChart.prototype.plotRange = function plotRange (point) {\n        var series = point.series;\n        var valueAxis = this.seriesValueAxis(series);\n        var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n        return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n    };\n\n    BulletChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var value = data.valueFields;\n\n        var bulletOptions = deepExtend({\n            vertical: !options.invertAxes,\n            overlay: series.overlay,\n            categoryIx: categoryIx,\n            invertAxes: options.invertAxes\n        }, series);\n\n        var color = data.fields.color || series.color;\n        bulletOptions = this.evalPointOptions(\n            bulletOptions, value, category, categoryIx, series, seriesIx\n        );\n\n        if (isFunction(series.color)) {\n            color = bulletOptions.color;\n        }\n\n        var bullet = new Bullet(value, bulletOptions);\n        bullet.color = color;\n\n        var cluster = children[categoryIx];\n        if (!cluster) {\n            cluster = new ClusterLayout({\n                vertical: options.invertAxes,\n                gap: options.gap,\n                spacing: options.spacing,\n                rtl: !options.invertAxes && (this.chartService || {}).rtl\n            });\n            this.append(cluster);\n        }\n\n        cluster.append(bullet);\n\n        return bullet;\n    };\n\n    BulletChart.prototype.updateRange = function updateRange (value, fields) {\n        var current = value.current;\n        var target = value.target;\n        var axisName = fields.series.axis;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n            axisRange = this.valueAxisRanges[axisName] =\n                axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, current, target);\n            axisRange.max = Math.max(axisRange.max, current, target);\n        }\n    };\n\n    BulletChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format, point.value.current, point.value.target);\n    };\n\n    BulletChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields.current;\n    };\n\n    BulletChart.prototype.aboveAxis = function aboveAxis (point) {\n        var value = point.value.current;\n\n        return value > 0;\n    };\n\n    BulletChart.prototype.createAnimation = function createAnimation () {\n        var this$1 = this;\n\n        var points = this.points;\n\n        this._setAnimationOptions();\n\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            point.options.animation = this$1.options.animation;\n            point.createAnimation();\n        }\n    };\n\n    return BulletChart;\n}(CategoricalChart));\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n    animation: {\n        type: BAR\n    }\n});\n\nfunction wrapData(options) {\n    var series = options.series;\n\n    for (var i = 0; i < series.length; i++) {\n        var seriesItem = series[i];\n        var data = seriesItem.data;\n        if (data && !isArray(data[0]) && !isObject(data[0])) {\n            seriesItem.data = [ data ];\n        }\n    }\n}\n\nexport default BulletChart;","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nvar BaseTooltip = (function (Class) {\n    function BaseTooltip(chartService, options) {\n        Class.call(this);\n\n        this.chartService = chartService;\n        this.options = deepExtend({}, this.options, options);\n    }\n\n    if ( Class ) BaseTooltip.__proto__ = Class;\n    BaseTooltip.prototype = Object.create( Class && Class.prototype );\n    BaseTooltip.prototype.constructor = BaseTooltip;\n\n    BaseTooltip.prototype.getStyle = function getStyle (options, point) {\n        var background = options.background;\n        var border = options.border.color;\n\n        if (point) {\n            var pointColor = point.color || point.options.color;\n            background = valueOrDefault(background, pointColor);\n            border = valueOrDefault(border, pointColor);\n        }\n\n        var padding = getSpacing(options.padding || {}, \"auto\");\n\n        return {\n            backgroundColor: background,\n            borderColor: border,\n            font: options.font,\n            color: options.color,\n            opacity: options.opacity,\n            borderWidth: styleValue(options.border.width),\n            paddingTop: styleValue(padding.top),\n            paddingBottom: styleValue(padding.bottom),\n            paddingLeft: styleValue(padding.left),\n            paddingRight: styleValue(padding.right)\n        };\n    };\n\n    BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {\n        options.format = tooltipOptions.format;\n\n        var style = this.getStyle(tooltipOptions, point);\n        options.style = style;\n\n        if (!defined(tooltipOptions.color) && new Color(style.backgroundColor).percBrightness() > 180) {\n            options.className = \"k-chart-tooltip-inverse\";\n        }\n\n        this.chartService.notify(SHOW_TOOLTIP, options);\n\n        this.visible = true;\n    };\n\n    BaseTooltip.prototype.hide = function hide () {\n        if (this.chartService) {\n            this.chartService.notify(HIDE_TOOLTIP);\n        }\n\n        this.visible = false;\n    };\n\n    BaseTooltip.prototype.destroy = function destroy () {\n        delete this.chartService;\n    };\n\n    return BaseTooltip;\n}(Class));\n\nsetDefaultOptions(BaseTooltip, {\n    border: {\n        width: 1\n    },\n    opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar CrosshairTooltip = (function (BaseTooltip) {\n    function CrosshairTooltip(chartService, crosshair, options) {\n        BaseTooltip.call(this, chartService, options);\n\n        this.crosshair = crosshair;\n        this.formatService = chartService.format;\n        this.initAxisName();\n    }\n\n    if ( BaseTooltip ) CrosshairTooltip.__proto__ = BaseTooltip;\n    CrosshairTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    CrosshairTooltip.prototype.constructor = CrosshairTooltip;\n\n    CrosshairTooltip.prototype.initAxisName = function initAxisName () {\n        var axis = this.crosshair.axis;\n        var plotArea = axis.plotArea;\n        var name;\n        if (plotArea.categoryAxis) {\n            name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n        } else {\n            name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n        }\n        this.axisName = name;\n    };\n\n    CrosshairTooltip.prototype.showAt = function showAt (point) {\n        var ref = this;\n        var axis = ref.crosshair.axis;\n        var options = ref.options;\n        var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n        var formattedValue = value;\n\n        if (options.format) {\n            formattedValue = this.formatService.auto(options.format, value);\n        } else if (axis.options.type === DATE) {\n            formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n        }\n\n        this.show({\n            point: point,\n            anchor: this.getAnchor(),\n            crosshair: this.crosshair,\n            value: formattedValue,\n            axisName: this.axisName,\n            axisIndex: this.crosshair.axis.axisIndex\n        }, this.options);\n    };\n\n    CrosshairTooltip.prototype.hide = function hide () {\n        this.chartService.notify(HIDE_TOOLTIP, {\n            crosshair: this.crosshair,\n            axisName: this.axisName,\n            axisIndex: this.crosshair.axis.axisIndex\n        });\n    };\n\n    CrosshairTooltip.prototype.getAnchor = function getAnchor () {\n        var ref = this;\n        var crosshair = ref.crosshair;\n        var ref_options = ref.options;\n        var position = ref_options.position;\n        var padding = ref_options.padding;\n        var vertical = !crosshair.axis.options.vertical;\n        var lineBox = crosshair.line.bbox();\n        var horizontalAlign, verticalAlign, point;\n\n        if (vertical) {\n            horizontalAlign = CENTER;\n            if (position === BOTTOM) {\n                verticalAlign = TOP;\n                point = lineBox.bottomLeft().translate(0, padding);\n            } else {\n                verticalAlign = BOTTOM;\n                point = lineBox.topLeft().translate(0, -padding);\n            }\n        } else {\n            verticalAlign = CENTER;\n            if (position === LEFT) {\n                horizontalAlign = RIGHT;\n                point = lineBox.topLeft().translate(-padding, 0);\n            } else {\n                horizontalAlign = LEFT;\n                point = lineBox.topRight().translate(padding, 0);\n            }\n        }\n\n        return {\n            point: point,\n            align: {\n                horizontal: horizontalAlign,\n                vertical: verticalAlign\n            }\n        };\n    };\n\n    return CrosshairTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(CrosshairTooltip, {\n    padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar Crosshair = (function (ChartElement) {\n    function Crosshair(chartService, axis, options) {\n        ChartElement.call(this, options);\n\n        this.axis = axis;\n        this.stickyMode = axis instanceof CategoryAxis;\n\n        var tooltipOptions = this.options.tooltip;\n\n        if (tooltipOptions.visible) {\n            this.tooltip = new CrosshairTooltip(chartService, this,\n                deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n            );\n        }\n    }\n\n    if ( ChartElement ) Crosshair.__proto__ = ChartElement;\n    Crosshair.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Crosshair.prototype.constructor = Crosshair;\n\n    Crosshair.prototype.showAt = function showAt (point) {\n        this.point = point;\n        this.moveLine();\n        this.line.visible(true);\n\n        if (this.tooltip) {\n            this.tooltip.showAt(point);\n        }\n    };\n\n    Crosshair.prototype.hide = function hide () {\n        this.line.visible(false);\n\n        if (this.tooltip) {\n            this.tooltip.hide();\n        }\n    };\n\n    Crosshair.prototype.moveLine = function moveLine () {\n        var ref = this;\n        var axis = ref.axis;\n        var point = ref.point;\n        var vertical = axis.options.vertical;\n        var box = this.getBox();\n        var dim = vertical ? Y : X;\n        var lineStart = new geom.Point(box.x1, box.y1);\n        var lineEnd;\n\n        if (vertical) {\n            lineEnd = new geom.Point(box.x2, box.y1);\n        } else {\n            lineEnd = new geom.Point(box.x1, box.y2);\n        }\n\n        if (point) {\n            if (this.stickyMode) {\n                var slot = axis.getSlot(axis.pointCategoryIndex(point));\n                lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n            } else {\n                lineStart[dim] = lineEnd[dim] = point[dim];\n            }\n        }\n\n        this.box = box;\n\n        this.line.moveTo(lineStart).lineTo(lineEnd);\n    };\n\n    Crosshair.prototype.getBox = function getBox () {\n        var axis = this.axis;\n        var axes = axis.pane.axes;\n        var length = axes.length;\n        var vertical = axis.options.vertical;\n        var box = axis.lineBox().clone();\n        var dim = vertical ? X : Y;\n        var axisLineBox;\n\n        for (var i = 0; i < length; i++) {\n            var currentAxis = axes[i];\n            if (currentAxis.options.vertical !== vertical) {\n                if (!axisLineBox) {\n                    axisLineBox = currentAxis.lineBox().clone();\n                } else {\n                    axisLineBox.wrap(currentAxis.lineBox());\n                }\n            }\n        }\n\n        box[dim + 1] = axisLineBox[dim + 1];\n        box[dim + 2] = axisLineBox[dim + 2];\n\n        return box;\n    };\n\n    Crosshair.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options;\n        this.line = new draw.Path({\n            stroke: {\n                color: options.color,\n                width: options.width,\n                opacity: options.opacity,\n                dashType: options.dashType\n            },\n            visible: false\n        });\n\n        this.moveLine();\n        this.visual.append(this.line);\n    };\n\n    Crosshair.prototype.destroy = function destroy () {\n        if (this.tooltip) {\n            this.tooltip.destroy();\n        }\n\n        ChartElement.prototype.destroy.call(this);\n    };\n\n    return Crosshair;\n}(ChartElement));\n\nsetDefaultOptions(Crosshair, {\n    color: BLACK,\n    width: 2,\n    zIndex: -1,\n    tooltip: {\n        visible: false\n    }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nvar ChartContainer = (function (ChartElement) {\n    function ChartContainer(options, pane) {\n        ChartElement.call(this, options);\n        this.pane = pane;\n    }\n\n    if ( ChartElement ) ChartContainer.__proto__ = ChartElement;\n    ChartContainer.prototype = Object.create( ChartElement && ChartElement.prototype );\n    ChartContainer.prototype.constructor = ChartContainer;\n\n    ChartContainer.prototype.shouldClip = function shouldClip () {\n        var children = this.children;\n        var length = children.length;\n\n        for (var i = 0; i < length; i++) {\n            if (children[i].options.clip === true) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    ChartContainer.prototype._clipBox = function _clipBox () {\n        return this.pane.chartsBox();\n    };\n\n    ChartContainer.prototype.createVisual = function createVisual () {\n        this.visual = new draw.Group({\n            zIndex: 0\n        });\n\n        if (this.shouldClip()) {\n            var clipBox = this.clipBox = this._clipBox();\n            var clipRect = clipBox.toRect();\n            var clipPath = draw.Path.fromRect(clipRect);\n            alignPathToPixel(clipPath);\n\n            this.visual.clip(clipPath);\n            this.unclipLabels();\n        }\n    };\n\n    ChartContainer.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    ChartContainer.prototype.unclipLabels = function unclipLabels () {\n        var ref = this;\n        var charts = ref.children;\n        var clipBox = ref.clipBox;\n\n        for (var i = 0; i < charts.length; i++) {\n            var points = charts[i].points || {};\n            var length = points.length;\n\n            for (var j = 0; j < length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n                    if (point.unclipElements) {\n                        point.unclipElements();\n                    } else {\n                        var label = point.label;\n                        var note = point.note;\n\n                        if (label && label.options.visible) {\n                            if (label.alignToClipBox) {\n                                label.alignToClipBox(clipBox);\n                            }\n                            label.options.noclip = true;\n                        }\n\n                        if (note && note.options.visible) {\n                            note.options.noclip = true;\n                        }\n                    }\n                }\n            }\n        }\n    };\n\n    ChartContainer.prototype.destroy = function destroy () {\n        ChartElement.prototype.destroy.call(this);\n\n        delete this.parent;\n    };\n\n    return ChartContainer;\n}(ChartElement));\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nvar Pane = (function (BoxElement) {\n    function Pane(options) {\n        BoxElement.call(this, options);\n\n        this.id = paneID();\n\n        this.createTitle();\n\n        this.content = new ChartElement();\n\n        this.chartContainer = new ChartContainer({}, this);\n        this.append(this.content);\n\n        this.axes = [];\n        this.charts = [];\n    }\n\n    if ( BoxElement ) Pane.__proto__ = BoxElement;\n    Pane.prototype = Object.create( BoxElement && BoxElement.prototype );\n    Pane.prototype.constructor = Pane;\n\n    Pane.prototype.createTitle = function createTitle () {\n        var titleOptions = this.options.title;\n        if (isObject(titleOptions)) {\n            titleOptions = deepExtend({}, titleOptions, {\n                align: titleOptions.position,\n                position: TOP\n            });\n        }\n\n        this.title = Title.buildTitle(titleOptions, this, Pane.prototype.options.title);\n    };\n\n    Pane.prototype.appendAxis = function appendAxis (axis) {\n        this.content.append(axis);\n        this.axes.push(axis);\n        axis.pane = this;\n    };\n\n    Pane.prototype.appendAxisAt = function appendAxisAt (axis, pos) {\n        this.content.append(axis);\n        this.axes.splice(pos, 0, axis);\n        axis.pane = this;\n    };\n\n    Pane.prototype.appendChart = function appendChart (chart) {\n        if (this.chartContainer.parent !== this.content) {\n            this.content.append(this.chartContainer);\n        }\n\n        this.charts.push(chart);\n        this.chartContainer.append(chart);\n        chart.pane = this;\n    };\n\n    Pane.prototype.empty = function empty () {\n        var this$1 = this;\n\n        var plotArea = this.parent;\n\n        if (plotArea) {\n            for (var i = 0; i < this.axes.length; i++) {\n                plotArea.removeAxis(this$1.axes[i]);\n            }\n\n            for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n                plotArea.removeChart(this$1.charts[i$1]);\n            }\n        }\n\n        this.axes = [];\n        this.charts = [];\n\n        this.content.destroy();\n        this.content.children = [];\n        this.chartContainer.children = [];\n    };\n\n    Pane.prototype.reflow = function reflow (targetBox) {\n        // Content (such as charts) is rendered, but excluded from reflows\n        var content;\n        if (last(this.children) === this.content) {\n            content = this.children.pop();\n        }\n\n        BoxElement.prototype.reflow.call(this, targetBox);\n\n        if (content) {\n            this.children.push(content);\n        }\n\n        if (this.title) {\n            this.contentBox.y1 += this.title.box.height();\n        }\n    };\n\n    Pane.prototype.visualStyle = function visualStyle () {\n        var style = BoxElement.prototype.visualStyle.call(this);\n        style.zIndex = -10;\n\n        return style;\n    };\n\n    Pane.prototype.renderComplete = function renderComplete () {\n        if (this.options.visible) {\n            this.createGridLines();\n        }\n    };\n\n    Pane.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    Pane.prototype.clipRoot = function clipRoot () {\n        return this;\n    };\n\n    Pane.prototype.createGridLines = function createGridLines () {\n        var axes = this.axes;\n        var allAxes = axes.concat(this.parent.axes);\n        var vGridLines = [];\n        var hGridLines = [];\n\n        // TODO\n        // Is full combination really necessary?\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var vertical = axis.options.vertical;\n            var gridLines = vertical ? vGridLines : hGridLines;\n            for (var j = 0; j < allAxes.length; j++) {\n                if (gridLines.length === 0) {\n                    var altAxis = allAxes[j];\n                    if (vertical !== altAxis.options.vertical) {\n                        append(gridLines, axis.createGridLines(altAxis));\n                    }\n                }\n            }\n        }\n    };\n\n    Pane.prototype.refresh = function refresh () {\n        this.visual.clear();\n\n        this.content.parent = null;\n        this.content.createGradient = this.createGradient.bind(this);\n        this.content.renderVisual();\n        this.content.parent = this;\n\n        if (this.title) {\n            this.visual.append(this.title.visual);\n        }\n\n        this.visual.append(this.content.visual);\n\n        this.renderComplete();\n        this.notifyRender();\n    };\n\n    Pane.prototype.chartsBox = function chartsBox () {\n        var axes = this.axes;\n        var length = axes.length;\n        var chartsBox = new Box();\n\n        for (var idx = 0; idx < length; idx++) {\n            var axis = axes[idx];\n            var axisValueField = axis.options.vertical ? Y : X;\n            var lineBox = axis.lineBox();\n            chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n            chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n        }\n\n        if (chartsBox.x2 === 0) {\n            var allAxes = this.parent.axes;\n            var length$1 = allAxes.length;\n\n            for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n                var axis$1 = allAxes[idx$1];\n                if (!axis$1.options.vertical) {\n                    var lineBox$1 = axis$1.lineBox();\n                    chartsBox.x1 = lineBox$1.x1;\n                    chartsBox.x2 = lineBox$1.x2;\n                }\n            }\n        }\n        return chartsBox;\n    };\n\n    Pane.prototype.clipBox = function clipBox () {\n        return this.chartContainer.clipBox;\n    };\n\n    Pane.prototype.notifyRender = function notifyRender () {\n        var service = this.getService();\n        if (service) {\n            service.notify(PANE_RENDER, {\n                pane: new ChartPane(this),\n                index: this.paneIndex,\n                name: this.options.name\n            });\n        }\n    };\n\n    return Pane;\n}(BoxElement));\n\nvar ID = 1;\n\nfunction paneID() {\n    return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n    zIndex: -1,\n    shrinkToFit: true,\n    title: {\n        align: LEFT\n    },\n    visible: true\n});\n\nexport default Pane;\n","export default function appendIfNotNull(array, element) {\n    if (element !== null) {\n        array.push(element);\n    }\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n    var visible = fields.visible;\n    if (defined(visible)) {\n        return visible;\n    }\n\n    var pointVisibility = series.pointVisibility;\n    if (pointVisibility) {\n        return pointVisibility[index];\n    }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n    var data = series.data;\n    var points = [];\n    var sum = 0;\n    var count = 0;\n\n    for (var idx = 0; idx < data.length; idx++) {\n        var pointData = SeriesBinder.current.bindPoint(series, idx);\n        var value = pointData.valueFields.value;\n\n\n        if (isString(value)) {\n            value = parseFloat(value);\n        }\n\n        if (isNumber(value)) {\n            pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n            pointData.value = Math.abs(value);\n            points.push(pointData);\n\n            if (pointData.visible) {\n                sum += pointData.value;\n            }\n\n            if (value !== 0) {\n                count++;\n            }\n        } else {\n            points.push(null);\n        }\n    }\n\n    return {\n        total: sum,\n        points: points,\n        count: count\n    };\n}","export default function equalsIgnoreCase(a, b) {\n    if (a && b) {\n        return a.toLowerCase() === b.toLowerCase();\n    }\n\n    return a === b;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n    var result = [];\n\n    var seriesTypes = [].concat(types);\n    for (var idx = 0; idx < series.length; idx++) {\n        var currentSeries = series[idx];\n        if (inArray(currentSeries.type, seriesTypes)) {\n            result.push(currentSeries);\n        }\n    }\n\n    return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n    if (row === null) {\n        return row;\n    }\n\n    var key = \"_date_\" + field;\n    var value = row[key];\n\n    if (!value) {\n        value = parseDate(intlService, getter(field, true)(row));\n        row[key] = value;\n    }\n\n    return value;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n    var type = axisOptions.type;\n    var dateCategory = sampleCategory instanceof Date;\n\n    return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n    return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nvar AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n    if (series.missingValues) {\n        return series.missingValues;\n    }\n\n    return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n    var fields = SeriesBinder.current.bindPoint(series, null, item);\n    var valueFields = fields.valueFields;\n\n    for (var field in valueFields) {\n        if (convertableToNumber(valueFields[field])) {\n            return true;\n        }\n    }\n}\n\nfunction findNext(ref) {\n    var start = ref.start;\n    var dir = ref.dir;\n    var min = ref.min;\n    var max = ref.max;\n    var getter = ref.getter;\n    var hasItem = ref.hasItem;\n    var series = ref.series;\n\n    var pointHasValue, outPoint;\n    var idx = start;\n    do {\n        idx += dir;\n        //aggregating and binding the item takes too much time for large number of categories\n        //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n        if (hasItem(idx)) {\n            outPoint = getter(idx);\n            pointHasValue = hasValue(series, outPoint.item);\n        }\n    } while (min <= idx && idx <= max && !pointHasValue);\n\n    if (pointHasValue) {\n        return outPoint;\n    }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n    var min = range.min;\n    var max = range.max;\n    var hasMinPoint = min > 0 && min < count;\n    var hasMaxPoint = max + 1 < count;\n\n    if (hasMinPoint || hasMaxPoint) {\n        var missingValues = seriesMissingValues(series);\n        var minPoint, maxPoint;\n        if (missingValues !== INTERPOLATE) {\n            if (hasMinPoint) {\n                minPoint = getter(min - 1);\n            }\n\n            if (hasMaxPoint) {\n                maxPoint = getter(max + 1);\n            }\n        } else {\n            var outPoint, pointHasValue;\n            if (hasMinPoint) {\n                outPoint = getter(min - 1);\n                pointHasValue = hasValue(series, outPoint.item);\n                if (!pointHasValue) {\n                    minPoint = findNext({\n                        start: min,\n                        dir: -1,\n                        min: 0,\n                        max: count - 1,\n                        getter: getter,\n                        hasItem: hasItem,\n                        series: series\n                    });\n                } else {\n                    minPoint = outPoint;\n                }\n            }\n\n            if (hasMaxPoint) {\n                outPoint = getter(max + 1);\n                pointHasValue = hasValue(series, outPoint.item);\n                if (!pointHasValue) {\n                    maxPoint = findNext({\n                        start: max,\n                        dir: 1,\n                        min: 0,\n                        max: count - 1,\n                        getter: getter,\n                        hasItem: hasItem,\n                        series: series\n                    });\n                } else {\n                    maxPoint = outPoint;\n                }\n            }\n        }\n\n        if (minPoint) {\n            series._outOfRangeMinPoint = minPoint;\n        }\n\n        if (maxPoint) {\n            series._outOfRangeMaxPoint = maxPoint;\n        }\n    }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions } from '../../common';\n\nvar PlotAreaBase = (function (ChartElement) {\n    function PlotAreaBase(series, options, chartService) {\n        ChartElement.call(this, options);\n\n        this.initFields(series, options);\n        this.series = series;\n        this.initSeries();\n        this.charts = [];\n        this.options.legend = this.options.legend || {};\n        this.options.legend.items = [];\n        this.axes = [];\n        this.crosshairs = [];\n        this.chartService = chartService;\n        this.originalOptions = options;\n\n        this.createPanes();\n        this.render();\n        this.createCrosshairs();\n    }\n\n    if ( ChartElement ) PlotAreaBase.__proto__ = ChartElement;\n    PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PlotAreaBase.prototype.constructor = PlotAreaBase;\n\n    PlotAreaBase.prototype.initFields = function initFields () { };\n\n    PlotAreaBase.prototype.initSeries = function initSeries () {\n        var series = this.series;\n\n        for (var i = 0; i < series.length; i++) {\n            series[i].index = i;\n        }\n    };\n\n    PlotAreaBase.prototype.createPanes = function createPanes () {\n        var this$1 = this;\n\n        var defaults = { title: { color: (this.options.title || {}).color } };\n        var panes = [];\n        var paneOptions = this.options.panes || [];\n        var panesLength = Math.max(paneOptions.length, 1);\n\n        function setTitle(options, defaults) {\n            if (isString(options.title)) {\n                options.title = {\n                    text: options.title\n                };\n            }\n\n            options.title = deepExtend({}, defaults.title, options.title);\n        }\n\n        for (var i = 0; i < panesLength; i++) {\n            var options = paneOptions[i] || {};\n            setTitle(options, defaults);\n\n            var currentPane = new Pane(options);\n            currentPane.paneIndex = i;\n\n            panes.push(currentPane);\n            this$1.append(currentPane);\n        }\n\n        this.panes = panes;\n    };\n\n    PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {\n        var this$1 = this;\n        if ( panes === void 0 ) panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            for (var j = 0; j < pane.axes.length; j++) {\n                var axis = pane.axes[j];\n                if (axis.options.crosshair && axis.options.crosshair.visible) {\n                    var currentCrosshair = new Crosshair(this$1.chartService, axis, axis.options.crosshair);\n\n                    this$1.crosshairs.push(currentCrosshair);\n                    pane.content.append(currentCrosshair);\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.removeCrosshairs = function removeCrosshairs (pane) {\n        var crosshairs = this.crosshairs;\n        var axes = pane.axes;\n\n        for (var i = crosshairs.length - 1; i >= 0; i--) {\n            for (var j = 0; j < axes.length; j++) {\n                if (crosshairs[i].axis === axes[j]) {\n                    crosshairs.splice(i, 1);\n                    break;\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.hideCrosshairs = function hideCrosshairs () {\n        var crosshairs = this.crosshairs;\n        for (var idx = 0; idx < crosshairs.length; idx++) {\n            crosshairs[idx].hide();\n        }\n    };\n\n    PlotAreaBase.prototype.findPane = function findPane (name) {\n        var panes = this.panes;\n        var matchingPane;\n\n        for (var i = 0; i < panes.length; i++) {\n            if (panes[i].options.name === name) {\n                matchingPane = panes[i];\n                break;\n            }\n        }\n\n        return matchingPane || panes[0];\n    };\n\n    PlotAreaBase.prototype.findPointPane = function findPointPane (point) {\n        var panes = this.panes;\n        var matchingPane;\n\n        for (var i = 0; i < panes.length; i++) {\n            if (panes[i].box.containsPoint(point)) {\n                matchingPane = panes[i];\n                break;\n            }\n        }\n\n        return matchingPane;\n    };\n\n    PlotAreaBase.prototype.appendAxis = function appendAxis (axis) {\n        var pane = this.findPane(axis.options.pane);\n\n        pane.appendAxis(axis);\n        this.axes.push(axis);\n        axis.plotArea = this;\n    };\n\n    PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {\n        var this$1 = this;\n\n        var filteredAxes = [];\n\n        for (var i = 0; i < this.axes.length; i++) {\n            var axis = this$1.axes[i];\n            if (axisToRemove !== axis) {\n                filteredAxes.push(axis);\n            } else {\n                axis.destroy();\n            }\n        }\n\n        this.axes = filteredAxes;\n    };\n\n    PlotAreaBase.prototype.appendChart = function appendChart (chart, pane) {\n        this.charts.push(chart);\n        if (pane) {\n            pane.appendChart(chart);\n        } else {\n            this.append(chart);\n        }\n    };\n\n    PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {\n        var this$1 = this;\n\n        var filteredCharts = [];\n\n        for (var i = 0; i < this.charts.length; i++) {\n            var chart = this$1.charts[i];\n            if (chart !== chartToRemove) {\n                filteredCharts.push(chart);\n            } else {\n                chart.destroy();\n            }\n        }\n\n        this.charts = filteredCharts;\n    };\n\n    PlotAreaBase.prototype.addToLegend = function addToLegend (series) {\n        var count = series.length;\n        var legend = this.options.legend;\n        var labels = legend.labels || {};\n        var inactiveItems = legend.inactiveItems || {};\n        var inactiveItemsLabels = inactiveItems.labels || {};\n        var data = [];\n\n        for (var i = 0; i < count; i++) {\n            var currentSeries = series[i];\n            var seriesVisible = currentSeries.visible !== false;\n            if (currentSeries.visibleInLegend === false) {\n                continue;\n            }\n\n            var text = currentSeries.name;\n            var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n            if (labelTemplate) {\n                text = labelTemplate({\n                    text: hasValue(text) ? text : \"\",\n                    series: currentSeries\n                });\n            }\n\n            var defaults = currentSeries._defaults;\n            var color = currentSeries.color;\n            if (isFunction(color) && defaults) {\n                color = defaults.color;\n            }\n\n            var itemLabelOptions = (void 0), markerColor = (void 0);\n            if (seriesVisible) {\n                itemLabelOptions = {};\n                markerColor = color;\n            } else {\n                itemLabelOptions = {\n                    color: inactiveItemsLabels.color,\n                    font: inactiveItemsLabels.font\n                };\n                markerColor = inactiveItems.markers.color;\n            }\n\n            if (hasValue(text) && text !== \"\") {\n                data.push({\n                    text: text,\n                    labels: itemLabelOptions,\n                    markerColor: markerColor,\n                    series: currentSeries,\n                    active: seriesVisible\n                });\n            }\n        }\n\n        append(legend.items, data);\n    };\n\n    PlotAreaBase.prototype.groupAxes = function groupAxes (panes) {\n        var xAxes = [];\n        var yAxes = [];\n\n        for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n            var paneAxes = panes[paneIx].axes;\n            for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n                var axis = paneAxes[axisIx];\n                if (axis.options.vertical) {\n                    yAxes.push(axis);\n                } else {\n                    xAxes.push(axis);\n                }\n            }\n        }\n\n        return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n    };\n\n    PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {\n        var this$1 = this;\n\n        var series = this.series;\n        var seriesByPane = {};\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var pane = this$1.seriesPaneName(currentSeries);\n\n            if (seriesByPane[pane]) {\n                seriesByPane[pane].push(currentSeries);\n            } else {\n                seriesByPane[pane] = [ currentSeries ];\n            }\n        }\n\n        return seriesByPane;\n    };\n\n    PlotAreaBase.prototype.filterVisibleSeries = function filterVisibleSeries (series) {\n        var result = [];\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            if (currentSeries.visible !== false) {\n                result.push(currentSeries);\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.reflow = function reflow (targetBox) {\n        var options = this.options.plotArea;\n        var panes = this.panes;\n        var margin = getSpacing(options.margin);\n\n        this.box = targetBox.clone().unpad(margin);\n        this.reflowPanes();\n\n        this.detachLabels();\n        this.reflowAxes(panes);\n        this.reflowCharts(panes);\n    };\n\n    PlotAreaBase.prototype.redraw = function redraw (panes) {\n        var this$1 = this;\n\n        var panesArray = [].concat(panes);\n        this.initSeries();\n\n        //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n        var root = this.getRoot();\n        if (root) {\n            root.cleanGradients();\n        }\n\n        for (var i = 0; i < panesArray.length; i++) {\n            this$1.removeCrosshairs(panesArray[i]);\n            panesArray[i].empty();\n        }\n\n        this.render(panesArray);\n        this.detachLabels();\n        this.reflowAxes(this.panes);\n        this.reflowCharts(panesArray);\n\n        this.createCrosshairs(panesArray);\n\n        for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n            panesArray[i$1].refresh();\n        }\n    };\n\n    PlotAreaBase.prototype.axisCrossingValues = function axisCrossingValues (axis, crossingAxes) {\n        var options = axis.options;\n        var crossingValues = [].concat(\n            options.axisCrossingValues || options.axisCrossingValue\n        );\n        var valuesToAdd = crossingAxes.length - crossingValues.length;\n        var defaultValue = crossingValues[0] || 0;\n\n        for (var i = 0; i < valuesToAdd; i++) {\n            crossingValues.push(defaultValue);\n        }\n\n        return crossingValues;\n    };\n\n    PlotAreaBase.prototype.alignAxisTo = function alignAxisTo (axis, targetAxis, crossingValue, targetCrossingValue) {\n        var slot = axis.getSlot(crossingValue, crossingValue, true);\n        var slotEdge = axis.options.reverse ? 2 : 1;\n        var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n        var targetEdge = targetAxis.options.reverse ? 2 : 1;\n        var axisBox = axis.box.translate(\n            targetSlot[X + targetEdge] - slot[X + slotEdge],\n            targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n        );\n\n        if (axis.pane !== targetAxis.pane) {\n            axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n        }\n\n        axis.reflow(axisBox);\n    };\n\n    PlotAreaBase.prototype.alignAxes = function alignAxes (xAxes, yAxes) {\n        var this$1 = this;\n\n        var xAnchor = xAxes[0];\n        var yAnchor = yAxes[0];\n        var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n        var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n        var leftAnchors = {};\n        var rightAnchors = {};\n        var topAnchors = {};\n        var bottomAnchors = {};\n\n        for (var i = 0; i < yAxes.length; i++) {\n            var axis = yAxes[i];\n            var pane = axis.pane;\n            var paneId = pane.id;\n            var visible = axis.options.visible !== false;\n\n            // Locate pane anchor, if any, and use its axisCrossingValues\n            var anchor = paneAnchor(xAxes, pane) || xAnchor;\n            var anchorCrossings = xAnchorCrossings;\n\n            if (anchor !== xAnchor) {\n                anchorCrossings = this$1.axisCrossingValues(anchor, yAxes);\n            }\n\n            this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n            if (axis.options._overlap) {\n                continue;\n            }\n\n            if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n                // Push the axis to the left the previous y-axis so they don't overlap\n                if (leftAnchors[paneId]) {\n                    axis.reflow(axis.box\n                        .alignTo(leftAnchors[paneId].box, LEFT)\n                        .translate(-axis.options.margin, 0)\n                    );\n                }\n\n                if (visible) {\n                    leftAnchors[paneId] = axis;\n                }\n            }\n\n            if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n                // Flip the labels on the right if we're at the right end of the pane\n                if (!axis._mirrored) {\n                    axis.options.labels.mirror = !axis.options.labels.mirror;\n                    axis._mirrored = true;\n                }\n\n                this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n                // Push the axis to the right the previous y-axis so they don't overlap\n                if (rightAnchors[paneId]) {\n                    axis.reflow(axis.box\n                        .alignTo(rightAnchors[paneId].box, RIGHT)\n                        .translate(axis.options.margin, 0)\n                    );\n                }\n\n                if (visible) {\n                    rightAnchors[paneId] = axis;\n                }\n            }\n\n            if (i !== 0 && yAnchor.pane === axis.pane) {\n                axis.alignTo(yAnchor);\n                axis.reflow(axis.box);\n            }\n        }\n\n        for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n            var axis$1 = xAxes[i$1];\n            var pane$1 = axis$1.pane;\n            var paneId$1 = pane$1.id;\n            var visible$1 = axis$1.options.visible !== false;\n\n            // Locate pane anchor and use its axisCrossingValues\n            var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n            var anchorCrossings$1 = yAnchorCrossings;\n            if (anchor$1 !== yAnchor) {\n                anchorCrossings$1 = this$1.axisCrossingValues(anchor$1, xAxes);\n            }\n\n            this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n            if (axis$1.options._overlap) {\n                continue;\n            }\n\n            if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n                // Flip the labels on top if we're at the top of the pane\n                if (!axis$1._mirrored) {\n                    axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n                    axis$1._mirrored = true;\n                }\n                this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n                // Push the axis above the previous x-axis so they don't overlap\n                if (topAnchors[paneId$1]) {\n                    axis$1.reflow(axis$1.box\n                        .alignTo(topAnchors[paneId$1].box, TOP)\n                        .translate(0, -axis$1.options.margin)\n                    );\n                }\n\n                if (visible$1) {\n                    topAnchors[paneId$1] = axis$1;\n                }\n            }\n\n            if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n                // Push the axis below the previous x-axis so they don't overlap\n                if (bottomAnchors[paneId$1]) {\n                    axis$1.reflow(axis$1.box\n                        .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n                        .translate(0, axis$1.options.margin)\n                    );\n                }\n\n                if (visible$1) {\n                    bottomAnchors[paneId$1] = axis$1;\n                }\n            }\n\n            if (i$1 !== 0) {\n                axis$1.alignTo(xAnchor);\n                axis$1.reflow(axis$1.box);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.shrinkAxisWidth = function shrinkAxisWidth (panes) {\n        var axes = this.groupAxes(panes).any;\n        var axisBox = axisGroupBox(axes);\n        var overflowX = 0;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n\n            if (currentPane.axes.length > 0) {\n                overflowX = Math.max(\n                    overflowX,\n                    axisBox.width() - currentPane.contentBox.width()\n                );\n            }\n        }\n\n        if (overflowX !== 0) {\n            for (var i$1 = 0; i$1 < axes.length; i$1++) {\n                var currentAxis = axes[i$1];\n\n                if (!currentAxis.options.vertical) {\n                    currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.shrinkAxisHeight = function shrinkAxisHeight (panes) {\n        var shrinked;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            var axes = currentPane.axes;\n            var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n            if (overflowY !== 0) {\n                for (var j = 0; j < axes.length; j++) {\n                    var currentAxis = axes[j];\n\n                    if (currentAxis.options.vertical) {\n                        currentAxis.reflow(\n                            currentAxis.box.shrink(0, overflowY)\n                        );\n                    }\n                }\n                shrinked = true;\n            }\n        }\n\n        return shrinked;\n    };\n\n    PlotAreaBase.prototype.fitAxes = function fitAxes (panes) {\n        var axes = this.groupAxes(panes).any;\n        var offsetX = 0;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            var paneAxes = currentPane.axes;\n            var paneBox = currentPane.contentBox;\n\n            if (paneAxes.length > 0) {\n                var axisBox = axisGroupBox(paneAxes);\n                // OffsetY is calculated and applied per pane\n                var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n                // OffsetX is calculated and applied globally\n                offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n                for (var j = 0; j < paneAxes.length; j++) {\n                    var currentAxis = paneAxes[j];\n\n                    currentAxis.reflow(\n                        currentAxis.box.translate(0, offsetY)\n                    );\n                }\n            }\n        }\n\n        for (var i$1 = 0; i$1 < axes.length; i$1++) {\n            var currentAxis$1 = axes[i$1];\n\n            currentAxis$1.reflow(\n                currentAxis$1.box.translate(offsetX, 0)\n            );\n        }\n    };\n\n    PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {\n        var this$1 = this;\n\n        var axes = this.groupAxes(panes);\n\n        for (var i = 0; i < panes.length; i++) {\n            this$1.reflowPaneAxes(panes[i]);\n        }\n\n        if (axes.x.length > 0 && axes.y.length > 0) {\n            this.alignAxes(axes.x, axes.y);\n            this.shrinkAxisWidth(panes);\n\n            this.autoRotateAxisLabels(axes);\n\n            this.alignAxes(axes.x, axes.y);\n            if (this.shrinkAxisWidth(panes)) {\n                this.alignAxes(axes.x, axes.y);\n            }\n\n            this.shrinkAxisHeight(panes);\n            this.alignAxes(axes.x, axes.y);\n\n            if (this.shrinkAxisHeight(panes)) {\n                this.alignAxes(axes.x, axes.y);\n            }\n\n            this.fitAxes(panes);\n        }\n    };\n\n    PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {\n        var this$1 = this;\n\n        var ref = this;\n        var panes = ref.panes;\n        var axes = allPaneAxes(panes);\n        var rotated;\n\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            if (axis.autoRotateLabels()) {\n                rotated = true;\n            }\n        }\n\n        if (rotated) {\n            for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n                this$1.reflowPaneAxes(panes[idx$1]);\n            }\n\n            if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n                this.alignAxes(groupedAxes.x, groupedAxes.y);\n                this.shrinkAxisWidth(panes);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowPaneAxes = function reflowPaneAxes (pane) {\n        var axes = pane.axes;\n        var length = axes.length;\n\n        if (length > 0) {\n            for (var i = 0; i < length; i++) {\n                axes[i].reflow(pane.contentBox);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowCharts = function reflowCharts (panes) {\n        var charts = this.charts;\n        var count = charts.length;\n        var box = this.box;\n\n        for (var i = 0; i < count; i++) {\n            var chartPane = charts[i].pane;\n            if (!chartPane || inArray(chartPane, panes)) {\n                charts[i].reflow(box);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.reflowPanes = function reflowPanes () {\n        var ref = this;\n        var box = ref.box;\n        var panes = ref.panes;\n        var panesLength = panes.length;\n        var remainingHeight = box.height();\n        var remainingPanes = panesLength;\n        var autoHeightPanes = 0;\n        var top = box.y1;\n\n        for (var i = 0; i < panesLength; i++) {\n            var currentPane = panes[i];\n            var height = currentPane.options.height;\n\n            currentPane.options.width = box.width();\n\n            if (!currentPane.options.height) {\n                autoHeightPanes++;\n            } else {\n                if (height.indexOf && height.indexOf(\"%\")) {\n                    var percents = parseInt(height, 10) / 100;\n                    currentPane.options.height = percents * box.height();\n                }\n\n                currentPane.reflow(box.clone());\n\n                remainingHeight -= currentPane.options.height;\n            }\n        }\n\n        for (var i$1 = 0; i$1 < panesLength; i$1++) {\n            var currentPane$1 = panes[i$1];\n\n            if (!currentPane$1.options.height) {\n                currentPane$1.options.height = remainingHeight / autoHeightPanes;\n            }\n        }\n\n        for (var i$2 = 0; i$2 < panesLength; i$2++) {\n            var currentPane$2 = panes[i$2];\n            var paneBox = box\n                .clone()\n                .move(box.x1, top);\n\n            currentPane$2.reflow(paneBox);\n\n            remainingPanes--;\n            top += currentPane$2.options.height;\n        }\n    };\n\n    PlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n        var axes = this.axes;\n        var axesCount = axes.length;\n        var box;\n\n        for (var i = 0; i < axesCount; i++) {\n            var axisA = axes[i];\n\n            for (var j = 0; j < axesCount; j++) {\n                var axisB = axes[j];\n\n                if (axisA.options.vertical !== axisB.options.vertical) {\n                    var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n                    if (!box) {\n                        box = lineBox;\n                    } else {\n                        box = box.wrap(lineBox);\n                    }\n                }\n            }\n        }\n\n        return box || this.box;\n    };\n\n    PlotAreaBase.prototype.chartsBoxes = function chartsBoxes () {\n        var panes = this.panes;\n        var boxes = [];\n\n        for (var idx = 0; idx < panes.length; idx++) {\n            boxes.push(panes[idx].chartsBox());\n        }\n\n        return boxes;\n    };\n\n    PlotAreaBase.prototype.addBackgroundPaths = function addBackgroundPaths (multipath) {\n        var boxes = this.chartsBoxes();\n        for (var idx = 0; idx < boxes.length; idx++) {\n            multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n        }\n    };\n\n    PlotAreaBase.prototype.backgroundContainsPoint = function backgroundContainsPoint (point) {\n        var boxes = this.chartsBoxes();\n        for (var idx = 0; idx < boxes.length; idx++) {\n            if (boxes[idx].containsPoint(point)) {\n                return true;\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var options = this.options.plotArea;\n        var opacity = options.opacity;\n        var background = options.background;\n        var border = options.border; if ( border === void 0 ) border = {};\n        if (isTransparent(background)) {\n            background = WHITE;\n            opacity = 0;\n        }\n\n        var bg = this._bgVisual = new draw.MultiPath({\n            fill: {\n                color: background,\n                opacity: opacity\n            },\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            },\n            zIndex: -1\n        });\n\n        this.addBackgroundPaths(bg);\n\n        this.appendVisual(bg);\n    };\n\n    PlotAreaBase.prototype.pointsByCategoryIndex = function pointsByCategoryIndex (categoryIndex) {\n        var charts = this.charts;\n        var result = [];\n\n        if (categoryIndex !== null) {\n            for (var i = 0; i < charts.length; i++) {\n                var chart = charts[i];\n                if (chart.pane.options.name === \"_navigator\") {\n                    continue;\n                }\n\n                var points = charts[i].categoryPoints[categoryIndex];\n                if (points && points.length) {\n                    for (var j = 0; j < points.length; j++) {\n                        var point = points[j];\n                        if (point && defined(point.value) && point.value !== null) {\n                            result.push(point);\n                        }\n                    }\n                }\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.pointsBySeriesIndex = function pointsBySeriesIndex (seriesIndex) {\n        return this.filterPoints(function(point) {\n            return point.series.index === seriesIndex;\n        });\n    };\n\n    PlotAreaBase.prototype.pointsBySeriesName = function pointsBySeriesName (name) {\n        return this.filterPoints(function(point) {\n            return point.series.name === name;\n        });\n    };\n\n    PlotAreaBase.prototype.filterPoints = function filterPoints (callback) {\n        var charts = this.charts;\n        var result = [];\n\n        for (var i = 0; i < charts.length; i++) {\n            var chart = charts[i];\n            var points = chart.points;\n            for (var j = 0; j < points.length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && callback(point)) {\n                    result.push(point);\n                }\n            }\n        }\n\n        return result;\n    };\n\n    PlotAreaBase.prototype.findPoint = function findPoint (callback) {\n        var charts = this.charts;\n\n        for (var i = 0; i < charts.length; i++) {\n            var chart = charts[i];\n            var points = chart.points;\n            for (var j = 0; j < points.length; j++) {\n                var point = points[j];\n                if (point && point.visible !== false && callback(point)) {\n                    return point;\n                }\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.paneByPoint = function paneByPoint (point) {\n        var panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            if (pane.box.containsPoint(point)) {\n                return pane;\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.detachLabels = function detachLabels () {\n        var axes = this.groupAxes(this.panes);\n        var xAxes = axes.x;\n        var yAxes = axes.y;\n\n        this.detachAxisGroupLabels(yAxes, xAxes);\n        this.detachAxisGroupLabels(xAxes, yAxes);\n    };\n\n    PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {\n        var this$1 = this;\n\n        var labelAxisCount = 0;\n\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var pane = axis.pane;\n            var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n            var axisIndex = i + labelAxisCount;\n            var labelAxis = this$1.createLabelAxis(axis, axisIndex, anchor);\n\n            if (labelAxis) {\n                labelAxisCount++;\n\n                var pos = pane.axes.indexOf(axis) + labelAxisCount;\n                pane.appendAxisAt(labelAxis, pos);\n            }\n        }\n    };\n\n    PlotAreaBase.prototype.createLabelAxis = function createLabelAxis (axis, axisIndex, anchor) {\n        var labelOptions = axis.options.labels;\n        var position = labelOptions.position;\n        var onAxis = position !== END && position !== START;\n        var visible = labelOptions.visible;\n\n        if (onAxis || visible === false) {\n            return null;\n        }\n\n        var allAxes = this.groupAxes(this.panes);\n        var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n        var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n        var end = position === END;\n        var range = anchor.range();\n        var edge = end ? range.max : range.min;\n        var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n        if (crossingValue - edge === 0) {\n            return null;\n        }\n\n        anchorCrossings.splice(axisIndex + 1, 0, edge);\n        anchor.options.axisCrossingValues = anchorCrossings;\n\n        var labelAxis = axis.clone();\n        axis.clear();\n\n        labelAxis.options.name = undefined;\n        labelAxis.options.line.visible = false;\n\n        labelAxis.options.crosshair = undefined;\n        labelAxis.options.notes = undefined;\n        labelAxis.options.plotBands = undefined;\n\n        return labelAxis;\n    };\n\n    return PlotAreaBase;\n}(ChartElement));\n\nfunction isSingleAxis(axis) {\n    return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n    );\n}\n\nfunction axisGroupBox(axes) {\n    var length = axes.length;\n    var box;\n\n    for (var i = 0; i < length; i++) {\n        var axis = axes[i];\n        var visible = axis.options.visible !== false;\n        if (visible || isSingleAxis(axis)) {\n            var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n            if (!box) {\n                box = axisBox.clone();\n            } else {\n                box.wrap(axisBox);\n            }\n        }\n    }\n\n    return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n    for (var i = 0; i < axes.length; i++) {\n        var anchor = axes[i];\n        if (anchor && anchor.pane === pane) {\n            return anchor;\n        }\n    }\n}\n\nfunction isTransparent(color) {\n    return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nvar allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\nsetDefaultOptions(PlotAreaBase, {\n    series: [],\n    plotArea: {\n        margin: {}\n    },\n    background: \"\",\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    legend: {\n        inactiveItems: {\n            labels: {\n                color: \"#919191\"\n            },\n            markers: {\n                color: \"#919191\"\n            }\n        }\n    }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nvar PlotAreaEventsMixin = {\n    hover: function(chart, e) {\n        this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n    },\n\n    click: function(chart, e) {\n        this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n    }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nvar SeriesAggregator = (function (Class) {\n    function SeriesAggregator(series, binder, defaultAggregates) {\n        Class.call(this);\n\n        var canonicalFields = binder.canonicalFields(series);\n        var valueFields = binder.valueFields(series);\n        var sourceFields = binder.sourceFields(series, canonicalFields);\n        var seriesFields = this._seriesFields = [];\n        var defaults = defaultAggregates.query(series.type);\n        var rootAggregate = series.aggregate || defaults;\n\n        this._series = series;\n        this._binder = binder;\n\n        for (var i = 0; i < canonicalFields.length; i++) {\n            var field = canonicalFields[i];\n            var fieldAggregate = (void 0);\n\n            if (isObject(rootAggregate)) {\n                fieldAggregate = rootAggregate[field];\n            } else if (i === 0 || inArray(field, valueFields)) {\n                fieldAggregate = rootAggregate;\n            } else {\n                break;\n            }\n\n            if (fieldAggregate) {\n                seriesFields.push({\n                    canonicalName: field,\n                    name: sourceFields[i],\n                    transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n                });\n            }\n        }\n    }\n\n    if ( Class ) SeriesAggregator.__proto__ = Class;\n    SeriesAggregator.prototype = Object.create( Class && Class.prototype );\n    SeriesAggregator.prototype.constructor = SeriesAggregator;\n\n    SeriesAggregator.prototype.aggregatePoints = function aggregatePoints (srcPoints, group) {\n        var this$1 = this;\n\n        var ref = this;\n        var series = ref._series;\n        var seriesFields = ref._seriesFields;\n        var data = this._bindPoints(srcPoints || []);\n        var firstDataItem = data.dataItems[0];\n        var result = {};\n\n        if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n            var fn = function() {};\n            fn.prototype = firstDataItem;\n            result = new fn();\n        }\n\n        for (var i = 0; i < seriesFields.length; i++) {\n            var field = seriesFields[i];\n            var srcValues = this$1._bindField(data.values, field.canonicalName);\n            var value = field.transform(srcValues, series, data.dataItems, group);\n\n            if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n                result = value;\n                break;\n            } else {\n                if (defined(value)) {\n                    setValue(field.name, result, value);\n                }\n            }\n        }\n\n        return result;\n    };\n\n    SeriesAggregator.prototype._bindPoints = function _bindPoints (points) {\n        var ref = this;\n        var binder = ref._binder;\n        var series = ref._series;\n        var values = [];\n        var dataItems = [];\n\n        for (var i = 0; i < points.length; i++) {\n            var pointIx = points[i];\n\n            values.push(binder.bindPoint(series, pointIx));\n            dataItems.push(series.data[pointIx]);\n        }\n\n        return {\n            values: values,\n            dataItems: dataItems\n        };\n    };\n\n    SeriesAggregator.prototype._bindField = function _bindField (data, field) {\n        var values = [];\n        var count = data.length;\n\n        for (var i = 0; i < count; i++) {\n            var item = data[i];\n            var valueFields = item.valueFields;\n            var value = (void 0);\n\n            if (defined(valueFields[field])) {\n                value = valueFields[field];\n            } else {\n                value = item.fields[field];\n            }\n\n            values.push(value);\n        }\n\n        return values;\n    };\n\n    return SeriesAggregator;\n}(Class));\n\nfunction setValue(fieldName, target, value) {\n    var parentObj = target;\n    var field = fieldName;\n\n    if (fieldName.indexOf(\".\") > -1) {\n        var parts = fieldName.split(\".\");\n\n        while (parts.length > 1) {\n            field = parts.shift();\n            if (!defined(parentObj[field])) {\n                parentObj[field] = {};\n            }\n            parentObj = parentObj[field];\n        }\n        field = parts.shift();\n    }\n\n    parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nvar DefaultAggregates = (function (Class) {\n    function DefaultAggregates() {\n        Class.call(this);\n\n        this._defaults = {};\n    }\n\n    if ( Class ) DefaultAggregates.__proto__ = Class;\n    DefaultAggregates.prototype = Object.create( Class && Class.prototype );\n    DefaultAggregates.prototype.constructor = DefaultAggregates;\n\n    DefaultAggregates.prototype.register = function register (seriesTypes, aggregates) {\n        var this$1 = this;\n\n        for (var i = 0; i < seriesTypes.length; i++) {\n            this$1._defaults[seriesTypes[i]] = aggregates;\n        }\n    };\n\n    DefaultAggregates.prototype.query = function query (seriesType) {\n        return this._defaults[seriesType];\n    };\n\n    return DefaultAggregates;\n}(Class));\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nvar RangeBar = (function (Bar) {\n    function RangeBar () {\n        Bar.apply(this, arguments);\n    }\n\n    if ( Bar ) RangeBar.__proto__ = Bar;\n    RangeBar.prototype = Object.create( Bar && Bar.prototype );\n    RangeBar.prototype.constructor = RangeBar;\n\n    RangeBar.prototype.createLabel = function createLabel () {\n        var labels = this.options.labels;\n        var fromOptions = deepExtend({}, labels, labels.from);\n        var toOptions = deepExtend({}, labels, labels.to);\n\n        if (fromOptions.visible) {\n            this.labelFrom = this._createLabel(fromOptions);\n            this.append(this.labelFrom);\n        }\n\n        if (toOptions.visible) {\n            this.labelTo = this._createLabel(toOptions);\n            this.append(this.labelTo);\n        }\n    };\n\n    RangeBar.prototype._createLabel = function _createLabel (options) {\n        var labelTemplate = getTemplate(options);\n        var pointData = this.pointData();\n\n        var labelText;\n\n        if (labelTemplate) {\n            labelText = labelTemplate(pointData);\n        } else {\n            labelText = this.formatValue(options.format);\n        }\n\n        return new BarLabel(labelText,\n            deepExtend({\n                vertical: this.options.vertical\n            },\n            options\n        ), pointData);\n    };\n\n    RangeBar.prototype.reflow = function reflow (targetBox) {\n        this.render();\n\n        var ref = this;\n        var labelFrom = ref.labelFrom;\n        var labelTo = ref.labelTo;\n        var value = ref.value;\n\n        this.box = targetBox;\n\n        if (labelFrom) {\n            labelFrom.options.aboveAxis = value.from > value.to;\n            labelFrom.reflow(targetBox);\n        }\n\n        if (labelTo) {\n            labelTo.options.aboveAxis = value.to > value.from;\n            labelTo.reflow(targetBox);\n        }\n\n        if (this.note) {\n            this.note.reflow(targetBox);\n        }\n    };\n\n    return RangeBar;\n}(Bar));\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n    labels: {\n        format: \"{0} - {1}\"\n    },\n    tooltip: {\n        format: \"{1}\"\n    }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nvar RangeBarChart = (function (BarChart) {\n    function RangeBarChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) RangeBarChart.__proto__ = BarChart;\n    RangeBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n    RangeBarChart.prototype.constructor = RangeBarChart;\n\n    RangeBarChart.prototype.pointType = function pointType () {\n        return RangeBar;\n    };\n\n    RangeBarChart.prototype.pointValue = function pointValue (data) {\n        return data.valueFields;\n    };\n\n    RangeBarChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        if (point.value.from === null && point.value.to === null) {\n            return \"\";\n        }\n\n        return this.chartService.format.auto(format, point.value.from, point.value.to);\n    };\n\n    RangeBarChart.prototype.plotRange = function plotRange (point) {\n        if (!point) {\n            return 0;\n        }\n\n        return [ point.value.from, point.value.to ];\n    };\n\n    RangeBarChart.prototype.updateRange = function updateRange (value, fields) {\n        var axisName = fields.series.axis;\n        var from = value.from;\n        var to = value.to;\n        var axisRange = this.valueAxisRanges[axisName];\n\n        if (value !== null && isNumber(from) && isNumber(to)) {\n            axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n            axisRange.min = Math.min(axisRange.min, from);\n            axisRange.max = Math.max(axisRange.max, from);\n\n            axisRange.min = Math.min(axisRange.min, to);\n            axisRange.max = Math.max(axisRange.max, to);\n        }\n    };\n\n    RangeBarChart.prototype.aboveAxis = function aboveAxis (point) {\n        var value = point.value;\n        return value.from < value.to;\n    };\n\n    return RangeBarChart;\n}(BarChart));\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nvar RangeLinePoint = (function (LinePoint) {\n    function RangeLinePoint () {\n        LinePoint.apply(this, arguments);\n    }\n\n    if ( LinePoint ) RangeLinePoint.__proto__ = LinePoint;\n    RangeLinePoint.prototype = Object.create( LinePoint && LinePoint.prototype );\n    RangeLinePoint.prototype.constructor = RangeLinePoint;\n\n    RangeLinePoint.prototype.aliasFor = function aliasFor () {\n        return this.parent;\n    };\n\n    return RangeLinePoint;\n}(LinePoint));\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nvar AUTO = 'auto';\nvar DEFAULT_FROM_FORMAT = '{0}';\nvar DEFAULT_TO_FORMAT = '{1}';\n\nvar RangeAreaPoint = (function (ChartElement) {\n    function RangeAreaPoint(value, options) {\n        ChartElement.call(this);\n\n        this.value = value;\n        this.options = options;\n        this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n        this.tooltipTracking = true;\n        this.initLabelsFormat();\n    }\n\n    if ( ChartElement ) RangeAreaPoint.__proto__ = ChartElement;\n    RangeAreaPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RangeAreaPoint.prototype.constructor = RangeAreaPoint;\n\n    RangeAreaPoint.prototype.render = function render () {\n        if (this._rendered) {\n            return;\n        }\n\n        this._rendered = true;\n\n        var ref = this.options;\n        var markers = ref.markers;\n        var labels = ref.labels;\n        var value = this.value;\n\n        var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n            labels: labels.from,\n            markers: markers.from\n        }));\n\n        var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n            labels: labels.to,\n            markers: markers.to\n        }));\n\n        this.copyFields(fromPoint);\n        this.copyFields(toPoint);\n\n        this.append(fromPoint);\n        this.append(toPoint);\n    };\n\n    RangeAreaPoint.prototype.reflow = function reflow (targetBox) {\n        this.render();\n\n        var fromBox = targetBox.from;\n        var toBox = targetBox.to;\n\n        this.positionLabels(fromBox, toBox);\n\n        this.fromPoint.reflow(fromBox);\n        this.toPoint.reflow(toBox);\n\n        this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n    };\n\n    RangeAreaPoint.prototype.createHighlight = function createHighlight () {\n        var group = new draw.Group();\n        group.append(this.fromPoint.createHighlight());\n        group.append(this.toPoint.createHighlight());\n\n        return group;\n    };\n\n    RangeAreaPoint.prototype.highlightVisual = function highlightVisual () {\n        return this.visual;\n    };\n\n    RangeAreaPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        return {\n            options: this.options,\n            from: this.fromPoint.highlightVisualArgs(),\n            to: this.toPoint.highlightVisualArgs()\n        };\n    };\n\n    RangeAreaPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n        var clipBox = this.owner.pane.clipBox();\n        var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n        if (showTooltip) {\n            var box = this.box;\n            var center = box.center();\n            var horizontalAlign = LEFT;\n            var x, y, verticalAlign;\n\n            if (this.options.vertical) {\n                x = center.x;\n                y = box.y1 - TOOLTIP_OFFSET;\n                verticalAlign = BOTTOM;\n            } else {\n                x = box.x2 + TOOLTIP_OFFSET;\n                y = center.y;\n                verticalAlign = CENTER;\n            }\n\n            return {\n                point: new Point(x, y),\n                align: {\n                    horizontal: horizontalAlign,\n                    vertical: verticalAlign\n                }\n            };\n        }\n    };\n\n    RangeAreaPoint.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    RangeAreaPoint.prototype.overlapsBox = function overlapsBox (box) {\n        return this.box.overlaps(box);\n    };\n\n    RangeAreaPoint.prototype.unclipElements = function unclipElements () {\n        this.fromPoint.unclipElements();\n        this.toPoint.unclipElements();\n    };\n\n    RangeAreaPoint.prototype.initLabelsFormat = function initLabelsFormat () {\n        var labels = this.options.labels;\n        if (!labels.format) {\n            if (!labels.from || !labels.from.format) {\n                labels.from = Object.assign({}, labels.from, {\n                    format: DEFAULT_FROM_FORMAT\n                });\n            }\n\n            if (!labels.to || !labels.to.format) {\n                labels.to = Object.assign({}, labels.to, {\n                    format: DEFAULT_TO_FORMAT\n                });\n            }\n        }\n    };\n\n    RangeAreaPoint.prototype.positionLabels = function positionLabels (fromBox, toBox) {\n        var ref = this.options;\n        var labels = ref.labels;\n        var vertical = ref.vertical;\n\n        if (labels.position === AUTO) {\n            var fromLabelPosition, toLabelPosition;\n            if (vertical) {\n                if (toBox.y1 <= fromBox.y1) {\n                    toLabelPosition = ABOVE;\n                    fromLabelPosition = BELOW;\n                } else {\n                    toLabelPosition = BELOW;\n                    fromLabelPosition = ABOVE;\n                }\n            } else {\n                if (toBox.x1 <= fromBox.x1) {\n                    toLabelPosition = LEFT;\n                    fromLabelPosition = RIGHT;\n                } else {\n                    toLabelPosition = RIGHT;\n                    fromLabelPosition = LEFT;\n                }\n            }\n\n            if (!labels.from || !labels.from.position) {\n                this.fromPoint.options.labels.position = fromLabelPosition;\n            }\n\n            if (!labels.to || !labels.to.position) {\n                this.toPoint.options.labels.position = toLabelPosition;\n            }\n        }\n    };\n\n    RangeAreaPoint.prototype.copyFields = function copyFields (point) {\n        point.dataItem = this.dataItem;\n        point.category = this.category;\n        point.series = this.series;\n        point.color = this.color;\n        point.owner = this.owner;\n    };\n\n    return RangeAreaPoint;\n}(ChartElement));\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n    markers: {\n        visible: false,\n        background: WHITE,\n        size: LINE_MARKER_SIZE,\n        type: CIRCLE,\n        border: {\n            width: 2\n        },\n        opacity: 1\n    },\n    labels: {\n        visible: false,\n        margin: getSpacing(3),\n        padding: getSpacing(4),\n        animation: {\n            type: FADEIN,\n            delay: INITIAL_ANIMATION_DURATION\n        },\n        position: AUTO\n    },\n    notes: {\n        label: {}\n    },\n    highlight: {\n        markers: {\n            border: {\n                color: WHITE,\n                width: 2\n            }\n        },\n        zIndex: HIGHLIGHT_ZINDEX\n    },\n    tooltip: {\n        format: '{0} - {1}'\n    }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar RangeAreaSegment = (function (AreaSegment) {\n    function RangeAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) RangeAreaSegment.__proto__ = AreaSegment;\n    RangeAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    RangeAreaSegment.prototype.constructor = RangeAreaSegment;\n\n    RangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n    };\n\n    RangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n        }\n\n        return fromSegments;\n    };\n\n    RangeAreaSegment.prototype.createStroke = function createStroke (style) {\n        var toPath = new draw.Path(style);\n        var fromPath = new draw.Path(style);\n\n        toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n        fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n        this.visual.append(toPath);\n        this.visual.append(fromPath);\n    };\n\n    RangeAreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n        return true;\n    };\n\n    RangeAreaSegment.prototype.fromPoints = function fromPoints () {\n        return this.linePoints.map(function (point) { return point.fromPoint; });\n    };\n\n    RangeAreaSegment.prototype.toPoints = function toPoints () {\n        return this.linePoints.map(function (point) { return point.toPoint; });\n    };\n\n    return RangeAreaSegment;\n}(AreaSegment));\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nvar SplineRangeAreaSegment = (function (RangeAreaSegment) {\n    function SplineRangeAreaSegment () {\n        RangeAreaSegment.apply(this, arguments);\n    }\n\n    if ( RangeAreaSegment ) SplineRangeAreaSegment.__proto__ = RangeAreaSegment;\n    SplineRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n    SplineRangeAreaSegment.prototype.constructor = SplineRangeAreaSegment;\n\n    SplineRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.createCurveSegments(this.toPoints());\n    };\n\n    SplineRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n        }\n\n        return fromSegments;\n    };\n\n    SplineRangeAreaSegment.prototype.createCurveSegments = function createCurveSegments (points) {\n        var curveProcessor = new CurveProcessor();\n\n        return curveProcessor.process(this.toGeometryPoints(points));\n    };\n\n    return SplineRangeAreaSegment;\n}(RangeAreaSegment));\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nvar StepRangeAreaSegment = (function (RangeAreaSegment) {\n    function StepRangeAreaSegment () {\n        RangeAreaSegment.apply(this, arguments);\n    }\n\n    if ( RangeAreaSegment ) StepRangeAreaSegment.__proto__ = RangeAreaSegment;\n    StepRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n    StepRangeAreaSegment.prototype.constructor = StepRangeAreaSegment;\n\n    StepRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n        return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n    };\n\n    StepRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n        var fromSegments = this.fromSegments;\n        if (!this.fromSegments) {\n            fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n            fromSegments.reverse();\n        }\n\n        return fromSegments;\n    };\n\n    return StepRangeAreaSegment;\n}(RangeAreaSegment));\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nvar RangeAreaChart = (function (CategoricalChart) {\n    function RangeAreaChart () {\n        CategoricalChart.apply(this, arguments);\n    }\n\n    if ( CategoricalChart ) RangeAreaChart.__proto__ = CategoricalChart;\n    RangeAreaChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n    RangeAreaChart.prototype.constructor = RangeAreaChart;\n\n    RangeAreaChart.prototype.render = function render () {\n        CategoricalChart.prototype.render.call(this);\n\n        this.renderSegments();\n    };\n\n    RangeAreaChart.prototype.pointType = function pointType () {\n        return RangeAreaPoint;\n    };\n\n    RangeAreaChart.prototype.createPoint = function createPoint (data, fields) {\n        var categoryIx = fields.categoryIx;\n        var category = fields.category;\n        var series = fields.series;\n        var seriesIx = fields.seriesIx;\n        var value = data.valueFields;\n\n        if (!hasValue(value.from) && !hasValue(value.to)) {\n            if (this.seriesMissingValues(series) === ZERO) {\n                value = {\n                    from: 0,\n                    to: 0\n                };\n            } else {\n                return null;\n            }\n        }\n\n        var pointOptions = this.pointOptions(series, seriesIx);\n        pointOptions = this.evalPointOptions(\n            pointOptions, value, category, categoryIx, series, seriesIx\n        );\n\n        var color = data.fields.color || series.color;\n        if (isFunction(series.color)) {\n            color = pointOptions.color;\n        }\n\n        var point = new RangeAreaPoint(value, pointOptions);\n        point.color = color;\n\n        this.append(point);\n\n        return point;\n    };\n\n    RangeAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = (currentSeries.line || {}).style;\n        var segmentType;\n        if (style === \"smooth\") {\n            segmentType = SplineRangeAreaSegment;\n        } else if (style === \"step\") {\n            segmentType = StepRangeAreaSegment;\n        } else {\n            segmentType = RangeAreaSegment;\n        }\n\n        return new segmentType(linePoints, currentSeries, seriesIx);\n    };\n\n    RangeAreaChart.prototype.plotRange = function plotRange (point, startValue) {\n        if (!point) {\n            return [ startValue, startValue ];\n        }\n\n        return [ point.value.from, point.value.to ];\n    };\n\n    RangeAreaChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n        var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n        var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n        if (fromSlot && toSlot) {\n            return {\n                from: fromSlot,\n                to: toSlot\n            };\n        }\n    };\n\n    RangeAreaChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var from = valueSlot.from;\n        var to = valueSlot.to;\n        var fromSlot, toSlot;\n\n        if (this.options.invertAxes) {\n            fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n            toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n        } else {\n            fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n            toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n        }\n\n        return {\n            from: fromSlot,\n            to: toSlot\n        };\n    };\n\n    RangeAreaChart.prototype.addValue = function addValue (data, fields) {\n        var valueFields = data.valueFields;\n        if (!isNumber(valueFields.from)) {\n            valueFields.from = valueFields.to;\n        }\n\n        if (!isNumber(valueFields.to)) {\n            valueFields.to = valueFields.from;\n        }\n\n        CategoricalChart.prototype.addValue.call(this, data, fields);\n    };\n\n    RangeAreaChart.prototype.updateRange = function updateRange (value, fields) {\n        if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n            var axisName = fields.series.axis;\n            var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n            var from = value.from;\n            var to = value.to;\n\n            axisRange.min = Math.min(axisRange.min, from, to);\n            axisRange.max = Math.max(axisRange.max, from, to);\n        }\n    };\n\n    RangeAreaChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        var value = point.value;\n\n        return this.chartService.format.auto(format, value.from, value.to);\n    };\n\n    RangeAreaChart.prototype.animationPoints = function animationPoints () {\n        var points = this.points;\n        var result = [];\n        for (var idx = 0; idx < points.length; idx++) {\n            var point = points[idx];\n            if (point) {\n                result.push((point.fromPoint || {}).marker);\n                result.push((point.toPoint || {}).marker);\n            }\n        }\n\n        return result.concat(this._segments);\n    };\n\n    return RangeAreaChart;\n}(CategoricalChart));\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nvar OHLCPoint = (function (Candlestick) {\n    function OHLCPoint () {\n        Candlestick.apply(this, arguments);\n    }\n\n    if ( Candlestick ) OHLCPoint.__proto__ = Candlestick;\n    OHLCPoint.prototype = Object.create( Candlestick && Candlestick.prototype );\n    OHLCPoint.prototype.constructor = OHLCPoint;\n\n    OHLCPoint.prototype.reflow = function reflow (box) {\n        var ref = this;\n        var options = ref.options;\n        var value = ref.value;\n        var chart = ref.owner;\n        var valueAxis = chart.seriesValueAxis(options);\n        var oPoints = [];\n        var cPoints = [];\n        var lhPoints = [];\n\n        var lhSlot = valueAxis.getSlot(value.low, value.high);\n        var oSlot = valueAxis.getSlot(value.open, value.open);\n        var cSlot = valueAxis.getSlot(value.close, value.close);\n\n        oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n        oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n        var mid = lhSlot.center().x;\n\n        oPoints.push([ oSlot.x1, oSlot.y1 ]);\n        oPoints.push([ mid, oSlot.y1 ]);\n        cPoints.push([ mid, cSlot.y1 ]);\n        cPoints.push([ cSlot.x2, cSlot.y1 ]);\n        lhPoints.push([ mid, lhSlot.y1 ]);\n        lhPoints.push([ mid, lhSlot.y2 ]);\n\n        this.lines = [\n            oPoints, cPoints, lhPoints\n        ];\n\n        this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n        this.reflowNote();\n    };\n\n    OHLCPoint.prototype.createBody = function createBody () {};\n\n    return OHLCPoint;\n}(Candlestick));\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nvar OHLCChart = (function (CandlestickChart) {\n    function OHLCChart () {\n        CandlestickChart.apply(this, arguments);\n    }\n\n    if ( CandlestickChart ) OHLCChart.__proto__ = CandlestickChart;\n    OHLCChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n    OHLCChart.prototype.constructor = OHLCChart;\n\n    OHLCChart.prototype.pointType = function pointType () {\n        return OHLCPoint;\n    };\n\n    return OHLCChart;\n}(CandlestickChart));\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nvar WaterfallSegment = (function (ChartElement) {\n    function WaterfallSegment(from, to, series) {\n        ChartElement.call(this);\n\n        this.from = from;\n        this.to = to;\n        this.series = series;\n    }\n\n    if ( ChartElement ) WaterfallSegment.__proto__ = ChartElement;\n    WaterfallSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    WaterfallSegment.prototype.constructor = WaterfallSegment;\n\n    WaterfallSegment.prototype.linePoints = function linePoints () {\n        var from = this.from;\n        var ref = this;\n        var fromBox = ref.from.box;\n        var toBox = ref.to.box;\n        var points = [];\n\n        if (from.isVertical) {\n            var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n            points.push(\n                [ fromBox.x1, y ],\n                [ toBox.x2, y ]\n            );\n        } else {\n            var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n            points.push(\n                [ x, fromBox.y1 ],\n                [ x, toBox.y2 ]\n            );\n        }\n\n        return points;\n    };\n\n    WaterfallSegment.prototype.createVisual = function createVisual () {\n        ChartElement.prototype.createVisual.call(this);\n\n        var line = this.series.line || {};\n\n        var path = draw.Path.fromPoints(this.linePoints(), {\n            stroke: {\n                color: line.color,\n                width: line.width,\n                opacity: line.opacity,\n                dashType: line.dashType\n            }\n        });\n\n        alignPathToPixel(path);\n        this.visual.append(path);\n    };\n\n    return WaterfallSegment;\n}(ChartElement));\n\nsetDefaultOptions(WaterfallSegment, {\n    animation: {\n        type: FADEIN,\n        delay: INITIAL_ANIMATION_DURATION\n    }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nvar WaterfallChart = (function (BarChart) {\n    function WaterfallChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) WaterfallChart.__proto__ = BarChart;\n    WaterfallChart.prototype = Object.create( BarChart && BarChart.prototype );\n    WaterfallChart.prototype.constructor = WaterfallChart;\n\n    WaterfallChart.prototype.render = function render () {\n        BarChart.prototype.render.call(this);\n        this.createSegments();\n    };\n\n    WaterfallChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var totalCategories = categoriesCount(series);\n        var isVertical = !this.options.invertAxes;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var total = 0;\n            var runningTotal = 0;\n\n            for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n                var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n                var value = data.valueFields.value;\n                var summary = data.fields.summary;\n                var from = total;\n                var to = (void 0);\n\n                if (summary) {\n                    if (summary.toLowerCase() === \"total\") {\n                        data.valueFields.value = total;\n                        from = 0;\n                        to = total;\n                    } else {\n                        data.valueFields.value = runningTotal;\n                        to = from - runningTotal;\n                        runningTotal = 0;\n                    }\n                } else if (isNumber(value)) {\n                    runningTotal += value;\n                    total += value;\n                    to = total;\n                }\n\n                callback(data, {\n                    category: this$1.categoryAxis.categoryAt(categoryIx),\n                    categoryIx: categoryIx,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    total: total,\n                    runningTotal: runningTotal,\n                    from: from,\n                    to: to,\n                    isVertical: isVertical\n                });\n            }\n        }\n    };\n\n    WaterfallChart.prototype.updateRange = function updateRange (value, fields) {\n        BarChart.prototype.updateRange.call(this, { value: fields.to }, fields);\n    };\n\n    WaterfallChart.prototype.aboveAxis = function aboveAxis (point) {\n        return point.value >= 0;\n    };\n\n    WaterfallChart.prototype.plotRange = function plotRange (point) {\n        return [ point.from, point.to ];\n    };\n\n    WaterfallChart.prototype.createSegments = function createSegments () {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var seriesPoints = this.seriesPoints;\n        var segments = this.segments = [];\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var points = seriesPoints[seriesIx];\n\n            if (points) {\n                var prevPoint = (void 0);\n                for (var pointIx = 0; pointIx < points.length; pointIx++) {\n                    var point = points[pointIx];\n\n                    if (point && prevPoint) {\n                        var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n                        segments.push(segment);\n                        this$1.append(segment);\n                    }\n\n                    prevPoint = point;\n                }\n            }\n        }\n    };\n\n    return WaterfallChart;\n}(BarChart));\n\nexport default WaterfallChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n    getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n    BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, isNumber, deepExtend, defined, eventElement, grep } from '../../common';\n\nvar AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nvar OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nvar CategoricalPlotArea = (function (PlotAreaBase) {\n    function CategoricalPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) CategoricalPlotArea.__proto__ = PlotAreaBase;\n    CategoricalPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    CategoricalPlotArea.prototype.constructor = CategoricalPlotArea;\n\n    CategoricalPlotArea.prototype.initFields = function initFields (series) {\n        var this$1 = this;\n\n        this.namedCategoryAxes = {};\n        this.namedValueAxes = {};\n        this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n        if (series.length > 0) {\n            this.invertAxes = inArray(\n                series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n                                 RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n            );\n\n            for (var i = 0; i < series.length; i++) {\n                var stack = series[i].stack;\n                if (stack && stack.type === \"100%\") {\n                    this$1.stack100 = true;\n                    break;\n                }\n            }\n        }\n\n    };\n\n    CategoricalPlotArea.prototype.render = function render (panes) {\n        if ( panes === void 0 ) panes = this.panes;\n\n        this.createCategoryAxes(panes);\n        this.aggregateCategories(panes);\n        this.createCategoryAxesLabels(panes);\n        this.createCharts(panes);\n        this.createValueAxes(panes);\n    };\n\n    CategoricalPlotArea.prototype.removeAxis = function removeAxis (axis) {\n        var axisName = axis.options.name;\n\n        PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n        if (axis instanceof CategoryAxis) {\n            delete this.namedCategoryAxes[axisName];\n        } else {\n            this.valueAxisRangeTracker.reset(axisName);\n            delete this.namedValueAxes[axisName];\n        }\n\n        if (axis === this.categoryAxis) {\n            delete this.categoryAxis;\n        }\n\n        if (axis === this.valueAxis) {\n            delete this.valueAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype.createCharts = function createCharts (panes) {\n        var this$1 = this;\n\n        var seriesByPane = this.groupSeriesByPane();\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n            this$1.addToLegend(paneSeries);\n\n            var visibleSeries = this$1.filterVisibleSeries(paneSeries);\n            if (!visibleSeries) {\n                continue;\n            }\n\n            var groups = this$1.groupSeriesByCategoryAxis(visibleSeries);\n            for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n                this$1.createChartGroup(groups[groupIx], pane);\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createChartGroup = function createChartGroup (series, pane) {\n        this.createAreaChart(\n            filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n        );\n\n        this.createRangeAreaChart(\n            filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n        );\n\n        this.createBarChart(\n            filterSeriesByType(series, [ COLUMN, BAR ]), pane\n        );\n\n        this.createRangeBarChart(\n            filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n        );\n\n        this.createBulletChart(\n            filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n        );\n\n        this.createCandlestickChart(\n            filterSeriesByType(series, CANDLESTICK), pane\n        );\n\n        this.createBoxPlotChart(\n            filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n        );\n\n        this.createOHLCChart(\n            filterSeriesByType(series, OHLC), pane\n        );\n\n        this.createWaterfallChart(\n            filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n        );\n\n        this.createLineChart(\n            filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n        );\n    };\n\n    CategoricalPlotArea.prototype.aggregateCategories = function aggregateCategories (panes) {\n        var this$1 = this;\n\n        var series = this.srcSeries || this.series;\n        var processedSeries = [];\n        this._currentPointsCache = {};\n        this._seriesPointsCache = this._seriesPointsCache || {};\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var categoryAxis = this$1.seriesCategoryAxis(currentSeries);\n            var axisPane = this$1.findPane(categoryAxis.options.pane);\n            var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n            if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n                currentSeries = this$1.aggregateSeries(currentSeries, categoryAxis);\n            } else {\n                currentSeries = this$1.filterSeries(currentSeries, categoryAxis);\n            }\n\n            processedSeries.push(currentSeries);\n        }\n\n        this._seriesPointsCache = this._currentPointsCache;\n        this._currentPointsCache = null;\n\n        this.srcSeries = series;\n        this.series = processedSeries;\n    };\n\n    CategoricalPlotArea.prototype.filterSeries = function filterSeries (series, categoryAxis) {\n        var dataLength = (series.data || {}).length;\n        categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n        if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n            return series;\n        }\n\n        var range = categoryAxis.currentRangeIndices();\n        var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n        var currentSeries = deepExtend({}, series);\n\n        currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n        if (outOfRangePoints) {\n            createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n                item: series.data[idx],\n                category: categoryAxis.categoryAt(idx, true),\n                categoryIx: idx - range.min\n            }); }, function (idx) { return defined(series.data[idx]); });\n        }\n\n        return currentSeries;\n    };\n\n    CategoricalPlotArea.prototype.clearSeriesPointsCache = function clearSeriesPointsCache () {\n        this._seriesPointsCache = {};\n    };\n\n    CategoricalPlotArea.prototype.seriesSourcePoints = function seriesSourcePoints (series, categoryAxis) {\n        var this$1 = this;\n\n        var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n        if (this._seriesPointsCache[key]) {\n            this._currentPointsCache[key] = this._seriesPointsCache[key];\n            return this._seriesPointsCache[key];\n        }\n\n        var axisOptions = categoryAxis.options;\n        var srcCategories = axisOptions.srcCategories;\n        var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n        var srcData = series.data;\n        var getFn = dateAxis ? getDateField : getField;\n        var result = [];\n        if (!dateAxis) {\n            categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n        }\n\n        for (var idx = 0; idx < srcData.length; idx++) {\n            var category = (void 0);\n            if (series.categoryField) {\n                category = getFn(series.categoryField, srcData[idx], this$1.chartService.intl);\n            } else {\n                category = srcCategories[idx];\n            }\n\n            if (defined(category) && category !== null) {\n                var categoryIx = categoryAxis.totalIndex(category);\n                result[categoryIx] = result[categoryIx] || { items: [], category: category };\n                result[categoryIx].items.push(idx);\n            }\n        }\n\n        this._currentPointsCache[key] = result;\n\n        return result;\n    };\n\n    CategoricalPlotArea.prototype.aggregateSeries = function aggregateSeries (series, categoryAxis) {\n        var srcData = series.data;\n        if (!srcData.length) {\n            return series;\n        }\n\n        var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n        var result = deepExtend({}, series);\n        var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n        var data = result.data = [];\n        var dataItems = categoryAxis.options.dataItems || [];\n\n        var range = categoryAxis.currentRangeIndices();\n        var categoryItem = function (idx) {\n            var categoryIdx = idx - range.min;\n            var point = srcPoints[idx];\n            if (!point) {\n                point = srcPoints[idx] = {};\n            }\n\n            point.categoryIx = categoryIdx;\n\n            if (!point.item) {\n                var category = categoryAxis.categoryAt(idx, true);\n                point.category = category;\n                point.item = aggregator.aggregatePoints(point.items, category);\n            }\n\n            return point;\n        };\n\n        for (var idx = range.min; idx <= range.max; idx++) {\n            var point = categoryItem(idx);\n            data[point.categoryIx] = point.item;\n\n            if (point.items && point.items.length) {\n                dataItems[point.categoryIx] = point.item;\n            }\n        }\n\n        if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n            createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n        }\n\n        categoryAxis.options.dataItems = dataItems;\n\n        return result;\n    };\n\n    CategoricalPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        var series = chart.options.series;\n        var categoryAxis = this.seriesCategoryAxis(series[0]);\n        var categories = categoryAxis.options.categories;\n        var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n        if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n            categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n            while (categoriesToAdd--) {\n                categories.push(\"\");\n            }\n        }\n\n        this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    // TODO: Refactor, optionally use series.pane option\n    CategoricalPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n        var options = this.options;\n        var axisName = series.axis;\n        var axisOptions = [].concat(options.valueAxis);\n        var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n        var panes = options.panes || [ {} ];\n        var defaultPaneName = (panes[0] || {}).name || \"default\";\n        var paneName = (axis || {}).pane || defaultPaneName;\n\n        return paneName;\n    };\n\n    CategoricalPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis (series) {\n        var axisName = series.categoryAxis;\n        var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n        if (!axis) {\n            throw new Error(\"Unable to locate category axis with name \" + axisName);\n        }\n\n        return axis;\n    };\n\n    CategoricalPlotArea.prototype.stackableChartOptions = function stackableChartOptions (firstSeries, pane) {\n        var stack = firstSeries.stack;\n        var isStacked100 = stack && stack.type === \"100%\";\n        var clip = pane.options.clip;\n\n        return {\n            isStacked: stack,\n            isStacked100: isStacked100,\n            clip: clip\n        };\n    };\n\n    CategoricalPlotArea.prototype.groupSeriesByCategoryAxis = function groupSeriesByCategoryAxis (series) {\n        var categoryAxes = [];\n        var unique = {};\n        for (var idx = 0; idx < series.length; idx++) {\n            var name = series[idx].categoryAxis || \"$$default$$\";\n            if (!unique.hasOwnProperty(name)) {\n                unique[name] = true;\n                categoryAxes.push(name);\n            }\n        }\n\n        var groups = [];\n        for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n            var axis = categoryAxes[axisIx];\n            var axisSeries = groupSeries(series, axis, axisIx);\n            if (axisSeries.length === 0) {\n                continue;\n            }\n\n            groups.push(axisSeries);\n        }\n\n        return groups;\n    };\n\n    CategoricalPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var barChart = new BarChart(this, Object.assign({\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(barChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createRangeBarChart = function createRangeBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var rangeColumnChart = new RangeBarChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        });\n\n        this.appendChart(rangeColumnChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createBulletChart = function createBulletChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var bulletChart = new BulletChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(bulletChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var lineChart = new LineChart(this, Object.assign({\n            invertAxes: this.invertAxes,\n            series: series\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(lineChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var areaChart = new AreaChart(this, Object.assign({\n            invertAxes: this.invertAxes,\n            series: series\n        }, this.stackableChartOptions(firstSeries, pane)));\n\n        this.appendChart(areaChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createRangeAreaChart = function createRangeAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var rangeAreaChart = new RangeAreaChart(this, {\n            invertAxes: this.invertAxes,\n            series: series,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(rangeAreaChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createOHLCChart = function createOHLCChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new OHLCChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createCandlestickChart = function createCandlestickChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new CandlestickChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createBoxPlotChart = function createBoxPlotChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var chart = new BoxPlotChart(this, {\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            series: series,\n            spacing: firstSeries.spacing,\n            clip: pane.options.clip\n        });\n\n        this.appendChart(chart, pane);\n    };\n\n    CategoricalPlotArea.prototype.createWaterfallChart = function createWaterfallChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var waterfallChart = new WaterfallChart(this, {\n            series: series,\n            invertAxes: this.invertAxes,\n            gap: firstSeries.gap,\n            spacing: firstSeries.spacing\n        });\n\n        this.appendChart(waterfallChart, pane);\n    };\n\n    CategoricalPlotArea.prototype.axisRequiresRounding = function axisRequiresRounding (categoryAxisName, categoryAxisIndex) {\n        var this$1 = this;\n\n        var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n        for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n            var currentSeries = this$1.series[seriesIx];\n            if (inArray(currentSeries.type, AREA_SERIES)) {\n                var line = currentSeries.line;\n                if (line && line.style === STEP) {\n                    centeredSeries.push(currentSeries);\n                }\n            }\n        }\n\n        for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n            var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n            if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n                return true;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.aggregatedAxis = function aggregatedAxis (categoryAxisName, categoryAxisIndex) {\n        var series = this.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var seriesAxis = series[seriesIx].categoryAxis || \"\";\n            if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n                return true;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n        var axes = this.axes;\n        for (var i = 0; i < axes.length; i++) {\n            if (axes[i] instanceof CategoryAxis) {\n                axes[i].createLabels();\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.createCategoryAxes = function createCategoryAxes (panes) {\n        var this$1 = this;\n\n        var invertAxes = this.invertAxes;\n        var definitions = [].concat(this.options.categoryAxis);\n        var axes = [];\n\n        for (var i = 0; i < definitions.length; i++) {\n            var axisOptions = definitions[i];\n            var axisPane = this$1.findPane(axisOptions.pane);\n\n            if (inArray(axisPane, panes)) {\n                var name = axisOptions.name;\n                var categories = axisOptions.categories; if ( categories === void 0 ) categories = [];\n                axisOptions = deepExtend({\n                    vertical: invertAxes,\n                    reverse: !invertAxes && this$1.chartService.rtl,\n                    axisCrossingValue: invertAxes ? MAX_VALUE : 0\n                }, axisOptions);\n\n                if (!defined(axisOptions.justified)) {\n                    axisOptions.justified = this$1.isJustified();\n                }\n\n                if (this$1.axisRequiresRounding(name, i)) {\n                    axisOptions.justified = false;\n                }\n\n                var categoryAxis = (void 0);\n\n                if (isDateAxis(axisOptions, categories[0])) {\n                    categoryAxis = new DateCategoryAxis(axisOptions, this$1.chartService);\n                } else {\n                    categoryAxis = new CategoryAxis(axisOptions, this$1.chartService);\n                }\n\n                definitions[i].categories = categoryAxis.options.srcCategories;\n\n                if (name) {\n                    if (this$1.namedCategoryAxes[name]) {\n                        throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n                    }\n                    this$1.namedCategoryAxes[name] = categoryAxis;\n                }\n\n                categoryAxis.axisIndex = i;\n                axes.push(categoryAxis);\n                this$1.appendAxis(categoryAxis);\n            }\n        }\n\n        var primaryAxis = this.categoryAxis || axes[0];\n        this.categoryAxis = primaryAxis;\n\n        if (invertAxes) {\n            this.axisY = primaryAxis;\n        } else {\n            this.axisX = primaryAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype.isJustified = function isJustified () {\n        var series = this.series;\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            if (!inArray(currentSeries.type, AREA_SERIES)) {\n                return false;\n            }\n        }\n\n        return true;\n    };\n\n    CategoricalPlotArea.prototype.createValueAxes = function createValueAxes (panes) {\n        var this$1 = this;\n\n        var tracker = this.valueAxisRangeTracker;\n        var defaultRange = tracker.query();\n        var definitions = [].concat(this.options.valueAxis);\n        var invertAxes = this.invertAxes;\n        var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n        var axes = [];\n\n        if (this.stack100) {\n            baseOptions.roundToMajorUnit = false;\n            baseOptions.labels = { format: \"P0\" };\n        }\n\n        for (var i = 0; i < definitions.length; i++) {\n            var axisOptions = definitions[i];\n            var axisPane = this$1.findPane(axisOptions.pane);\n\n            if (inArray(axisPane, panes)) {\n                var name = axisOptions.name;\n                var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n                var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n                if (i === 0 && range && defaultRange) {\n                    range.min = Math.min(range.min, defaultRange.min);\n                    range.max = Math.max(range.max, defaultRange.max);\n                }\n\n                var axisType = (void 0);\n                if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n                    axisType = LogarithmicAxis;\n                } else {\n                    axisType = NumericAxis;\n                }\n\n                var valueAxis = new axisType(range.min, range.max,\n                    deepExtend({}, baseOptions, axisOptions),\n                    this$1.chartService\n                );\n\n                if (name) {\n                    if (this$1.namedValueAxes[name]) {\n                        throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n                    }\n                    this$1.namedValueAxes[name] = valueAxis;\n                }\n                valueAxis.axisIndex = i;\n\n                axes.push(valueAxis);\n                this$1.appendAxis(valueAxis);\n            }\n        }\n\n        var primaryAxis = this.valueAxis || axes[0];\n        this.valueAxis = primaryAxis;\n\n        if (invertAxes) {\n            this.axisX = primaryAxis;\n        } else {\n            this.axisY = primaryAxis;\n        }\n    };\n\n    CategoricalPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var pane = this.pointPane(point);\n        var categories = [];\n        var values = [];\n\n        if (!pane) {\n            return;\n        }\n\n        var allAxes = pane.axes;\n        for (var i = 0; i < allAxes.length; i++) {\n            var axis = allAxes[i];\n            if (axis.getValue) {\n                appendIfNotNull(values, axis.getValue(point));\n            } else {\n                appendIfNotNull(categories, axis.getCategory(point));\n            }\n        }\n\n        if (categories.length === 0) {\n            appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n        }\n\n        if (categories.length > 0 && values.length > 0) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                originalEvent: e,\n                category: singleItemOrArray(categories),\n                value: singleItemOrArray(values)\n            });\n        }\n    };\n\n    CategoricalPlotArea.prototype.pointPane = function pointPane (point) {\n        var panes = this.panes;\n\n        for (var i = 0; i < panes.length; i++) {\n            var currentPane = panes[i];\n            if (currentPane.contentBox.containsPoint(point)) {\n                return currentPane;\n            }\n        }\n    };\n\n    CategoricalPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n        updateAxisOptions(this.options, axis, options);\n        updateAxisOptions(this.originalOptions, axis, options);\n    };\n\n    return CategoricalPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n    var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n    deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n    return grep(series, function(s) {\n        return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n    });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n    categoryAxis: {},\n    valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;","import { Class } from '../common';\n\nvar Highlight = (function (Class) {\n    function Highlight() {\n        Class.call(this);\n\n        this._points = [];\n    }\n\n    if ( Class ) Highlight.__proto__ = Class;\n    Highlight.prototype = Object.create( Class && Class.prototype );\n    Highlight.prototype.constructor = Highlight;\n\n    Highlight.prototype.destroy = function destroy () {\n        this._points = [];\n    };\n\n    Highlight.prototype.show = function show (points) {\n        var this$1 = this;\n\n        var arrayPoints = [].concat(points);\n        this.hide();\n\n        for (var i = 0; i < arrayPoints.length; i++) {\n            var point = arrayPoints[i];\n            if (point && point.toggleHighlight && point.hasHighlight()) {\n                this$1.togglePointHighlight(point, true);\n                this$1._points.push(point);\n            }\n        }\n    };\n\n    Highlight.prototype.togglePointHighlight = function togglePointHighlight (point, show) {\n        var toggleHandler = (point.options.highlight || {}).toggle;\n        if (toggleHandler) {\n            var eventArgs = {\n                category: point.category,\n                series: point.series,\n                dataItem: point.dataItem,\n                value: point.value,\n                stackValue: point.stackValue,\n                preventDefault: preventDefault,\n                visual: point.highlightVisual(),\n                show: show\n            };\n            toggleHandler(eventArgs);\n            if (!eventArgs._defaultPrevented) {\n                point.toggleHighlight(show);\n            }\n        } else {\n            point.toggleHighlight(show);\n        }\n    };\n\n    Highlight.prototype.hide = function hide () {\n        var this$1 = this;\n\n        var points = this._points;\n        while (points.length) {\n            this$1.togglePointHighlight(points.pop(), false);\n        }\n    };\n\n    Highlight.prototype.isHighlighted = function isHighlighted (element) {\n        var points = this._points;\n\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            if (element === point) {\n                return true;\n            }\n        }\n\n        return false;\n    };\n\n    return Highlight;\n}(Class));\n\nfunction preventDefault() {\n    this._defaultPrevented = true;\n}\n\nexport default Highlight;","export default function acceptKey(e, mouseKey) {\n    var key = (mouseKey || \"\").toLowerCase();\n    var event = e.event;\n    var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n    return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n    var ranges = {};\n    for (var idx = 0; idx < axisRanges.length; idx++) {\n        var axisRange = axisRanges[idx];\n        if (axisRange.axis.options.name) {\n            ranges[axisRange.axis.options.name] = {\n                min: axisRange.range.min,\n                max: axisRange.range.max\n            };\n        }\n    }\n    return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar Pannable = (function (Class) {\n    function Pannable(plotArea, options) {\n        Class.call(this);\n\n        this.plotArea = plotArea;\n        this.options = deepExtend({}, this.options, options);\n    }\n\n    if ( Class ) Pannable.__proto__ = Class;\n    Pannable.prototype = Object.create( Class && Class.prototype );\n    Pannable.prototype.constructor = Pannable;\n\n    Pannable.prototype.start = function start (e) {\n        this._active = acceptKey(e, this.options.key);\n        return this._active;\n    };\n\n    Pannable.prototype.move = function move (e) {\n        if (this._active) {\n            var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n            if (axisRanges.length) {\n                this.axisRanges = axisRanges;\n                return toChartAxisRanges(axisRanges);\n            }\n        }\n    };\n\n    Pannable.prototype.end = function end () {\n        var active = this._active;\n        this._active = false;\n\n        return active;\n    };\n\n    Pannable.prototype.pan = function pan () {\n        var ref = this;\n        var plotArea = ref.plotArea;\n        var axisRanges = ref.axisRanges;\n        if (axisRanges.length) {\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var range = axisRanges[idx];\n                plotArea.updateAxisOptions(range.axis, range.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    Pannable.prototype.destroy = function destroy () {\n        delete this.plotArea;\n    };\n\n    Pannable.prototype._panAxes = function _panAxes (e, position) {\n        var plotArea = this.plotArea;\n        var delta = -e[position].delta;\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var updatedAxes = [];\n\n        if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n            var axes = plotArea.axes;\n            for (var idx = 0; idx < axes.length; idx++) {\n                var axis = axes[idx];\n\n                if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n                    var range = axis.pan(delta);\n\n                    if (range) {\n                        range.limitRange = true;\n                        updatedAxes.push({\n                            axis: axis,\n                            range: range\n                        });\n                    }\n                }\n            }\n        }\n\n        return updatedAxes;\n    };\n\n    return Pannable;\n}(Class));\n\nPannable.prototype.options = {\n    key: \"none\",\n    lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nvar ZoomSelection = (function (Class) {\n    function ZoomSelection(chart, options) {\n        Class.call(this);\n\n        this.chart = chart;\n        this.options = deepExtend({}, this.options, options);\n        this.createElement();\n    }\n\n    if ( Class ) ZoomSelection.__proto__ = Class;\n    ZoomSelection.prototype = Object.create( Class && Class.prototype );\n    ZoomSelection.prototype.constructor = ZoomSelection;\n\n    ZoomSelection.prototype.createElement = function createElement () {\n        var marquee = this._marquee = document.createElement(\"div\");\n        marquee.className = \"k-marquee\";\n        var marqueeColor = document.createElement(\"div\");\n        marqueeColor.className = \"k-marquee-color\";\n        marquee.appendChild(marqueeColor);\n    };\n\n    ZoomSelection.prototype.removeElement = function removeElement () {\n        if (this._marquee.parentNode) {\n            this._marquee.parentNode.removeChild(this._marquee);\n        }\n    };\n\n    ZoomSelection.prototype.setStyles = function setStyles (styles) {\n        elementStyles(this._marquee, styles);\n    };\n\n    ZoomSelection.prototype.start = function start (e) {\n        if (acceptKey(e, this.options.key)) {\n            var chart = this.chart;\n            var point = chart._eventCoordinates(e);\n            var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n            var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n            if (zoomPane && clipBox) {\n                var offset = this._elementOffset();\n\n                clipBox.translate(offset.left, offset.top);\n                this._zoomPaneClipBox = clipBox;\n\n                document.body.appendChild(this._marquee);\n                this.setStyles({\n                    left: e.pageX + 1,\n                    top: e.pageY + 1,\n                    width: 0,\n                    height: 0\n                });\n\n                return true;\n            }\n        }\n        return false;\n    };\n\n    ZoomSelection.prototype._elementOffset = function _elementOffset () {\n        var chartElement = this.chart.element;\n        var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n        var paddingLeft = ref.paddingLeft;\n        var paddingTop = ref.paddingTop;\n        var offset = elementOffset(chartElement);\n\n        return {\n            left: paddingLeft + offset.left,\n            top: paddingTop + offset.top\n        };\n    };\n\n    ZoomSelection.prototype.move = function move (e) {\n        var zoomPane = this._zoomPane;\n        if (zoomPane) {\n            this.setStyles(this._selectionPosition(e));\n        }\n    };\n\n    ZoomSelection.prototype.end = function end (e) {\n        var zoomPane = this._zoomPane;\n        if (zoomPane) {\n            var elementOffset = this._elementOffset();\n            var selectionPosition = this._selectionPosition(e);\n            selectionPosition.left -= elementOffset.left;\n            selectionPosition.top -= elementOffset.top;\n\n            var start = { x: selectionPosition.left, y: selectionPosition.top };\n            var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n            this._updateAxisRanges(start, end);\n\n            this.removeElement();\n            delete this._zoomPane;\n\n            return toChartAxisRanges(this.axisRanges);\n        }\n    };\n\n    ZoomSelection.prototype.zoom = function zoom () {\n        var axisRanges = this.axisRanges;\n        if (axisRanges && axisRanges.length) {\n            var plotArea = this.chart._plotArea;\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var axisRange = axisRanges[idx];\n                plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    ZoomSelection.prototype.destroy = function destroy () {\n        this.removeElement();\n        delete this._marquee;\n        delete this.chart;\n    };\n\n    ZoomSelection.prototype._updateAxisRanges = function _updateAxisRanges (start, end) {\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var axisRanges = [];\n\n        var axes = this._zoomPane.axes;\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            var vertical = axis.options.vertical;\n            if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n                var range = axis.pointsRange(start, end);\n                if (range) {\n                    axisRanges.push({\n                        axis: axis,\n                        range: range\n                    });\n                }\n            }\n        }\n\n        this.axisRanges = axisRanges;\n    };\n\n    ZoomSelection.prototype._selectionPosition = function _selectionPosition (e) {\n        var clipBox = this._zoomPaneClipBox;\n        var startLocation = {\n            x: e.x.startLocation,\n            y: e.y.startLocation\n        };\n        var pageX = e.x.location;\n        var pageY = e.y.location;\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var left = Math.min(startLocation.x, pageX);\n        var top = Math.min(startLocation.y, pageY);\n        var width = Math.abs(startLocation.x - pageX);\n        var height = Math.abs(startLocation.y - pageY);\n\n        if (lock === X) {\n            left = clipBox.x1;\n            width = clipBox.width();\n        }\n        if (lock === Y) {\n            top = clipBox.y1;\n            height = clipBox.height();\n        }\n\n        if (pageX > clipBox.x2) {\n            width = clipBox.x2 - startLocation.x;\n        }\n\n        if (pageX < clipBox.x1) {\n            width = startLocation.x - clipBox.x1;\n        }\n\n        if (pageY > clipBox.y2) {\n            height = clipBox.y2 - startLocation.y;\n        }\n\n        if (pageY < clipBox.y1) {\n            height = startLocation.y - clipBox.y1;\n        }\n\n        return {\n            left: Math.max(left, clipBox.x1),\n            top: Math.max(top, clipBox.y1),\n            width: width,\n            height: height\n        };\n    };\n\n    return ZoomSelection;\n}(Class));\n\nZoomSelection.prototype.options = {\n    key: \"shift\",\n    lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar MousewheelZoom = (function (Class) {\n    function MousewheelZoom(chart, options) {\n        Class.call(this);\n\n        this.chart = chart;\n        this.options = deepExtend({}, this.options, options);\n    }\n\n    if ( Class ) MousewheelZoom.__proto__ = Class;\n    MousewheelZoom.prototype = Object.create( Class && Class.prototype );\n    MousewheelZoom.prototype.constructor = MousewheelZoom;\n\n    MousewheelZoom.prototype.updateRanges = function updateRanges (delta) {\n        var lock = (this.options.lock || \"\").toLowerCase();\n        var axisRanges = [];\n        var axes = this.chart._plotArea.axes;\n\n        for (var idx = 0; idx < axes.length; idx++) {\n            var axis = axes[idx];\n            var vertical = axis.options.vertical;\n\n            if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n                var range = axis.zoomRange(-delta);\n\n                if (range) {\n                    axisRanges.push({\n                        axis: axis,\n                        range: range\n                    });\n                }\n            }\n        }\n\n        this.axisRanges = axisRanges;\n        return toChartAxisRanges(axisRanges);\n    };\n\n    MousewheelZoom.prototype.zoom = function zoom () {\n        var axisRanges = this.axisRanges;\n        var plotArea = this.chart._plotArea;\n\n        if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n            for (var idx = 0; idx < axisRanges.length; idx++) {\n                var axisRange = axisRanges[idx];\n                plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n            }\n            plotArea.redraw(plotArea.panes);\n        }\n    };\n\n    MousewheelZoom.prototype.destroy = function destroy () {\n        delete this.chart;\n    };\n\n    return MousewheelZoom;\n}(Class));\n\nexport default MousewheelZoom;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nvar LegendLayout = (function (ChartElement) {\n    function LegendLayout(options, chartService) {\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n    }\n\n    if ( ChartElement ) LegendLayout.__proto__ = ChartElement;\n    LegendLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    LegendLayout.prototype.constructor = LegendLayout;\n\n    LegendLayout.prototype.render = function render () {\n        var ref = this;\n        var children = ref.children;\n        var options = ref.options;\n        var vertical = options.vertical;\n\n        this.visual = new draw.Layout(null, {\n            spacing: vertical ? 0 : options.spacing,\n            lineSpacing: vertical ? options.spacing : 0,\n            orientation: vertical ? \"vertical\" : \"horizontal\",\n            reverse: options.rtl,\n            alignItems: vertical ? \"start\" : \"center\"\n        });\n\n        for (var idx = 0; idx < children.length; idx++) {\n            var legendItem = children[idx];\n            legendItem.reflow(new Box());\n            legendItem.renderVisual();\n        }\n    };\n\n    LegendLayout.prototype.reflow = function reflow (box) {\n        this.visual.rect(box.toRect());\n        this.visual.reflow();\n        var bbox = this.visual.clippedBBox();\n\n        if (bbox) {\n            this.box = rectToBox(bbox);\n        } else {\n            this.box = new Box();\n        }\n    };\n\n    LegendLayout.prototype.renderVisual = function renderVisual () {\n        this.addVisual();\n    };\n\n    LegendLayout.prototype.createVisual = function createVisual () {};\n\n    return LegendLayout;\n}(ChartElement));\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nvar LegendItem = (function (BoxElement) {\n    function LegendItem(options) {\n        BoxElement.call(this, options);\n\n        this.createContainer();\n        if (!options.rtl) {\n            this.createMarker();\n            this.createLabel();\n        } else {\n            this.createLabel();\n            this.createMarker();\n        }\n    }\n\n    if ( BoxElement ) LegendItem.__proto__ = BoxElement;\n    LegendItem.prototype = Object.create( BoxElement && BoxElement.prototype );\n    LegendItem.prototype.constructor = LegendItem;\n\n    LegendItem.prototype.createContainer = function createContainer () {\n        this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n        this.append(this.container);\n    };\n\n    LegendItem.prototype.createMarker = function createMarker () {\n        this.container.append(new ShapeElement(this.markerOptions()));\n    };\n\n    LegendItem.prototype.markerOptions = function markerOptions () {\n        var options = this.options;\n        var markerColor = options.markerColor;\n        return deepExtend({}, options.markers, {\n            background: markerColor,\n            border: {\n                color: markerColor\n            }\n        });\n    };\n\n    LegendItem.prototype.createLabel = function createLabel () {\n        var options = this.options;\n        var labelOptions = deepExtend({}, options.labels);\n\n        this.container.append(new TextBox(options.text, labelOptions));\n    };\n\n    LegendItem.prototype.renderComplete = function renderComplete () {\n        BoxElement.prototype.renderComplete.call(this);\n\n        var cursor = this.options.cursor || {};\n        var eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n            fill: {\n                color: WHITE,\n                opacity: 0\n            },\n            stroke: null,\n            cursor: cursor.style || cursor\n        });\n\n        this.appendVisual(eventSink);\n    };\n\n    LegendItem.prototype.click = function click (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n            e.preventDefault();\n        }\n    };\n\n    LegendItem.prototype.over = function over (widget, e) {\n        var args = this.eventArgs(e);\n\n        if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n            widget._legendItemHover(args.seriesIndex, args.pointIndex);\n        }\n\n        // Don't trigger point hover for legend items\n        return true;\n    };\n\n    LegendItem.prototype.out = function out (widget, e) {\n        widget._unsetActivePoint();\n\n        widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n    };\n\n    LegendItem.prototype.eventArgs = function eventArgs (e) {\n        var options = this.options;\n\n        return {\n            element: eventElement(e),\n            text: options.text,\n            series: options.series,\n            seriesIndex: options.series.index,\n            pointIndex: options.pointIndex\n        };\n    };\n\n    LegendItem.prototype.renderVisual = function renderVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var customVisual = options.visual;\n\n        if (customVisual) {\n            this.visual = customVisual({\n                active: options.active,\n                series: options.series,\n                sender: this.getSender(),\n                pointIndex: options.pointIndex,\n                options: {\n                    markers: this.markerOptions(),\n                    labels: options.labels\n                },\n                createVisual: function () {\n                    this$1.createVisual();\n                    this$1.renderChildren();\n                    this$1.renderComplete();\n\n                    var defaultVisual = this$1.visual;\n\n                    delete this$1.visual;\n\n                    return defaultVisual;\n                }\n            });\n            this.addVisual();\n        } else {\n            BoxElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    return LegendItem;\n}(BoxElement));\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nvar HORIZONTAL = \"horizontal\";\nvar POINTER = \"pointer\";\nvar CUSTOM = \"custom\";\n\nvar Legend = (function (ChartElement) {\n    function Legend(options, chartService) {\n        if ( chartService === void 0 ) chartService = {};\n\n        ChartElement.call(this, options);\n\n        this.chartService = chartService;\n\n        if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n            this.options.position = RIGHT;\n        }\n\n        this.createContainer();\n\n        this.createItems();\n    }\n\n    if ( ChartElement ) Legend.__proto__ = ChartElement;\n    Legend.prototype = Object.create( ChartElement && ChartElement.prototype );\n    Legend.prototype.constructor = Legend;\n\n    Legend.prototype.createContainer = function createContainer () {\n        var options = this.options;\n        var position = options.position;\n        var userAlign = options.align;\n        var align = position;\n        var vAlign = CENTER;\n\n        if (position === CUSTOM) {\n            align = LEFT;\n        } else if (inArray(position, [ TOP, BOTTOM ])) {\n            if (userAlign === \"start\") {\n                align = LEFT;\n            } else if (userAlign === \"end\") {\n                align = RIGHT;\n            } else {\n                align = CENTER;\n            }\n            vAlign = position;\n        } else if (userAlign) {\n            if (userAlign === \"start\") {\n                vAlign = TOP;\n            } else if (userAlign === \"end\") {\n                vAlign = BOTTOM;\n            }\n        }\n\n        this.container = new BoxElement({\n            margin: options.margin,\n            padding: options.padding,\n            background: options.background,\n            border: options.border,\n            vAlign: vAlign,\n            align: align,\n            zIndex: options.zIndex,\n            shrinkToFit: true\n        });\n\n        this.append(this.container);\n    };\n\n    Legend.prototype.createItems = function createItems () {\n        var chartService = this.getService();\n        var options = this.options;\n        var vertical = this.isVertical();\n        var innerElement = new LegendLayout({\n            vertical: vertical,\n            spacing: options.spacing,\n            rtl: chartService.rtl\n        }, chartService);\n        var items = options.items;\n\n        if (options.reverse) {\n            items = items.slice(0).reverse();\n        }\n\n        var count = items.length;\n\n        for (var i = 0; i < count; i++) {\n            var item = items[i];\n\n            innerElement.append(new LegendItem(deepExtend({}, {\n                markers: options.markers,\n                labels: options.labels,\n                rtl: chartService.rtl\n            }, options.item, item)));\n        }\n\n        innerElement.render();\n\n        this.container.append(innerElement);\n    };\n\n    Legend.prototype.isVertical = function isVertical () {\n        var ref = this.options;\n        var orientation = ref.orientation;\n        var position = ref.position;\n        var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n               (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n        return vertical;\n    };\n\n    Legend.prototype.hasItems = function hasItems () {\n        return this.container.children[0].children.length > 0;\n    };\n\n    Legend.prototype.reflow = function reflow (targetBox) {\n        var options = this.options;\n        var legendBox = targetBox.clone();\n\n        if (!this.hasItems()) {\n            this.box = legendBox;\n            return;\n        }\n\n        if (options.position === CUSTOM) {\n            this.containerCustomReflow(legendBox);\n            this.box = legendBox;\n        } else {\n            this.containerReflow(legendBox);\n        }\n    };\n\n    Legend.prototype.containerReflow = function containerReflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var container = ref.container;\n        var position = options.position;\n        var width = options.width;\n        var height = options.height;\n        var pos = position === TOP || position === BOTTOM ? X : Y;\n        var vertical = this.isVertical();\n        var alignTarget = targetBox.clone();\n        var containerBox = targetBox.clone();\n\n        if (position === LEFT || position === RIGHT) {\n            containerBox.y1 = alignTarget.y1 = 0;\n        }\n\n        if (vertical && height) {\n            containerBox.y2 = containerBox.y1 + height;\n            containerBox.align(alignTarget, Y, container.options.vAlign);\n        } else if (!vertical && width) {\n            containerBox.x2 = containerBox.x1 + width;\n            containerBox.align(alignTarget, X, container.options.align);\n        }\n\n        container.reflow(containerBox);\n        containerBox = container.box;\n\n        var box = containerBox.clone();\n\n        if (options.offsetX || options.offsetY) {\n            containerBox.translate(options.offsetX, options.offsetY);\n            this.container.reflow(containerBox);\n        }\n\n        box[pos + 1] = targetBox[pos + 1];\n        box[pos + 2] = targetBox[pos + 2];\n\n        this.box = box;\n    };\n\n    Legend.prototype.containerCustomReflow = function containerCustomReflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var container = ref.container;\n        var offsetX = options.offsetX;\n        var offsetY = options.offsetY;\n        var width = options.width;\n        var height = options.height;\n        var vertical = this.isVertical();\n        var containerBox = targetBox.clone();\n\n        if (vertical && height) {\n            containerBox.y2 = containerBox.y1 + height;\n        } else if (!vertical && width) {\n            containerBox.x2 = containerBox.x1 + width;\n        }\n        container.reflow(containerBox);\n        containerBox = container.box;\n\n        container.reflow(new Box(\n            offsetX, offsetY,\n            offsetX + containerBox.width(), offsetY + containerBox.height()\n        ));\n    };\n\n    Legend.prototype.renderVisual = function renderVisual () {\n        if (this.hasItems()) {\n            ChartElement.prototype.renderVisual.call(this);\n        }\n    };\n\n    return Legend;\n}(ChartElement));\n\nsetDefaultOptions(Legend, {\n    position: RIGHT,\n    items: [],\n    offsetX: 0,\n    offsetY: 0,\n    margin: getSpacing(5),\n    padding: getSpacing(5),\n    border: {\n        color: BLACK,\n        width: 0\n    },\n    item: {\n        cursor: POINTER,\n        spacing: 6\n    },\n    spacing: 6,\n    background: \"\",\n    zIndex: 1,\n    markers: {\n        border: {\n            width: 0\n        },\n        width: 15,\n        height: 3,\n        type: \"rect\",\n        align: LEFT,\n        vAlign: CENTER\n    }\n});\n\nexport default Legend;","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\n\nvar PlotAreaFactory = (function (Class) {\n    function PlotAreaFactory() {\n        Class.call(this);\n\n        this._registry = [];\n    }\n\n    if ( Class ) PlotAreaFactory.__proto__ = Class;\n    PlotAreaFactory.prototype = Object.create( Class && Class.prototype );\n    PlotAreaFactory.prototype.constructor = PlotAreaFactory;\n\n    PlotAreaFactory.prototype.register = function register (type, seriesTypes) {\n        this._registry.push({\n            type: type,\n            seriesTypes: seriesTypes\n        });\n    };\n\n    PlotAreaFactory.prototype.create = function create (srcSeries, options, chartService) {\n        var registry = this._registry;\n        var match = registry[0];\n        var series;\n\n        for (var idx = 0; idx < registry.length; idx++) {\n            var entry = registry[idx];\n            series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n            if (series.length > 0) {\n                match = entry;\n                break;\n            }\n        }\n\n        return new match.type(series, options, chartService);\n    };\n\n    return PlotAreaFactory;\n}(Class));\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nvar ZOOM_ACCELERATION = 3;\nvar SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(className) {\n    var element = document.createElement(\"div\");\n    if (className) {\n        element.className = className;\n    }\n\n    return element;\n}\n\nfunction closestHandle(element) {\n    var current = element;\n    while (current && !hasClasses(current, \"k-handle\")) {\n        current = current.parentNode;\n    }\n\n    return current;\n}\n\nvar Selection = (function (Class) {\n    function Selection(chart, categoryAxis, options, observer) {\n        Class.call(this);\n\n        var chartElement = chart.element;\n\n        this.options = deepExtend({}, this.options, options);\n        this.chart = chart;\n        this.observer = observer;\n        this.chartElement = chartElement;\n        this.categoryAxis = categoryAxis;\n        this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n        this.initOptions();\n\n        this.visible = this.options.visible && chartElement.offsetHeight;\n\n        if (this.visible) {\n            this.createElements();\n\n            this.set(this._index(this.options.from), this._index(this.options.to));\n\n            this.bindEvents();\n        }\n    }\n\n    if ( Class ) Selection.__proto__ = Class;\n    Selection.prototype = Object.create( Class && Class.prototype );\n    Selection.prototype.constructor = Selection;\n\n    Selection.prototype.onPane = function onPane (pane) {\n        return this.categoryAxis.pane === pane;\n    };\n\n    Selection.prototype.createElements = function createElements () {\n        var options = this.options;\n        var wrapper = this.wrapper = createDiv(\"k-selector\");\n        elementStyles(wrapper, {\n            top: options.offset.top,\n            left: options.offset.left,\n            width: options.width,\n            height: options.height,\n            direction: 'ltr'\n        });\n        var selection = this.selection = createDiv(\"k-selection\");\n        this.leftMask = createDiv(\"k-mask\");\n        this.rightMask = createDiv(\"k-mask\");\n\n        wrapper.appendChild(this.leftMask);\n        wrapper.appendChild(this.rightMask);\n        wrapper.appendChild(selection);\n\n        selection.appendChild(createDiv(\"k-selection-bg\"));\n\n        var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle\");\n        var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle\");\n        leftHandle.appendChild(createDiv());\n        rightHandle.appendChild(createDiv());\n\n        selection.appendChild(leftHandle);\n        selection.appendChild(rightHandle);\n\n        this.chartElement.appendChild(wrapper);\n        var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n        var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n        var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n        options.selection = {\n            border: {\n                left: selectionStyles.borderLeftWidth,\n                right: selectionStyles.borderRightWidth\n            }\n        };\n\n        elementStyles(leftHandle, {\n            top: (selectionStyles.height - leftHandleHeight) / 2\n        });\n\n        elementStyles(rightHandle, {\n            top: (selectionStyles.height - rightHandleHeight) / 2\n        });\n\n        wrapper.style.cssText = wrapper.style.cssText;\n    };\n\n    Selection.prototype.bindEvents = function bindEvents$1 () {\n        var obj;\n\n        if (this.options.mousewheel !== false) {\n            this._mousewheelHandler = this._mousewheel.bind(this);\n            bindEvents(this.wrapper, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n        }\n\n        this._domEvents = DomEventsBuilder.create(this.wrapper, {\n            stopPropagation: true, // applicable for the jQuery UserEvents\n            start: this._start.bind(this),\n            move: this._move.bind(this),\n            end: this._end.bind(this),\n            tap: this._tap.bind(this),\n            press: this._press.bind(this),\n            gesturestart: this._gesturestart.bind(this),\n            gesturechange: this._gesturechange.bind(this),\n            gestureend: this._gestureend.bind(this)\n        });\n    };\n\n    Selection.prototype.initOptions = function initOptions () {\n        var ref = this;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var box = categoryAxis.pane.chartsBox();\n        var intlService = this.chart.chartService.intl;\n\n        if (this._dateAxis) {\n            deepExtend(options, {\n                min: parseDate(intlService, options.min),\n                max: parseDate(intlService, options.max),\n                from: parseDate(intlService, options.from),\n                to: parseDate(intlService, options.to)\n            });\n        }\n\n        var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n        var paddingLeft = ref$1.paddingLeft;\n        var paddingTop = ref$1.paddingTop;\n\n        this.options = deepExtend({}, {\n            width: box.width(),\n            height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n            padding: {\n                left: paddingLeft,\n                top: paddingTop\n            },\n            offset: {\n                left: box.x1 + paddingLeft,\n                top: box.y1 + paddingTop\n            },\n            from: options.min,\n            to: options.max\n        }, options);\n    };\n\n    Selection.prototype.destroy = function destroy () {\n        var obj;\n\n        if (this._domEvents) {\n            this._domEvents.destroy();\n            delete this._domEvents;\n        }\n\n        clearTimeout(this._mwTimeout);\n        this._state = null;\n\n        if (this.wrapper) {\n            if (this._mousewheelHandler) {\n                unbindEvents(this.wrapper, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n                this._mousewheelHandler = null;\n            }\n            this.chartElement.removeChild(this.wrapper);\n            this.wrapper = null;\n        }\n    };\n\n    Selection.prototype._rangeEventArgs = function _rangeEventArgs (range) {\n\n        return {\n            axis: this.categoryAxis.options,\n            from: this._value(range.from),\n            to: this._value(range.to)\n        };\n    };\n\n    Selection.prototype._start = function _start (e) {\n        var options = this.options;\n        var target = eventElement(e);\n\n        if (this._state || !target) {\n            return;\n        }\n\n        this.chart._unsetActivePoint();\n        this._state = {\n            moveTarget: closestHandle(target) || target,\n            startLocation: e.x ? e.x.location : 0,\n            range: {\n                from: this._index(options.from),\n                to: this._index(options.to)\n            }\n        };\n\n        var args = this._rangeEventArgs({\n            from: this._index(options.from),\n            to: this._index(options.to)\n        });\n\n        if (this.trigger(SELECT_START, args)) {\n            this._state = null;\n        }\n    };\n\n    Selection.prototype._press = function _press (e) {\n        var handle;\n        if (this._state) {\n            handle = this._state.moveTarget;\n        } else {\n            handle = closestHandle(eventElement(e));\n        }\n        if (handle) {\n            addClass(handle, \"k-handle-active\");\n        }\n    };\n\n    Selection.prototype._move = function _move (e) {\n        if (!this._state) {\n            return;\n        }\n\n        var ref = this;\n        var state = ref._state;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var range = state.range;\n        var target = state.moveTarget;\n        var reverse = categoryAxis.options.reverse;\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var delta = state.startLocation - e.x.location;\n        var oldRange = { from: range.from, to: range.to };\n        var span = range.to - range.from;\n        var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n        var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n        if (!target) {\n            return;\n        }\n\n        var leftHandle = hasClasses(target, \"k-left-handle\");\n        var rightHandle = hasClasses(target, \"k-right-handle\");\n\n        if (hasClasses(target, \"k-selection k-selection-bg\")) {\n            range.from = Math.min(\n                Math.max(min, from - offset),\n                max - span\n            );\n            range.to = Math.min(\n                range.from + span,\n                max\n            );\n        } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n            range.from = Math.min(\n                Math.max(min, from - offset),\n                max - 1\n            );\n            range.to = Math.max(range.from + 1, range.to);\n        } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n            range.to = Math.min(\n                Math.max(min + 1, to - offset),\n                max\n            );\n            range.from = Math.min(range.to - 1, range.from);\n        }\n\n        if (range.from !== oldRange.from || range.to !== oldRange.to) {\n            this.move(range.from, range.to);\n            this.trigger(SELECT, this._rangeEventArgs(range));\n        }\n    };\n\n    Selection.prototype._end = function _end () {\n        if (this._state) {\n            var moveTarget = this._state.moveTarget;\n            if (moveTarget) {\n                removeClass(moveTarget, \"k-handle-active\");\n            }\n\n            var range = this._state.range;\n            this.set(range.from, range.to);\n            this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n            delete this._state;\n        }\n    };\n\n    Selection.prototype._tap = function _tap (e) {\n        var ref = this;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var coords = this.chart._eventCoordinates(e);\n        var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var span = to - from;\n        var mid = from + span / 2;\n        var range = {};\n        var rightClick = e.event.which === 3;\n        var offset = Math.round(mid - categoryIx);\n\n        if (this._state || rightClick) {\n            return;\n        }\n\n\n        this.chart._unsetActivePoint();\n\n        if (!categoryAxis.options.justified) {\n            offset--;\n        }\n\n        range.from = Math.min(\n            Math.max(min, from - offset),\n            max - span\n        );\n\n        range.to = Math.min(range.from + span, max);\n\n        this._start(e);\n        if (this._state) {\n            this._state.range = range;\n            this.trigger(SELECT, this._rangeEventArgs(range));\n            this._end();\n        }\n    };\n\n    Selection.prototype._mousewheel = function _mousewheel (e) {\n        var this$1 = this;\n\n        var delta = mousewheelDelta(e);\n\n        this._start({ target: this.selection });\n\n        if (this._state) {\n            var range = this._state.range;\n\n            e.preventDefault();\n            e.stopPropagation();\n\n            if (Math.abs(delta) > 1) {\n                delta *= ZOOM_ACCELERATION;\n            }\n\n            if (this.options.mousewheel.reverse) {\n                delta *= -1;\n            }\n\n            if (this.expand(delta)) {\n                this.trigger(SELECT, {\n                    axis: this.categoryAxis.options,\n                    delta: delta,\n                    originalEvent: e,\n                    from: this._value(range.from),\n                    to: this._value(range.to)\n                });\n            }\n\n            if (this._mwTimeout) {\n                clearTimeout(this._mwTimeout);\n            }\n\n            this._mwTimeout = setTimeout(function () {\n                this$1._end();\n            }, MOUSEWHEEL_DELAY);\n        }\n    };\n\n    Selection.prototype._gesturestart = function _gesturestart (e) {\n        var options = this.options;\n\n        this._state = {\n            range: {\n                from: this._index(options.from),\n                to: this._index(options.to)\n            }\n        };\n        var args = this._rangeEventArgs(this._state.range);\n\n        if (this.trigger(SELECT_START, args)) {\n            this._state = null;\n        } else {\n            e.preventDefault();\n        }\n    };\n\n    Selection.prototype._gestureend = function _gestureend () {\n        if (this._state) {\n            this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n            delete this._state;\n        }\n    };\n\n    Selection.prototype._gesturechange = function _gesturechange (e) {\n        var ref = this;\n        var chart = ref.chart;\n        var state = ref._state;\n        var options = ref.options;\n        var categoryAxis = ref.categoryAxis;\n        var range = state.range;\n        var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n        var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n        var left = Math.min(p0, p1);\n        var right = Math.max(p0, p1);\n\n        e.preventDefault();\n\n        range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n        range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n        this.move(range.from, range.to);\n\n        this.trigger(SELECT, this._rangeEventArgs(range));\n    };\n\n    Selection.prototype._index = function _index (value) {\n        var index = value;\n\n        if (value instanceof Date) {\n            index = this.categoryAxis.categoryIndex(value);\n        }\n\n        return index;\n    };\n\n    Selection.prototype._value = function _value (index) {\n        var value = index;\n        if (this._dateAxis) {\n            value = this.categoryAxis.categoryAt(index);\n            if (value > this.options.max) {\n                value = this.options.max;\n            }\n        }\n\n        return value;\n    };\n\n    Selection.prototype._slot = function _slot (value) {\n        var categoryAxis = this.categoryAxis;\n        var index = this._index(value);\n\n        return categoryAxis.getSlot(index, index, true);\n    };\n\n    Selection.prototype.move = function move (from, to) {\n        var options = this.options;\n        var reverse = this.categoryAxis.options.reverse;\n        var offset = options.offset;\n        var padding = options.padding;\n        var border = options.selection.border;\n        var left = reverse ? to : from;\n        var right = reverse ? from : to;\n        var edge = 'x' + (reverse ? 2 : 1);\n\n        var box = this._slot(left);\n        var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n        elementStyles(this.leftMask, {\n            width: leftMaskWidth\n        });\n        elementStyles(this.selection, {\n            left: leftMaskWidth\n        });\n\n        box = this._slot(right);\n\n        var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n        elementStyles(this.rightMask, {\n            width: rightMaskWidth\n        });\n\n        var distance = options.width - rightMaskWidth;\n        if (distance !== options.width) {\n            distance += border.right;\n        }\n\n        elementStyles(this.rightMask, {\n            left: distance\n        });\n        elementStyles(this.selection, {\n            width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n        });\n    };\n\n    Selection.prototype.set = function set (from, to) {\n        var options = this.options;\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var fromValue = limitValue(this._index(from), min, max);\n        var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n        if (options.visible) {\n            this.move(fromValue, toValue);\n        }\n\n        options.from = this._value(fromValue);\n        options.to = this._value(toValue);\n    };\n\n    Selection.prototype.expand = function expand (delta) {\n        var options = this.options;\n        var min = this._index(options.min);\n        var max = this._index(options.max);\n        var zDir = options.mousewheel.zoom;\n        var from = this._index(options.from);\n        var to = this._index(options.to);\n        var range = { from: from, to: to };\n        var oldRange = deepExtend({}, range);\n\n        if (this._state) {\n            range = this._state.range;\n        }\n\n        if (zDir !== RIGHT) {\n            range.from = limitValue(\n                limitValue(from - delta, 0, to - 1),\n                min, max\n            );\n        }\n\n        if (zDir !== LEFT) {\n            range.to = limitValue(\n                limitValue(to + delta, range.from + 1, max),\n                min,\n                max\n             );\n        }\n\n        if (range.from !== oldRange.from || range.to !== oldRange.to) {\n            this.set(range.from, range.to);\n            return true;\n        }\n    };\n\n    Selection.prototype.trigger = function trigger (name, args) {\n        return (this.observer || this.chart).trigger(name, args);\n    };\n\n    return Selection;\n}(Class));\n\nsetDefaultOptions(Selection, {\n    visible: true,\n    mousewheel: {\n        zoom: \"both\"\n    },\n    min: MIN_VALUE,\n    max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nvar Tooltip = (function (BaseTooltip) {\n    function Tooltip () {\n        BaseTooltip.apply(this, arguments);\n    }\n\n    if ( BaseTooltip ) Tooltip.__proto__ = BaseTooltip;\n    Tooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    Tooltip.prototype.constructor = Tooltip;\n\n    Tooltip.prototype.show = function show (point) {\n        if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n            return;\n        }\n\n        var options = deepExtend({}, this.options, point.options.tooltip);\n        var anchor = point.tooltipAnchor();\n\n        if (anchor) {\n            this._current = point;\n            BaseTooltip.prototype.show.call(this, {\n                point: point,\n                anchor: anchor\n            }, options, point);\n        } else {\n            this.hide();\n        }\n    };\n\n    Tooltip.prototype.hide = function hide () {\n        delete this._current;\n        BaseTooltip.prototype.hide.call(this);\n    };\n\n    return Tooltip;\n}(BaseTooltip));\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nvar SharedTooltip = (function (BaseTooltip) {\n    function SharedTooltip(plotArea, options) {\n        BaseTooltip.call(this, plotArea.chartService, options);\n\n        this.plotArea = plotArea;\n        this.formatService = plotArea.chartService.format;\n    }\n\n    if ( BaseTooltip ) SharedTooltip.__proto__ = BaseTooltip;\n    SharedTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n    SharedTooltip.prototype.constructor = SharedTooltip;\n\n    SharedTooltip.prototype.showAt = function showAt (points, coords) {\n        var tooltipPoints = grep(points, function(point) {\n            var tooltip = point.series.tooltip;\n            var excluded = tooltip && tooltip.visible === false;\n\n            return !excluded;\n        });\n\n        if (tooltipPoints.length > 0) {\n            var point = tooltipPoints[0];\n            var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n            var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n            this.show({\n                anchor: anchor,\n                shared: true,\n                points: points,\n                category: point.category,\n                categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n                series: this.plotArea.series\n            }, this.options);\n        }\n    };\n\n    SharedTooltip.prototype._slotAnchor = function _slotAnchor (point, slot) {\n        var axis = this.plotArea.categoryAxis;\n        var align = {\n            horizontal: \"left\",\n            vertical: \"center\"\n        };\n\n        if (!axis.options.vertical) {\n            point.x = slot.center().x;\n        }\n\n        return {\n            point: point,\n            align: align\n        };\n    };\n\n    SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n        var box = point.owner.pane.chartsBox();\n        var vertical = this.plotArea.categoryAxis.options.vertical;\n        var center = box.center();\n        var slotCenter = slot.center();\n        var align = {\n            horizontal: \"center\",\n            vertical: \"center\"\n        };\n\n        var centerPoint;\n        if (vertical) {\n            centerPoint = new Point(center.x, slotCenter.y);\n        } else {\n            centerPoint = new Point(slotCenter.x, center.y);\n        }\n\n        return {\n            point: centerPoint,\n            align: align\n        };\n    };\n\n    return SharedTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(SharedTooltip, {\n    categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar BarChartAnimation = (function (superclass) {\n    function BarChartAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BarChartAnimation.__proto__ = superclass;\n    BarChartAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BarChartAnimation.prototype.constructor = BarChartAnimation;\n\n    BarChartAnimation.prototype.setup = function setup () {\n        var ref = this;\n        var element = ref.element;\n        var options = ref.options;\n        var bbox = element.bbox();\n\n        if (bbox) {\n            this.origin = options.origin;\n            var axis = options.vertical ? Y : X;\n\n            var fromScale = this.fromScale = new geom.Point(1, 1);\n            fromScale[axis] = START_SCALE;\n\n            element.transform(geom.transform()\n                .scale(fromScale.x, fromScale.y)\n            );\n        } else {\n            this.abort();\n        }\n    };\n\n    BarChartAnimation.prototype.step = function step (pos) {\n        var scaleX = interpolateValue(this.fromScale.x, 1, pos);\n        var scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n        this.element.transform(geom.transform()\n            .scale(scaleX, scaleY, this.origin)\n        );\n    };\n\n    BarChartAnimation.prototype.abort = function abort () {\n        superclass.prototype.abort.call(this);\n        this.element.transform(null);\n    };\n\n    return BarChartAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BarChartAnimation, {\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar BubbleAnimation = (function (superclass) {\n    function BubbleAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BubbleAnimation.__proto__ = superclass;\n    BubbleAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BubbleAnimation.prototype.constructor = BubbleAnimation;\n\n    BubbleAnimation.prototype.setup = function setup () {\n        var center = this.center = this.element.bbox().center();\n        this.element.transform(geom.transform()\n            .scale(START_SCALE, START_SCALE, center)\n        );\n    };\n\n    BubbleAnimation.prototype.step = function step (pos) {\n        this.element.transform(geom.transform()\n            .scale(pos, pos, this.center)\n        );\n    };\n\n    return BubbleAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BubbleAnimation, {\n    easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar FadeInAnimation = (function (superclass) {\n    function FadeInAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) FadeInAnimation.__proto__ = superclass;\n    FadeInAnimation.prototype = Object.create( superclass && superclass.prototype );\n    FadeInAnimation.prototype.constructor = FadeInAnimation;\n\n    FadeInAnimation.prototype.setup = function setup () {\n        this.fadeTo = this.element.opacity();\n        this.element.opacity(0);\n    };\n\n    FadeInAnimation.prototype.step = function step (pos) {\n        this.element.opacity(pos * this.fadeTo);\n    };\n\n    return FadeInAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(FadeInAnimation, {\n    duration: 200,\n    easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PieAnimation = (function (superclass) {\n    function PieAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) PieAnimation.__proto__ = superclass;\n    PieAnimation.prototype = Object.create( superclass && superclass.prototype );\n    PieAnimation.prototype.constructor = PieAnimation;\n\n    PieAnimation.prototype.setup = function setup () {\n        this.element.transform(geom.transform()\n            .scale(START_SCALE, START_SCALE, this.options.center)\n        );\n    };\n\n    PieAnimation.prototype.step = function step (pos) {\n        this.element.transform(geom.transform()\n            .scale(pos, pos, this.options.center)\n        );\n    };\n\n    return PieAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(PieAnimation, {\n    easing: \"easeOutElastic\",\n    duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nvar ScatterLineChart = (function (ScatterChart) {\n    function ScatterLineChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) ScatterLineChart.__proto__ = ScatterChart;\n    ScatterLineChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    ScatterLineChart.prototype.constructor = ScatterLineChart;\n\n    ScatterLineChart.prototype.render = function render () {\n        ScatterChart.prototype.render.call(this);\n\n        this.renderSegments();\n    };\n\n    ScatterLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        return new pointType(linePoints, currentSeries, seriesIx);\n    };\n\n    ScatterLineChart.prototype.animationPoints = function animationPoints () {\n        var points = ScatterChart.prototype.animationPoints.call(this);\n        return points.concat(this._segments);\n    };\n\n    ScatterLineChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n        if (missingValues === ZERO) {\n            var missingValue = {\n                x: value.x,\n                y: value.y\n            };\n            if (!hasValue(missingValue.x)) {\n                missingValue.x = 0;\n            }\n            if (!hasValue(missingValue.y)) {\n                missingValue.y = 0;\n            }\n            return missingValue;\n        }\n    };\n\n    return ScatterLineChart;\n}(ScatterChart));\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\nimport equalsIgnoreCase from '../utils/equals-ignore-case';\nimport singleItemOrArray from '../utils/single-item-or-array';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nvar XYPlotArea = (function (PlotAreaBase) {\n    function XYPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) XYPlotArea.__proto__ = PlotAreaBase;\n    XYPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    XYPlotArea.prototype.constructor = XYPlotArea;\n\n    XYPlotArea.prototype.initFields = function initFields () {\n        this.namedXAxes = {};\n        this.namedYAxes = {};\n\n        this.xAxisRangeTracker = new AxisGroupRangeTracker();\n        this.yAxisRangeTracker = new AxisGroupRangeTracker();\n    };\n\n    XYPlotArea.prototype.render = function render (panes) {\n        var this$1 = this;\n        if ( panes === void 0 ) panes = this.panes;\n\n        var seriesByPane = this.groupSeriesByPane();\n\n        for (var i = 0; i < panes.length; i++) {\n            var pane = panes[i];\n            var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n            this$1.addToLegend(paneSeries);\n            var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n            if (!filteredSeries) {\n                continue;\n            }\n\n            this$1.createScatterChart(\n                filterSeriesByType(filteredSeries, SCATTER),\n                pane\n            );\n\n            this$1.createScatterLineChart(\n                filterSeriesByType(filteredSeries, SCATTER_LINE),\n                pane\n            );\n\n            this$1.createBubbleChart(\n                filterSeriesByType(filteredSeries, BUBBLE),\n                pane\n            );\n        }\n\n        this.createAxes(panes);\n    };\n\n    XYPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        this.xAxisRangeTracker.update(chart.xAxisRanges);\n        this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    XYPlotArea.prototype.removeAxis = function removeAxis (axis) {\n        var axisName = axis.options.name;\n\n        PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n        if (axis.options.vertical) {\n            this.yAxisRangeTracker.reset(axisName);\n            delete this.namedYAxes[axisName];\n        } else {\n            this.xAxisRangeTracker.reset(axisName);\n            delete this.namedXAxes[axisName];\n        }\n\n        if (axis === this.axisX) {\n            delete this.axisX;\n        }\n\n        if (axis === this.axisY) {\n            delete this.axisY;\n        }\n    };\n\n    // TODO: Refactor, optionally use series.pane option\n    XYPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n        var options = this.options;\n        var xAxisName = series.xAxis;\n        var xAxisOptions = [].concat(options.xAxis);\n        var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n        var yAxisName = series.yAxis;\n        var yAxisOptions = [].concat(options.yAxis);\n        var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n        var panes = options.panes || [ {} ];\n        var defaultPaneName = panes[0].name || \"default\";\n        var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n        return paneName;\n    };\n\n    XYPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new ScatterChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createScatterLineChart = function createScatterLineChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createBubbleChart = function createBubbleChart (series, pane) {\n        if (series.length > 0) {\n            this.appendChart(\n                new BubbleChart(this, { series: series, clip: pane.options.clip }),\n                pane\n            );\n        }\n    };\n\n    XYPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n        var axisName = options.name;\n        var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n        var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n        var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n        var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n        var defaultRange = tracker.query();\n        var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n        var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n        var typeSamples = [ axisOptions.min, axisOptions.max ];\n        var series = this.series;\n\n        for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n            if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n                var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n                typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n                break;\n            }\n        }\n\n        if (axisIndex === 0 && defaultRange) {\n            range.min = Math.min(range.min, defaultRange.min);\n            range.max = Math.max(range.max, defaultRange.max);\n        }\n\n        var inferredDate;\n\n        for (var i = 0; i < typeSamples.length; i++) {\n            if (typeSamples[i] instanceof Date) {\n                inferredDate = true;\n                break;\n            }\n        }\n\n        var axisType;\n        if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n            axisType = DateValueAxis;\n        } else if (isLog) {\n            axisType = LogarithmicAxis;\n        } else {\n            axisType = NumericAxis;\n        }\n\n        var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n        axis.axisIndex = axisIndex;\n\n        if (axisName) {\n            if (namedAxes[axisName]) {\n                throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n            }\n            namedAxes[axisName] = axis;\n        }\n\n        this.appendAxis(axis);\n\n        return axis;\n    };\n\n    XYPlotArea.prototype.createAxes = function createAxes (panes) {\n        var this$1 = this;\n\n        var options = this.options;\n        var xAxesOptions = [].concat(options.xAxis);\n        var xAxes = [];\n        var yAxesOptions = [].concat(options.yAxis);\n        var yAxes = [];\n\n        for (var idx = 0; idx < xAxesOptions.length; idx++) {\n            var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n            if (inArray(axisPane, panes)) {\n                xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n            }\n        }\n\n        for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n            var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n            if (inArray(axisPane$1, panes)) {\n                yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n            }\n        }\n\n        this.axisX = this.axisX || xAxes[0];\n        this.axisY = this.axisY || yAxes[0];\n    };\n\n    XYPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var allAxes = this.axes;\n        var length = allAxes.length;\n        var xValues = [];\n        var yValues = [];\n\n        for (var i = 0; i < length; i++) {\n            var axis = allAxes[i];\n            var values = axis.options.vertical ? yValues : xValues;\n            var currentValue = axis.getValue(point);\n            if (currentValue !== null) {\n                values.push(currentValue);\n            }\n        }\n\n        if (xValues.length > 0 && yValues.length > 0) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                originalEvent: e,\n                x: singleItemOrArray(xValues),\n                y: singleItemOrArray(yValues)\n            });\n        }\n    };\n\n    XYPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n        var vertical = axis.options.vertical;\n        var axes = this.groupAxes(this.panes);\n        var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n        updateAxisOptions(this.options, index, vertical, options);\n        updateAxisOptions(this.originalOptions, index, vertical, options);\n    };\n\n    return XYPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n    var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n    deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n    xAxis: {},\n    yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, BLACK, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nvar PieSegment = (function (ChartElement) {\n    function PieSegment(value, sector, options) {\n        ChartElement.call(this, options);\n\n        this.value = value;\n        this.sector = sector;\n    }\n\n    if ( ChartElement ) PieSegment.__proto__ = ChartElement;\n    PieSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PieSegment.prototype.constructor = PieSegment;\n\n    PieSegment.prototype.render = function render () {\n        var labels = this.options.labels;\n        var chartService = this.owner.chartService;\n        var labelText = this.value;\n\n        if (this._rendered || this.visible === false) {\n            return;\n        }\n        this._rendered = true;\n\n        var labelTemplate = getTemplate(labels);\n        var pointData = this.pointData();\n\n        if (labelTemplate) {\n            labelText = labelTemplate(pointData);\n        } else if (labels.format) {\n            labelText = chartService.format.auto(labels.format, labelText);\n        }\n\n        if (labels.visible && (labelText || labelText === 0)) {\n            if (labels.position === CENTER || labels.position === INSIDE_END) {\n                if (!labels.color) {\n                    var brightnessValue = new Color(this.options.color).percBrightness();\n                    if (brightnessValue > 180) {\n                        labels.color = BLACK;\n                    } else {\n                        labels.color = WHITE;\n                    }\n                }\n                if (!labels.background) {\n                    labels.background = this.options.color;\n                }\n            } else {\n                var themeLabels = chartService.theme.seriesDefaults.labels;\n                labels.color = labels.color || themeLabels.color;\n                labels.background = labels.background || themeLabels.background;\n            }\n\n\n            this.label = new TextBox(labelText, deepExtend({}, labels, {\n                align: CENTER,\n                vAlign: \"\",\n                animation: {\n                    type: FADEIN,\n                    delay: this.animationDelay\n                }\n            }), pointData);\n\n            this.append(this.label);\n        }\n    };\n\n    PieSegment.prototype.reflow = function reflow (targetBox) {\n        this.render();\n        this.box = targetBox;\n        this.reflowLabel();\n    };\n\n    PieSegment.prototype.reflowLabel = function reflowLabel () {\n        var ref = this;\n        var labelsOptions = ref.options.labels;\n        var label = ref.label;\n        var sector = this.sector.clone();\n        var labelsDistance = labelsOptions.distance;\n        var angle = sector.middle();\n\n        if (label) {\n            var labelHeight = label.box.height();\n            var labelWidth = label.box.width();\n            var lp;\n\n            if (labelsOptions.position === CENTER) {\n                sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n                lp = sector.point(angle);\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else if (labelsOptions.position === INSIDE_END) {\n                sector.radius = sector.radius - labelHeight / 2;\n                lp = sector.point(angle);\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else {\n                var x1;\n                lp = sector.clone().expand(labelsDistance).point(angle);\n                if (lp.x >= sector.center.x) {\n                    x1 = lp.x + labelWidth;\n                    label.orientation = RIGHT;\n                } else {\n                    x1 = lp.x - labelWidth;\n                    label.orientation = LEFT;\n                }\n                label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n            }\n        }\n    };\n\n    PieSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var sector = ref.sector;\n        var options = ref.options;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        if (this.value) {\n            if (options.visual) {\n                var startAngle = (sector.startAngle + 180) % 360;\n                var visual = options.visual({\n                    category: this.category,\n                    dataItem: this.dataItem,\n                    value: this.value,\n                    series: this.series,\n                    percentage: this.percentage,\n                    center: new geom.Point(sector.center.x, sector.center.y),\n                    radius: sector.radius,\n                    innerRadius: sector.innerRadius,\n                    startAngle: startAngle,\n                    endAngle: startAngle + sector.angle,\n                    options: options,\n                    sender: this.getSender(),\n                    createVisual: function () {\n                        var group = new draw.Group();\n                        this$1.createSegmentVisual(group);\n\n                        return group;\n                    }\n                });\n\n                if (visual) {\n                    this.visual.append(visual);\n                }\n            } else {\n                this.createSegmentVisual(this.visual);\n            }\n        }\n    };\n\n    PieSegment.prototype.createSegmentVisual = function createSegmentVisual (group) {\n        var ref = this;\n        var sector = ref.sector;\n        var options = ref.options;\n        var borderOptions = options.border || {};\n        var border = borderOptions.width > 0 ? {\n            stroke: {\n                color: borderOptions.color,\n                width: borderOptions.width,\n                opacity: borderOptions.opacity,\n                dashType: borderOptions.dashType\n            }\n        } : {};\n        var color = options.color;\n        var fill = {\n            color: color,\n            opacity: options.opacity\n        };\n        var visual = this.createSegment(sector, deepExtend({\n            fill: fill,\n            stroke: {\n                opacity: options.opacity\n            },\n            zIndex: options.zIndex\n        }, border));\n\n        group.append(visual);\n\n        if (hasGradientOverlay(options)) {\n            group.append(this.createGradientOverlay(visual, {\n                baseColor: color,\n                fallbackFill: fill\n            }, deepExtend({\n                center: [ sector.center.x, sector.center.y ],\n                innerRadius: sector.innerRadius,\n                radius: sector.radius,\n                userSpace: true\n            }, options.overlay)));\n        }\n    };\n\n    PieSegment.prototype.createSegment = function createSegment (sector, options) {\n        if (options.singleSegment) {\n            return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n        }\n\n        return ShapeBuilder.current.createRing(sector, options);\n    };\n\n    PieSegment.prototype.createAnimation = function createAnimation () {\n        var ref = this;\n        var options = ref.options;\n        var center = ref.sector.center;\n\n        deepExtend(options, {\n            animation: {\n                center: [ center.x, center.y ],\n                delay: this.animationDelay\n            }\n        });\n\n        ChartElement.prototype.createAnimation.call(this);\n    };\n\n    PieSegment.prototype.createHighlight = function createHighlight (options) {\n        var highlight = this.options.highlight || {};\n        var border = highlight.border || {};\n\n        return this.createSegment(this.sector, deepExtend({}, options, {\n            fill: {\n                color: highlight.color,\n                opacity: highlight.opacity\n            },\n            stroke: {\n                opacity: border.opacity,\n                width: border.width,\n                color: border.color\n            }\n        }));\n    };\n\n    PieSegment.prototype.highlightVisual = function highlightVisual () {\n        return this.visual.children[0];\n    };\n\n    PieSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var sector = this.sector;\n\n        return {\n            options: this.options,\n            radius: sector.radius,\n            innerRadius: sector.innerRadius,\n            center: new geom.Point(sector.center.x, sector.center.y),\n            startAngle: sector.startAngle,\n            endAngle: sector.angle + sector.startAngle,\n            visual: this.visual\n        };\n    };\n\n    PieSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n        var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n        var midAndle = sector.middle();\n        var midPoint = sector.point(midAndle);\n\n        return {\n            point: midPoint,\n            align: tooltipAlignment(midAndle + 180)\n        };\n    };\n\n    PieSegment.prototype.formatValue = function formatValue (format) {\n        return this.owner.formatPointValue(this, format);\n    };\n\n    PieSegment.prototype.pointData = function pointData () {\n        return {\n            dataItem: this.dataItem,\n            category: this.category,\n            value: this.value,\n            series: this.series,\n            percentage: this.percentage\n        };\n    };\n\n    return PieSegment;\n}(ChartElement));\n\nvar RAD_30 = round(rad(30), DEFAULT_PRECISION);\nvar RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n    var radians = rad(angle);\n    var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n    var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n    var horizontal;\n    if (Math.abs(sine) > RAD_60) {\n        horizontal = CENTER;\n    } else if (cosine < 0) {\n        horizontal = RIGHT;\n    } else {\n        horizontal = LEFT;\n    }\n\n    var vertical;\n    if (Math.abs(sine) < RAD_30) {\n        vertical = CENTER;\n    } else if (sine < 0) {\n        vertical = BOTTOM;\n    } else {\n        vertical = TOP;\n    }\n\n    return {\n        horizontal: horizontal,\n        vertical: vertical\n    };\n}\n\nsetDefaultOptions(PieSegment, {\n    color: WHITE,\n    overlay: {\n        gradient: \"roundedBevel\"\n    },\n    border: {\n        width: 0.5\n    },\n    labels: {\n        visible: false,\n        distance: 35,\n        font: DEFAULT_FONT,\n        margin: getSpacing(0.5),\n        align: CIRCLE,\n        zIndex: 1,\n        position: OUTSIDE_END\n    },\n    animation: {\n        type: PIE\n    },\n    highlight: {\n        visible: true,\n        border: {\n            width: 1\n        }\n    },\n    visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nvar PieChartMixin = {\n    createLegendItem: function(value, point, options) {\n        var legendOptions = this.options.legend || {};\n        var labelsOptions = legendOptions.labels || {};\n        var inactiveItems = legendOptions.inactiveItems || {};\n        var inactiveItemsLabels = inactiveItems.labels || {};\n\n        if (options && options.visibleInLegend !== false) {\n            var pointVisible = options.visible !== false;\n            var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n                getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n            var text = options.category;\n\n            if (labelTemplate) {\n                text = labelTemplate({\n                    text: text,\n                    series: options.series,\n                    dataItem: options.dataItem,\n                    percentage: options.percentage,\n                    value: value\n                });\n            }\n\n            var itemLabelOptions, markerColor;\n            if (pointVisible) {\n                itemLabelOptions = {};\n                markerColor = point.color;\n            } else {\n                itemLabelOptions = {\n                    color: inactiveItemsLabels.color,\n                    font: inactiveItemsLabels.font\n                };\n                markerColor = (inactiveItems.markers || {}).color;\n            }\n\n            if (hasValue(text) && text !== \"\") {\n                this.legendItems.push({\n                    active: pointVisible,\n                    pointIndex: options.index,\n                    text: text,\n                    series: options.series,\n                    markerColor: markerColor,\n                    labels: itemLabelOptions\n                });\n            }\n        }\n    }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar PIE_SECTOR_ANIM_DELAY = 70;\n\nvar PieChart = (function (ChartElement) {\n    function PieChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.chartService = plotArea.chartService;\n        this.points = [];\n        this.legendItems = [];\n        this.render();\n    }\n\n    if ( ChartElement ) PieChart.__proto__ = ChartElement;\n    PieChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    PieChart.prototype.constructor = PieChart;\n\n    PieChart.prototype.render = function render () {\n        this.traverseDataPoints(this.addValue.bind(this));\n    };\n\n    PieChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n        var colorsCount = seriesColors.length;\n        var series = options.series;\n        var seriesCount = series.length;\n\n        for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n            var currentSeries = series[seriesIx];\n            var data = currentSeries.data;\n            var ref$1 = bindSegments(currentSeries);\n            var total = ref$1.total;\n            var points = ref$1.points;\n            var count = ref$1.count;\n            var anglePerValue = 360 / total;\n            var constantAngle = (void 0);\n            if (!isFinite(anglePerValue)) {\n                constantAngle = 360 / count;\n            }\n            var currentAngle = (void 0);\n\n            if (defined(currentSeries.startAngle)) {\n                currentAngle = currentSeries.startAngle;\n            } else {\n                currentAngle = options.startAngle;\n            }\n\n            if (seriesIx !== seriesCount - 1) {\n                if (currentSeries.labels.position === OUTSIDE_END) {\n                    currentSeries.labels.position = CENTER;\n                }\n            }\n\n            for (var i = 0; i < points.length; i++) {\n                var pointData = points[i];\n                if (!pointData) {\n                    continue;\n                }\n\n                var fields = pointData.fields;\n                var value = pointData.value;\n                var visible = pointData.visible;\n                var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n                var explode = data.length !== 1 && Boolean(fields.explode);\n\n                if (!isFunction(currentSeries.color)) {\n                    currentSeries.color = fields.color || seriesColors[i % colorsCount];\n                }\n\n                callback(pointData.valueFields.value, new Ring(null, 0, 0, currentAngle, angle), {\n                    owner: this$1,\n                    category: defined(fields.category) ? fields.category : \"\",\n                    index: i,\n                    series: currentSeries,\n                    seriesIx: seriesIx,\n                    dataItem: data[i],\n                    percentage: total !== 0 ? value / total : 0,\n                    explode: explode,\n                    visibleInLegend: fields.visibleInLegend,\n                    visible: visible,\n                    zIndex: seriesCount - seriesIx,\n                    animationDelay: this$1.animationDelay(i, seriesIx, seriesCount)\n                });\n\n                if (visible !== false) {\n                    currentAngle += angle;\n                }\n            }\n        }\n    };\n\n    PieChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n        var series = fields.series;\n\n        evalOptions(options, {\n            value: value,\n            series: series,\n            dataItem: fields.dataItem,\n            category: fields.category,\n            percentage: fields.percentage\n        }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n    };\n\n    PieChart.prototype.addValue = function addValue (value, sector, fields) {\n        var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n        this.evalSegmentOptions(segmentOptions, value, fields);\n\n        this.createLegendItem(value, segmentOptions, fields);\n\n        if (fields.visible === false) {\n            return;\n        }\n\n        var segment = new PieSegment(value, sector, segmentOptions);\n        Object.assign(segment, fields);\n        this.append(segment);\n        this.points.push(segment);\n    };\n\n    PieChart.prototype.reflow = function reflow (targetBox) {\n        var ref = this;\n        var options = ref.options;\n        var points = ref.points;\n        var seriesConfigs = ref.seriesConfigs; if ( seriesConfigs === void 0 ) seriesConfigs = [];\n        var count = points.length;\n        var box = targetBox.clone();\n        var space = 5;\n        var minWidth = Math.min(box.width(), box.height());\n        var halfMinWidth = minWidth / 2;\n        var defaultPadding = minWidth - minWidth * 0.85;\n        var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n        var newBoxCenter = newBox.center();\n        var boxCenter = box.center();\n        var seriesCount = options.series.length;\n        var leftSideLabels = [];\n        var rightSideLabels = [];\n        var padding = valueOrDefault(options.padding, defaultPadding);\n\n        this.targetBox = targetBox;\n\n        padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n        newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n        var radius = halfMinWidth - padding;\n        var center = new Point(\n            radius + newBox.x1 + padding,\n            radius + newBox.y1 + padding\n        );\n\n        for (var i = 0; i < count; i++) {\n            var segment = points[i];\n            var sector = segment.sector;\n            var seriesIndex = segment.seriesIx;\n            sector.radius = radius;\n            sector.center = center;\n\n            if (seriesConfigs.length) {\n                var seriesConfig = seriesConfigs[seriesIndex];\n                sector.innerRadius = seriesConfig.innerRadius;\n                sector.radius = seriesConfig.radius;\n            }\n\n            if (seriesIndex === seriesCount - 1 && segment.explode) {\n                sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n            }\n\n            segment.reflow(newBox);\n\n            var label = segment.label;\n            if (label) {\n                if (label.options.position === OUTSIDE_END) {\n                    if (seriesIndex === seriesCount - 1) {\n                        if (label.orientation === RIGHT) {\n                            rightSideLabels.push(label);\n                        } else {\n                            leftSideLabels.push(label);\n                        }\n                    }\n                }\n            }\n        }\n\n        if (leftSideLabels.length > 0) {\n            leftSideLabels.sort(this.labelComparator(true));\n            this.leftLabelsReflow(leftSideLabels);\n        }\n\n        if (rightSideLabels.length > 0) {\n            rightSideLabels.sort(this.labelComparator(false));\n            this.rightLabelsReflow(rightSideLabels);\n        }\n\n        this.box = newBox;\n    };\n\n    PieChart.prototype.leftLabelsReflow = function leftLabelsReflow (labels) {\n        var distances = this.distanceBetweenLabels(labels);\n\n        this.distributeLabels(distances, labels);\n    };\n\n    PieChart.prototype.rightLabelsReflow = function rightLabelsReflow (labels) {\n        var distances = this.distanceBetweenLabels(labels);\n\n        this.distributeLabels(distances, labels);\n    };\n\n    PieChart.prototype.distanceBetweenLabels = function distanceBetweenLabels (labels) {\n        var segment = last(this.points);\n        var sector = segment.sector;\n        var count = labels.length - 1;\n        var lr = sector.radius + segment.options.labels.distance;\n        var distances = [];\n        var firstBox = labels[0].box;\n        var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n        distances.push(distance);\n\n        for (var i = 0; i < count; i++) {\n            var secondBox = labels[i + 1].box;\n\n            firstBox = labels[i].box;\n            distance = round(secondBox.y1 - firstBox.y2);\n            distances.push(distance);\n        }\n        distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n        distances.push(distance);\n\n        return distances;\n    };\n\n    PieChart.prototype.distributeLabels = function distributeLabels (distances, labels) {\n        var this$1 = this;\n\n        var count = distances.length;\n        var left, right, remaining;\n\n        for (var i = 0; i < count; i++) {\n            remaining = -distances[i];\n            left = right = i;\n\n            while (remaining > 0 && (left >= 0 || right < count)) {\n                remaining = this$1._takeDistance(distances, i, --left, remaining);\n                remaining = this$1._takeDistance(distances, i, ++right, remaining);\n            }\n        }\n\n        this.reflowLabels(distances, labels);\n    };\n\n    PieChart.prototype._takeDistance = function _takeDistance (distances, anchor, position, amount) {\n        var result = amount;\n        if (distances[position] > 0) {\n            var available = Math.min(distances[position], result);\n            result -= available;\n            distances[position] -= available;\n            distances[anchor] += available;\n        }\n\n        return result;\n    };\n\n    PieChart.prototype.reflowLabels = function reflowLabels (distances, labels) {\n        var this$1 = this;\n\n        var segment = last(this.points);\n        var sector = segment.sector;\n        var labelOptions = segment.options.labels;\n        var labelsCount = labels.length;\n        var labelDistance = labelOptions.distance;\n        var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n        var boxX;\n\n        distances[0] += 2;\n        for (var i = 0; i < labelsCount; i++) {\n            var label = labels[i];\n            var box = label.box;\n\n            boxY += distances[i];\n            boxX = this$1.hAlignLabel(\n                box.x2,\n                sector.clone().expand(labelDistance),\n                boxY,\n                boxY + box.height(),\n                label.orientation === RIGHT);\n\n            if (label.orientation === RIGHT) {\n                if (labelOptions.align !== CIRCLE) {\n                    boxX = sector.radius + sector.center.x + labelDistance;\n                }\n                label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n            } else {\n                if (labelOptions.align !== CIRCLE) {\n                    boxX = sector.center.x - sector.radius - labelDistance;\n                }\n                label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n            }\n\n            boxY += box.height();\n        }\n    };\n\n    PieChart.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var ref = this;\n        var connectors = ref.options.connectors;\n        var points = ref.points;\n        var count = points.length;\n        var space = 4;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        this._connectorLines = [];\n\n        for (var i = 0; i < count; i++) {\n            var segment = points[i];\n            var sector = segment.sector;\n            var label = segment.label;\n            var angle = sector.middle();\n            var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n            if (label) {\n                var connectorLine = new draw.Path({\n                    stroke: {\n                        color: connectorsColor,\n                        width: connectors.width\n                    },\n                    animation: {\n                        type: FADEIN,\n                        delay: segment.animationDelay\n                    }\n                });\n\n                if (label.options.position === OUTSIDE_END) {\n                    var box = label.box;\n                    var centerPoint = sector.center;\n                    var start = sector.point(angle);\n                    var middle = new Point(box.x1, box.center().y);\n                    var sr = (void 0), end = (void 0), crossing = (void 0);\n\n                    start = sector.clone().expand(connectors.padding).point(angle);\n                    connectorLine.moveTo(start.x, start.y);\n                    // TODO: Extract into a method to remove duplication\n                    if (label.orientation === RIGHT) {\n                        end = new Point(box.x1 - connectors.padding, box.center().y);\n                        crossing = intersection(centerPoint, start, middle, end);\n                        middle = new Point(end.x - space, end.y);\n                        crossing = crossing || middle;\n                        crossing.x = Math.min(crossing.x, middle.x);\n\n                        if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n                            crossing.x < sector.center.x) {\n                            sr = sector.center.x + sector.radius + space;\n                            if (segment.options.labels.align !== COLUMN) {\n                                if (sr < middle.x) {\n                                    connectorLine.lineTo(sr, start.y);\n                                } else {\n                                    connectorLine.lineTo(start.x + space * 2, start.y);\n                                }\n                            } else {\n                                connectorLine.lineTo(sr, start.y);\n                            }\n                            connectorLine.lineTo(middle.x, end.y);\n                        } else {\n                            crossing.y = end.y;\n                            connectorLine.lineTo(crossing.x, crossing.y);\n                        }\n                    } else {\n                        end = new Point(box.x2 + connectors.padding, box.center().y);\n                        crossing = intersection(centerPoint, start, middle, end);\n                        middle = new Point(end.x + space, end.y);\n                        crossing = crossing || middle;\n                        crossing.x = Math.max(crossing.x, middle.x);\n\n                        if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n                            crossing.x > sector.center.x) {\n                            sr = sector.center.x - sector.radius - space;\n                            if (segment.options.labels.align !== COLUMN) {\n                                if (sr > middle.x) {\n                                    connectorLine.lineTo(sr, start.y);\n                                } else {\n                                    connectorLine.lineTo(start.x - space * 2, start.y);\n                                }\n                            } else {\n                                connectorLine.lineTo(sr, start.y);\n                            }\n                            connectorLine.lineTo(middle.x, end.y);\n                        } else {\n                            crossing.y = end.y;\n                            connectorLine.lineTo(crossing.x, crossing.y);\n                        }\n                    }\n\n                    connectorLine.lineTo(end.x, end.y);\n\n                    this$1._connectorLines.push(connectorLine);\n                    this$1.visual.append(connectorLine);\n                }\n            }\n        }\n    };\n\n    PieChart.prototype.renderVisual = function renderVisual () {\n        ChartElement.prototype.renderVisual.call(this);\n\n        if (find(this.options.series, function (options) { return options.autoFit; })) {\n            var targetBox = this.targetBox;\n            var pieCenter = this.box.center();\n            var bbox = this.visual.bbox();\n            if (!bbox) {\n                return;\n            }\n\n            var bboxBottom = bbox.bottomRight();\n\n            var scale = Math.min(\n                (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n                (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n                (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n                (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n            );\n\n            if (scale < 1) {\n                this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n            }\n        }\n    };\n\n    PieChart.prototype.labelComparator = function labelComparator (reverse) {\n        var reverseValue = reverse ? -1 : 1;\n\n        return function(a, b) {\n            var first = (a.parent.sector.middle() + 270) % 360;\n            var second = (b.parent.sector.middle() + 270) % 360;\n            return (first - second) * reverseValue;\n        };\n    };\n\n    PieChart.prototype.hAlignLabel = function hAlignLabel (originalX, sector, y1, y2, direction) {\n        var radius = sector.radius;\n        var sector_center = sector.center;\n        var cx = sector_center.x;\n        var cy = sector_center.y;\n        var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n        if (t > radius) {\n            return originalX;\n        }\n\n        return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n    };\n\n    PieChart.prototype.pointInCircle = function pointInCircle (point, center, radius) {\n        return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n    };\n\n    PieChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format, point.value);\n    };\n\n    PieChart.prototype.animationDelay = function animationDelay (categoryIndex) {\n        return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n    };\n\n    PieChart.prototype.stackRoot = function stackRoot () {\n        return this;\n    };\n\n    return PieChart;\n}(ChartElement));\n\nfunction intersection(a1, a2, b1, b2) {\n    var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n    var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n    var result;\n    if (ub !== 0) {\n        var ua = (uat / ub);\n\n        result = new Point(\n            a1.x + ua * (a2.x - a1.x),\n            a1.y + ua * (a2.y - a1.y)\n        );\n    }\n\n    return result;\n}\n\nsetDefaultOptions(PieChart, {\n    startAngle: 90,\n    connectors: {\n        width: 2,\n        color: \"#939393\",\n        padding: 8\n    },\n    inactiveItems: {\n        markers: {},\n        labels: {}\n    }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nvar PiePlotArea = (function (PlotAreaBase) {\n    function PiePlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) PiePlotArea.__proto__ = PlotAreaBase;\n    PiePlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    PiePlotArea.prototype.constructor = PiePlotArea;\n\n    PiePlotArea.prototype.render = function render () {\n        this.createPieChart(this.series);\n    };\n\n    PiePlotArea.prototype.createPieChart = function createPieChart (series) {\n        var firstSeries = series[0];\n        var pieChart = new PieChart(this, {\n            series: series,\n            padding: firstSeries.padding,\n            startAngle: firstSeries.startAngle,\n            connectors: firstSeries.connectors,\n            legend: this.options.legend\n        });\n\n        this.appendChart(pieChart);\n    };\n\n    PiePlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n        append(this.options.legend.items, chart.legendItems);\n    };\n\n    return PiePlotArea;\n}(PlotAreaBase));\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar DonutSegment = (function (PieSegment) {\n    function DonutSegment () {\n        PieSegment.apply(this, arguments);\n    }\n\n    if ( PieSegment ) DonutSegment.__proto__ = PieSegment;\n    DonutSegment.prototype = Object.create( PieSegment && PieSegment.prototype );\n    DonutSegment.prototype.constructor = DonutSegment;\n\n    DonutSegment.prototype.reflowLabel = function reflowLabel () {\n        var ref = this;\n        var labelsOptions = ref.options.labels;\n        var label = ref.label;\n        var sector = this.sector.clone();\n        var angle = sector.middle();\n\n        if (label) {\n            var labelHeight = label.box.height();\n            if (labelsOptions.position === CENTER) {\n                sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n                var lp = sector.point(angle);\n\n                label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n            } else {\n                PieSegment.prototype.reflowLabel.call(this);\n            }\n        }\n    };\n\n    DonutSegment.prototype.createSegment = function createSegment (sector, options) {\n        return ShapeBuilder.current.createRing(sector, options);\n    };\n\n    return DonutSegment;\n}(PieSegment));\n\nsetDefaultOptions(DonutSegment, {\n    overlay: {\n        gradient: \"roundedGlass\"\n    },\n    labels: {\n        position: CENTER\n    },\n    animation: {\n        type: PIE\n    }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar DONUT_SECTOR_ANIM_DELAY = 50;\n\nvar DonutChart = (function (PieChart) {\n    function DonutChart () {\n        PieChart.apply(this, arguments);\n    }\n\n    if ( PieChart ) DonutChart.__proto__ = PieChart;\n    DonutChart.prototype = Object.create( PieChart && PieChart.prototype );\n    DonutChart.prototype.constructor = DonutChart;\n\n    DonutChart.prototype.addValue = function addValue (value, sector, fields) {\n        var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n        this.evalSegmentOptions(segmentOptions, value, fields);\n\n        this.createLegendItem(value, segmentOptions, fields);\n\n        if (!value || fields.visible === false) {\n            return;\n        }\n\n        var segment = new DonutSegment(value, sector, segmentOptions);\n\n        Object.assign(segment, fields);\n        this.append(segment);\n        this.points.push(segment);\n    };\n\n    DonutChart.prototype.reflow = function reflow (targetBox) {\n        var this$1 = this;\n\n        var options = this.options;\n        var box = targetBox.clone();\n        var space = 5;\n        var minWidth = Math.min(box.width(), box.height());\n        var halfMinWidth = minWidth / 2;\n        var defaultPadding = minWidth - minWidth * 0.85;\n        var series = options.series;\n        var seriesCount = series.length;\n\n        var padding = valueOrDefault(options.padding, defaultPadding);\n        padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n        var totalSize = halfMinWidth - padding;\n        var seriesWithoutSize = 0;\n        var holeSize;\n\n        for (var i = 0; i < seriesCount; i++) {\n            var currentSeries = series[i];\n            if (i === 0) {\n                if (defined(currentSeries.holeSize)) {\n                    holeSize = currentSeries.holeSize;\n                    totalSize -= currentSeries.holeSize;\n                }\n            }\n\n            if (defined(currentSeries.size)) {\n                totalSize -= currentSeries.size;\n            } else {\n                seriesWithoutSize++;\n            }\n\n            if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n                totalSize -= currentSeries.margin;\n            }\n        }\n\n        if (!defined(holeSize)) {\n            var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n            holeSize = currentSize * 0.75;\n            totalSize -= holeSize;\n        }\n\n        var innerRadius = holeSize;\n        var margin = 0;\n        var size, radius;\n\n        this.seriesConfigs = [];\n\n        for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n            var currentSeries$1 = series[i$1];\n            size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n            innerRadius += margin;\n            radius = innerRadius + size;\n            this$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n            margin = currentSeries$1.margin || 0;\n            innerRadius = radius;\n        }\n\n        PieChart.prototype.reflow.call(this, targetBox);\n    };\n\n    DonutChart.prototype.animationDelay = function animationDelay (categoryIndex, seriesIndex, seriesCount) {\n        return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n            (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n    };\n\n    return DonutChart;\n}(PieChart));\n\n\nsetDefaultOptions(DonutChart, {\n    startAngle: 90,\n    connectors: {\n        width: 2,\n        color: \"#939393\",\n        padding: 8\n    }\n});\n\nexport default DonutChart;","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nvar DonutPlotArea = (function (PiePlotArea) {\n    function DonutPlotArea () {\n        PiePlotArea.apply(this, arguments);\n    }\n\n    if ( PiePlotArea ) DonutPlotArea.__proto__ = PiePlotArea;\n    DonutPlotArea.prototype = Object.create( PiePlotArea && PiePlotArea.prototype );\n    DonutPlotArea.prototype.constructor = DonutPlotArea;\n\n    DonutPlotArea.prototype.render = function render () {\n        this.createDonutChart(this.series);\n    };\n\n    DonutPlotArea.prototype.createDonutChart = function createDonutChart (series) {\n        var firstSeries = series[0];\n        var donutChart = new DonutChart(this, {\n            series: series,\n            padding: firstSeries.padding,\n            connectors: firstSeries.connectors,\n            legend: this.options.legend\n        });\n\n        this.appendChart(donutChart);\n    };\n\n    return DonutPlotArea;\n}(PiePlotArea));\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nvar DEFAULT_PADDING = 0.15;\n\nvar PolarPlotAreaBase = (function (PlotAreaBase) {\n    function PolarPlotAreaBase () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) PolarPlotAreaBase.__proto__ = PlotAreaBase;\n    PolarPlotAreaBase.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    PolarPlotAreaBase.prototype.constructor = PolarPlotAreaBase;\n\n    PolarPlotAreaBase.prototype.initFields = function initFields () {\n        this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n    };\n\n    PolarPlotAreaBase.prototype.render = function render () {\n        this.addToLegend(this.series);\n        this.createPolarAxis();\n        this.createCharts();\n        this.createValueAxis();\n    };\n\n    PolarPlotAreaBase.prototype.alignAxes = function alignAxes () {\n        var axis = this.valueAxis;\n        var range = axis.range();\n        var crossingValue = axis.options.reverse ? range.max : range.min;\n        var slot = axis.getSlot(crossingValue);\n        var center = this.polarAxis.getSlot(0).center;\n        var axisBox = axis.box.translate(\n            center.x - slot.x1,\n            center.y - slot.y1\n        );\n\n        axis.reflow(axisBox);\n    };\n\n    PolarPlotAreaBase.prototype.createValueAxis = function createValueAxis () {\n        var tracker = this.valueAxisRangeTracker;\n        var defaultRange = tracker.query();\n        var axisOptions = this.valueAxisOptions({\n            roundToMajorUnit: false,\n            zIndex: -1\n        });\n        var axisType, axisDefaultRange;\n\n        if (axisOptions.type === LOGARITHMIC) {\n            axisType = RadarLogarithmicAxis;\n            axisDefaultRange = { min: 0.1, max: 1 };\n        } else {\n            axisType = RadarNumericAxis;\n            axisDefaultRange = { min: 0, max: 1 };\n        }\n\n        var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n        if (range && defaultRange) {\n            range.min = Math.min(range.min, defaultRange.min);\n            range.max = Math.max(range.max, defaultRange.max);\n        }\n\n        var valueAxis = new axisType(\n            range.min, range.max,\n            axisOptions,\n            this.chartService\n        );\n\n        this.valueAxis = valueAxis;\n        this.appendAxis(valueAxis);\n    };\n\n    PolarPlotAreaBase.prototype.reflowAxes = function reflowAxes () {\n        var ref = this;\n        var options = ref.options.plotArea;\n        var valueAxis = ref.valueAxis;\n        var polarAxis = ref.polarAxis;\n        var box = ref.box;\n        var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n        var padding = getSpacing(options.padding || {}, defaultPadding);\n        var paddingBox = box.clone().unpad(padding);\n        var axisBox = paddingBox.clone();\n\n        axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n        axisBox.align(paddingBox, Y, CENTER);\n\n        var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n        polarAxis.reflow(axisBox);\n        valueAxis.reflow(valueAxisBox);\n        var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n        valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n        this.axisBox = axisBox;\n        this.alignAxes(axisBox);\n    };\n\n    PolarPlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n        return this.box;\n    };\n\n    PolarPlotAreaBase.prototype.detachLabels = function detachLabels () {};\n\n    return PolarPlotAreaBase;\n}(PlotAreaBase));\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarScatterChart = (function (ScatterChart) {\n    function PolarScatterChart () {\n        ScatterChart.apply(this, arguments);\n    }\n\n    if ( ScatterChart ) PolarScatterChart.__proto__ = ScatterChart;\n    PolarScatterChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n    PolarScatterChart.prototype.constructor = PolarScatterChart;\n\n    PolarScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n        var valueRadius = slotX.center.y - slotY.y1;\n        var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n        return new Box(slot.x, slot.y, slot.x, slot.y);\n    };\n\n    return PolarScatterChart;\n}(ScatterChart));\n\nsetDefaultOptions(PolarScatterChart, {\n    clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarLineChart = (function (ScatterLineChart) {\n    function PolarLineChart () {\n        ScatterLineChart.apply(this, arguments);\n    }if ( ScatterLineChart ) PolarLineChart.__proto__ = ScatterLineChart;\n    PolarLineChart.prototype = Object.create( ScatterLineChart && ScatterLineChart.prototype );\n    PolarLineChart.prototype.constructor = PolarLineChart;\n\n    \n\n    return PolarLineChart;\n}(ScatterLineChart));\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n    clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nvar SplinePolarAreaSegment = (function (SplineAreaSegment) {\n    function SplinePolarAreaSegment () {\n        SplineAreaSegment.apply(this, arguments);\n    }\n\n    if ( SplineAreaSegment ) SplinePolarAreaSegment.__proto__ = SplineAreaSegment;\n    SplinePolarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n    SplinePolarAreaSegment.prototype.constructor = SplinePolarAreaSegment;\n\n    SplinePolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var center = this._polarAxisCenter();\n        fillPath.lineTo(center.x, center.y);\n    };\n\n    SplinePolarAreaSegment.prototype._polarAxisCenter = function _polarAxisCenter () {\n        var polarAxis = this.parent.plotArea.polarAxis;\n        var center = polarAxis.box.center();\n        return center;\n    };\n\n    SplinePolarAreaSegment.prototype.strokeSegments = function strokeSegments () {\n        var segments = this._strokeSegments;\n\n        if (!segments) {\n            var center = this._polarAxisCenter();\n            var curveProcessor = new CurveProcessor(false);\n            var linePoints = this.points();\n\n            linePoints.push(center);\n            segments = this._strokeSegments = curveProcessor.process(linePoints);\n            segments.pop();\n        }\n\n        return segments;\n    };\n\n    return SplinePolarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar PolarAreaSegment = (function (AreaSegment) {\n    function PolarAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) PolarAreaSegment.__proto__ = AreaSegment;\n    PolarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    PolarAreaSegment.prototype.constructor = PolarAreaSegment;\n\n    PolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n        var polarAxis = this.parent.plotArea.polarAxis;\n        var center = polarAxis.box.center();\n        var centerSegment = new geom.Segment([ center.x, center.y ]);\n\n        fillPath.segments.unshift(centerSegment);\n        fillPath.segments.push(centerSegment);\n    };\n\n    return PolarAreaSegment;\n}(AreaSegment));\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nvar PolarAreaChart = (function (PolarLineChart) {\n    function PolarAreaChart () {\n        PolarLineChart.apply(this, arguments);\n    }\n\n    if ( PolarLineChart ) PolarAreaChart.__proto__ = PolarLineChart;\n    PolarAreaChart.prototype = Object.create( PolarLineChart && PolarLineChart.prototype );\n    PolarAreaChart.prototype.constructor = PolarAreaChart;\n\n    PolarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = (currentSeries.line || {}).style;\n        var segment;\n\n        if (style === SMOOTH) {\n            segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n        } else {\n            segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n        }\n        return segment;\n    };\n\n    PolarAreaChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n        var missingValue;\n\n        if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n            missingValue = {\n                x: value.x,\n                y: value.y\n            };\n            if (missingValues === ZERO) {\n                missingValue.y = 0;\n            }\n        }\n\n        return missingValue;\n    };\n\n    PolarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    PolarAreaChart.prototype._hasMissingValuesGap = function _hasMissingValuesGap () {\n        var this$1 = this;\n\n        var series = this.options.series;\n\n        for (var idx = 0; idx < series.length; idx++) {\n            if (this$1.seriesMissingValues(series[idx]) === GAP) {\n                return true;\n            }\n        }\n    };\n\n    PolarAreaChart.prototype.sortPoints = function sortPoints (points) {\n        var this$1 = this;\n\n        points.sort(xComparer);\n\n        if (this._hasMissingValuesGap()) {\n            for (var idx = 0; idx < points.length; idx++) {\n                var point = points[idx];\n                if (point) {\n                    var value = point.value;\n                    if (!hasValue(value.y) && this$1.seriesMissingValues(point.series) === GAP) {\n                        delete points[idx];\n                    }\n                }\n            }\n        }\n\n        return points;\n    };\n\n    return PolarAreaChart;\n}(PolarLineChart));\n\nfunction xComparer(a, b) {\n    return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\n\nvar PolarPlotArea = (function (PolarPlotAreaBase) {\n    function PolarPlotArea () {\n        PolarPlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PolarPlotAreaBase ) PolarPlotArea.__proto__ = PolarPlotAreaBase;\n    PolarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n    PolarPlotArea.prototype.constructor = PolarPlotArea;\n\n    PolarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n        var polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n        this.polarAxis = polarAxis;\n        this.axisX = polarAxis;\n        this.appendAxis(polarAxis);\n    };\n\n    PolarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n        return deepExtend(defaults, {\n            majorGridLines: { type: ARC },\n            minorGridLines: { type: ARC }\n        }, this.options.yAxis);\n    };\n\n    PolarPlotArea.prototype.createValueAxis = function createValueAxis () {\n        PolarPlotAreaBase.prototype.createValueAxis.call(this);\n        this.axisY = this.valueAxis;\n    };\n\n    PolarPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n    };\n\n    PolarPlotArea.prototype.createCharts = function createCharts () {\n        var series = this.filterVisibleSeries(this.series);\n        var pane = this.panes[0];\n\n        this.createLineChart(\n            filterSeriesByType(series, [ POLAR_LINE ]),\n            pane\n        );\n\n        this.createScatterChart(\n            filterSeriesByType(series, [ POLAR_SCATTER ]),\n            pane\n        );\n\n        this.createAreaChart(\n            filterSeriesByType(series, [ POLAR_AREA ]),\n            pane\n        );\n    };\n\n    PolarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var lineChart = new PolarLineChart(this, { series: series });\n\n        this.appendChart(lineChart, pane);\n    };\n\n    PolarPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var scatterChart = new PolarScatterChart(this, { series: series });\n\n        this.appendChart(scatterChart, pane);\n    };\n\n    PolarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var areaChart = new PolarAreaChart(this, { series: series });\n\n        this.appendChart(areaChart, pane);\n    };\n\n    PolarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var xValue = this.axisX.getValue(point);\n        var yValue = this.axisY.getValue(point);\n\n        if (xValue !== null && yValue !== null) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                x: xValue,\n                y: yValue\n            });\n        }\n    };\n\n    PolarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n    return PolarPlotArea;\n}(PolarPlotAreaBase));\n\nsetDefaultOptions(PolarPlotArea, {\n    xAxis: {},\n    yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default PolarPlotArea;","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n    var seriesSegments = [];\n    for (var idx = 0; idx < segments.length; idx++) {\n        var segment = segments[idx];\n        seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n        seriesSegments[segment.seriesIx].push(segment);\n    }\n\n    return seriesSegments;\n}\n\nvar RadarLineChart = (function (LineChart) {\n    function RadarLineChart () {\n        LineChart.apply(this, arguments);\n    }\n\n    if ( LineChart ) RadarLineChart.__proto__ = LineChart;\n    RadarLineChart.prototype = Object.create( LineChart && LineChart.prototype );\n    RadarLineChart.prototype.constructor = RadarLineChart;\n\n    RadarLineChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var valueRadius = categorySlot.center.y - valueSlot.y1;\n        var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n        return new Box(slot.x, slot.y, slot.x, slot.y);\n    };\n\n    RadarLineChart.prototype.renderSegments = function renderSegments () {\n        LineChart.prototype.renderSegments.call(this);\n\n        if (this._segments && this._segments.length > 1) {\n            var seriesSegments = groupBySeriesIx(this._segments);\n\n            for (var idx = 0; idx < seriesSegments.length; idx++) {\n                var segments = seriesSegments[idx];\n                if (segments.length > 1) {\n                    last(segments).linePoints.push(segments[0].linePoints[0]);\n                }\n            }\n        }\n    };\n\n    RadarLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n        var style = currentSeries.style;\n        var pointType;\n\n        if (style === SMOOTH) {\n            pointType = SplineSegment;\n        } else {\n            pointType = LineSegment;\n        }\n\n        var segment = new pointType(linePoints, currentSeries, seriesIx);\n\n        if (linePoints.length === currentSeries.data.length) {\n            segment.options.closed = true;\n        }\n\n        return segment;\n    };\n\n    return RadarLineChart;\n}(LineChart));\n\nsetDefaultOptions(RadarLineChart, {\n    clip: false,\n    limitPoints: false\n});\n\nexport default RadarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nvar SplineRadarAreaSegment = (function (SplineAreaSegment) {\n    function SplineRadarAreaSegment () {\n        SplineAreaSegment.apply(this, arguments);\n    }\n\n    if ( SplineAreaSegment ) SplineRadarAreaSegment.__proto__ = SplineAreaSegment;\n    SplineRadarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n    SplineRadarAreaSegment.prototype.constructor = SplineRadarAreaSegment;\n\n    SplineRadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n    return SplineRadarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nvar RadarAreaSegment = (function (AreaSegment) {\n    function RadarAreaSegment () {\n        AreaSegment.apply(this, arguments);\n    }\n\n    if ( AreaSegment ) RadarAreaSegment.__proto__ = AreaSegment;\n    RadarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n    RadarAreaSegment.prototype.constructor = RadarAreaSegment;\n\n    RadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n    return RadarAreaSegment;\n}(AreaSegment));\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nvar RadarAreaChart = (function (RadarLineChart) {\n    function RadarAreaChart () {\n        RadarLineChart.apply(this, arguments);\n    }\n\n    if ( RadarLineChart ) RadarAreaChart.__proto__ = RadarLineChart;\n    RadarAreaChart.prototype = Object.create( RadarLineChart && RadarLineChart.prototype );\n    RadarAreaChart.prototype.constructor = RadarAreaChart;\n\n    RadarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n        var isStacked = this.options.isStacked;\n        var style = (currentSeries.line || {}).style;\n        var previousSegment;\n        var stackPoints;\n        var segment;\n\n        if (isStacked && seriesIx > 0 && prevSegment) {\n            stackPoints = prevSegment.linePoints.slice(0);\n            previousSegment = prevSegment;\n        }\n\n        if (style === SMOOTH) {\n            segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n            segment.options.closed = true;\n        } else {\n            linePoints.push(linePoints[0]);\n            segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n        }\n\n        return segment;\n    };\n\n    RadarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n        return series.missingValues || ZERO;\n    };\n\n    return RadarAreaChart;\n}(RadarLineChart));\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarSegment = (function (DonutSegment) {\n    function RadarSegment(value, options) {\n        DonutSegment.call(this, value, null, options);\n    }\n\n    if ( DonutSegment ) RadarSegment.__proto__ = DonutSegment;\n    RadarSegment.prototype = Object.create( DonutSegment && DonutSegment.prototype );\n    RadarSegment.prototype.constructor = RadarSegment;\n\n    return RadarSegment;\n}(DonutSegment));\n\nsetDefaultOptions(RadarSegment, {\n    overlay: {\n        gradient: \"none\"\n    },\n    labels: {\n        distance: 10\n    }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nvar RadarClusterLayout = (function (ChartElement) {\n    function RadarClusterLayout(options) {\n        ChartElement.call(this, options);\n\n        this.forEach = options.rtl ? forEachReverse : forEach;\n    }\n\n    if ( ChartElement ) RadarClusterLayout.__proto__ = ChartElement;\n    RadarClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RadarClusterLayout.prototype.constructor = RadarClusterLayout;\n\n    RadarClusterLayout.prototype.reflow = function reflow (sector) {\n        var ref = this;\n        var options = ref.options;\n        var children = ref.children;\n        var gap = options.gap;\n        var spacing = options.spacing;\n        var count = children.length;\n        var slots = count + gap + (spacing * (count - 1));\n        var slotAngle = sector.angle / slots;\n        var angle = sector.startAngle + slotAngle * (gap / 2);\n\n        this.forEach(children, function (child) {\n            var slotSector = sector.clone();\n            slotSector.startAngle = angle;\n            slotSector.angle = slotAngle;\n\n            if (child.sector) {\n                slotSector.radius = child.sector.radius;\n            }\n\n            child.reflow(slotSector);\n            child.sector = slotSector;\n\n            angle += slotAngle + (slotAngle * spacing);\n        });\n    };\n\n    return RadarClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(RadarClusterLayout, {\n    gap: 1,\n    spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nvar RadarStackLayout = (function (ChartElement) {\n    function RadarStackLayout () {\n        ChartElement.apply(this, arguments);\n    }\n\n    if ( ChartElement ) RadarStackLayout.__proto__ = ChartElement;\n    RadarStackLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n    RadarStackLayout.prototype.constructor = RadarStackLayout;\n\n    RadarStackLayout.prototype.reflow = function reflow (sector) {\n        var ref = this;\n        var reverse = ref.options.reverse;\n        var children = ref.children;\n        var childrenCount = children.length;\n        var first = reverse ? childrenCount - 1 : 0;\n        var step = reverse ? -1 : 1;\n\n        this.box = new Box();\n\n        for (var i = first; i >= 0 && i < childrenCount; i += step) {\n            var childSector = children[i].sector;\n            childSector.startAngle = sector.startAngle;\n            childSector.angle = sector.angle;\n        }\n    };\n\n    return RadarStackLayout;\n}(ChartElement));\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarBarChart = (function (BarChart) {\n    function RadarBarChart () {\n        BarChart.apply(this, arguments);\n    }\n\n    if ( BarChart ) RadarBarChart.__proto__ = BarChart;\n    RadarBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n    RadarBarChart.prototype.constructor = RadarBarChart;\n\n    RadarBarChart.prototype.pointType = function pointType () {\n        return RadarSegment;\n    };\n\n    RadarBarChart.prototype.clusterType = function clusterType () {\n        return RadarClusterLayout;\n    };\n\n    RadarBarChart.prototype.stackType = function stackType () {\n        return RadarStackLayout;\n    };\n\n    RadarBarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n        return categoryAxis.getSlot(categoryIx);\n    };\n\n    RadarBarChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n        var slot = categorySlot.clone();\n        var y = categorySlot.center.y;\n\n        slot.radius = y - valueSlot.y1;\n        slot.innerRadius = y - valueSlot.y2;\n\n        return slot;\n    };\n\n    RadarBarChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n        point.sector = pointSlot;\n        point.reflow();\n    };\n\n    RadarBarChart.prototype.createAnimation = function createAnimation () {\n        this.options.animation.center = this.box.toRect().center();\n        BarChart.prototype.createAnimation.call(this);\n    };\n\n    return RadarBarChart;\n}(BarChart));\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n    clip: false,\n    limitPoints: false,\n    animation: {\n        type: \"pie\"\n    }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nvar RadarPlotArea = (function (PolarPlotAreaBase) {\n    function RadarPlotArea () {\n        PolarPlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PolarPlotAreaBase ) RadarPlotArea.__proto__ = PolarPlotAreaBase;\n    RadarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n    RadarPlotArea.prototype.constructor = RadarPlotArea;\n\n    RadarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n        var categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n        this.polarAxis = categoryAxis;\n        this.categoryAxis = categoryAxis;\n        this.appendAxis(categoryAxis);\n        this.aggregateCategories();\n        this.createCategoryAxesLabels();\n    };\n\n    RadarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n        if (this._hasBarCharts) {\n            deepExtend(defaults, {\n                majorGridLines: { type: ARC },\n                minorGridLines: { type: ARC }\n            });\n        }\n\n        if (this._isStacked100) {\n            deepExtend(defaults, {\n                roundToMajorUnit: false,\n                labels: { format: \"P0\" }\n            });\n        }\n\n        return deepExtend(defaults, this.options.valueAxis);\n    };\n\n    RadarPlotArea.prototype.aggregateCategories = function aggregateCategories () {\n        // No separate panes in radar charts\n        CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n    };\n\n    RadarPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n        CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n    };\n\n    RadarPlotArea.prototype.filterSeries = function filterSeries (currentSeries) {\n        // Not supported for radar charts\n        return currentSeries;\n    };\n\n    RadarPlotArea.prototype.createCharts = function createCharts () {\n        var series = this.filterVisibleSeries(this.series);\n        var pane = this.panes[0];\n\n        this.createAreaChart(\n            filterSeriesByType(series, [ RADAR_AREA ]),\n            pane\n        );\n\n        this.createLineChart(\n            filterSeriesByType(series, [ RADAR_LINE ]),\n            pane\n        );\n\n        this.createBarChart(\n            filterSeriesByType(series, [ RADAR_COLUMN ]),\n            pane\n        );\n    };\n\n    RadarPlotArea.prototype.chartOptions = function chartOptions (series) {\n        var options = { series: series };\n        var firstSeries = series[0];\n        if (firstSeries) {\n            var filteredSeries = this.filterVisibleSeries(series);\n            var stack = firstSeries.stack;\n            options.isStacked = stack && filteredSeries.length > 1;\n            options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n            if (options.isStacked100) {\n                this._isStacked100 = true;\n            }\n        }\n\n        return options;\n    };\n\n    RadarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n        this.appendChart(areaChart, pane);\n    };\n\n    RadarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var lineChart = new RadarLineChart(this, this.chartOptions(series));\n        this.appendChart(lineChart, pane);\n    };\n\n    RadarPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n        if (series.length === 0) {\n            return;\n        }\n\n        var firstSeries = series[0];\n        var options = this.chartOptions(series);\n        options.gap = firstSeries.gap;\n        options.spacing = firstSeries.spacing;\n\n        var barChart = new RadarBarChart(this, options);\n        this.appendChart(barChart, pane);\n\n        this._hasBarCharts = true;\n    };\n\n    RadarPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis () {\n        return this.categoryAxis;\n    };\n\n    RadarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n        var coords = chart._eventCoordinates(e);\n        var point = new Point(coords.x, coords.y);\n        var category = this.categoryAxis.getCategory(point);\n        var value = this.valueAxis.getValue(point);\n\n        if (category !== null && value !== null) {\n            chart.trigger(eventType, {\n                element: eventElement(e),\n                category: category,\n                value: value\n            });\n        }\n    };\n\n    RadarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n    return RadarPlotArea;\n}(PolarPlotAreaBase));\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n    appendChart: CategoricalPlotArea.prototype.appendChart,\n    aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n    seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n});\n\nsetDefaultOptions(RadarPlotArea, {\n    categoryAxis: {\n        categories: []\n    },\n    valueAxis: {}\n});\n\nexport default RadarPlotArea;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar FunnelSegment = (function (ChartElement) {\n    function FunnelSegment(value, options, segmentOptions) {\n        ChartElement.call(this, options);\n\n        this.value = value;\n        this.options.index = segmentOptions.index;\n    }\n\n    if ( ChartElement ) FunnelSegment.__proto__ = ChartElement;\n    FunnelSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FunnelSegment.prototype.constructor = FunnelSegment;\n\n    FunnelSegment.prototype.reflow = function reflow (chartBox) {\n        var points = this.points;\n        var label = this.children[0];\n\n        this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n        if (label) {\n            label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n        }\n    };\n\n    FunnelSegment.prototype.createVisual = function createVisual () {\n        var this$1 = this;\n\n        var options = this.options;\n        var visual;\n\n        ChartElement.prototype.createVisual.call(this);\n\n        if (options.visual) {\n            visual = options.visual({\n                category: this.category,\n                dataItem: this.dataItem,\n                value: this.value,\n                series: this.series,\n                percentage: this.percentage,\n                points: this.points,\n                options: options,\n                sender: this.getSender(),\n                createVisual: function () { return this$1.createPath(); }\n            });\n        } else {\n            visual = this.createPath();\n        }\n\n        if (visual) {\n            this.visual.append(visual);\n        }\n    };\n\n    FunnelSegment.prototype.createPath = function createPath () {\n        var options = this.options;\n        var border = options.border;\n        var path = draw.Path.fromPoints(this.points, {\n            fill: {\n                color: options.color,\n                opacity: options.opacity\n            },\n            stroke: {\n                color: border.color,\n                opacity: border.opacity,\n                width: border.width\n            }\n        }).close();\n\n        return path;\n    };\n\n    FunnelSegment.prototype.createHighlight = function createHighlight (style) {\n        return draw.Path.fromPoints(this.points, style);\n    };\n\n    FunnelSegment.prototype.highlightVisual = function highlightVisual () {\n        return this.visual.children[0];\n    };\n\n    FunnelSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n        var path = draw.Path.fromPoints(this.points).close();\n\n        return {\n            options: this.options,\n            path: path\n        };\n    };\n\n    FunnelSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n        var box = this.box;\n        return {\n            point: new Point(box.center().x, box.y1),\n            align: {\n                horizontal: \"center\",\n                vertical: \"top\"\n            }\n        };\n    };\n\n    FunnelSegment.prototype.formatValue = function formatValue (format) {\n        var point = this;\n        return point.owner.formatPointValue(point, format);\n    };\n\n    return FunnelSegment;\n}(ChartElement));\n\nsetDefaultOptions(FunnelSegment, {\n    color: WHITE,\n    border: {\n        width: 1\n    }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { BLACK, WHITE, CENTER, LEFT } from '../../common/constants';\nimport { deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nvar FunnelChart = (function (ChartElement) {\n    function FunnelChart(plotArea, options) {\n        ChartElement.call(this, options);\n\n        this.plotArea = plotArea;\n        this.points = [];\n        this.labels = [];\n        this.legendItems = [];\n        this.render();\n    }\n\n    if ( ChartElement ) FunnelChart.__proto__ = ChartElement;\n    FunnelChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n    FunnelChart.prototype.constructor = FunnelChart;\n\n    FunnelChart.prototype.formatPointValue = function formatPointValue (point, format) {\n        return this.chartService.format.auto(format,point.value);\n    };\n\n    FunnelChart.prototype.render = function render () {\n        var this$1 = this;\n\n        var ref = this;\n        var options = ref.options;\n        var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n        var series = options.series[0];\n        var data = series.data;\n\n        if (!data) {\n            return;\n        }\n\n        var ref$1 = bindSegments(series);\n        var total = ref$1.total;\n        var points = ref$1.points;\n\n        for (var i = 0; i < points.length; i++) {\n            var pointData = points[i];\n\n            if (!pointData) {\n                continue;\n            }\n\n            var fields = pointData.fields;\n\n            if (!isFunction(series.color)) {\n                series.color = fields.color || seriesColors[i % seriesColors.length];\n            }\n\n            fields = deepExtend({\n                index: i,\n                owner: this$1,\n                series: series,\n                dataItem: data[i],\n                percentage: pointData.value / total\n            }, fields, { visible: pointData.visible });\n\n            var value = pointData.valueFields.value;\n            var segment = this$1.createSegment(value, fields);\n            var label = this$1.createLabel(value, fields);\n\n            if (segment && label) {\n                segment.append(label);\n            }\n        }\n    };\n\n    FunnelChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n        var series = fields.series;\n\n        evalOptions(options, {\n            value: value,\n            series: series,\n            dataItem: fields.dataItem,\n            index: fields.index\n        }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n    };\n\n    FunnelChart.prototype.createSegment = function createSegment (value, fields) {\n        var seriesOptions = deepExtend({}, fields.series);\n        this.evalSegmentOptions(seriesOptions, value, fields);\n\n        this.createLegendItem(value, seriesOptions, fields);\n\n        if (fields.visible !== false) {\n\n            var segment = new FunnelSegment(value, seriesOptions, fields);\n            Object.assign(segment, fields);\n\n            this.append(segment);\n            this.points.push(segment);\n\n            return segment;\n        }\n    };\n\n    FunnelChart.prototype.createLabel = function createLabel (value, fields) {\n        var series = fields.series;\n        var dataItem = fields.dataItem;\n        var labels = deepExtend({}, this.options.labels, series.labels);\n        var text = value;\n\n        if (labels.visible) {\n            var labelTemplate = getTemplate(labels);\n            var data = {\n                dataItem: dataItem,\n                value: value,\n                percentage: fields.percentage,\n                category: fields.category,\n                series: series\n            };\n            if (labelTemplate) {\n                text = labelTemplate(data);\n            } else if (labels.format) {\n                text = this.plotArea.chartService.format.auto(labels.format, text);\n            }\n\n            if (!labels.color) {\n                var brightnessValue = new Color(series.color).percBrightness();\n                if (brightnessValue > 180) {\n                    labels.color = BLACK;\n                } else {\n                    labels.color = WHITE;\n                }\n                if (!labels.background) {\n                    labels.background = series.color;\n                }\n            }\n\n            this.evalSegmentOptions(labels, value, fields);\n            var textBox = new TextBox(text, deepExtend({\n                vAlign: labels.position\n            }, labels), data);\n\n            this.labels.push(textBox);\n\n            return textBox;\n        }\n    };\n\n    FunnelChart.prototype.labelPadding = function labelPadding () {\n        var labels = this.labels;\n        var padding = { left: 0, right: 0 };\n\n        for (var i = 0; i < labels.length; i++) {\n            var label = labels[i];\n            var align = label.options.align;\n            if (align !== CENTER) {\n                var width = labels[i].box.width();\n\n                if (align === LEFT) {\n                    padding.left = Math.max(padding.left, width);\n                } else {\n                    padding.right = Math.max(padding.right, width);\n                }\n            }\n        }\n\n        return padding;\n    };\n\n    FunnelChart.prototype.dynamicSlopeReflow = function dynamicSlopeReflow (box, width, totalHeight) {\n        var ref = this;\n        var options = ref.options;\n        var segments = ref.points;\n        var count = segments.length;\n        var firstSegment = segments[0];\n        var maxSegment = firstSegment;\n\n        for (var idx = 0; idx < segments.length; idx++) {\n            if (segments[idx].percentage > maxSegment.percentage) {\n                maxSegment = segments[idx];\n            }\n        }\n\n        var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n        var previousOffset = (width - lastUpperSide) / 2;\n        var previousHeight = 0;\n\n        for (var idx$1 = 0; idx$1 < count; idx$1++) {\n            var percentage = segments[idx$1].percentage;\n            var nextSegment = segments[idx$1 + 1];\n            var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n            var points = segments[idx$1].points = [];\n            var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n            var offset = (void 0);\n\n            if (!percentage) {\n                offset = nextPercentage ? 0 : width / 2;\n            } else {\n                offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n            }\n\n            offset = limitValue(offset, 0, width);\n\n            points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n            points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n            previousOffset = offset;\n            previousHeight += height + options.segmentSpacing;\n            lastUpperSide = limitValue(width - 2 * offset, 0, width);\n        }\n    };\n\n    FunnelChart.prototype.constantSlopeReflow = function constantSlopeReflow (box, width, totalHeight) {\n        var ref = this;\n        var options = ref.options;\n        var segments = ref.points;\n        var count = segments.length;\n        var decreasingWidth = options.neckRatio <= 1;\n        var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n        var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n        var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n        var finalNarrow = (topMostWidth - neckRatio) / 2;\n        var previousHeight = 0;\n\n        for (var idx = 0; idx < count; idx++) {\n            var points = segments[idx].points = [];\n            var percentage = segments[idx].percentage;\n            var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n            var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n            points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n            points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n            points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n            previousOffset += offset;\n            previousHeight += height + options.segmentSpacing;\n        }\n    };\n\n    FunnelChart.prototype.reflow = function reflow (chartBox) {\n        var points = this.points;\n        var count = points.length;\n\n        if (!count) {\n            return;\n        }\n\n        var options = this.options;\n        var box = chartBox.clone().unpad(this.labelPadding());\n        var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n        var width = box.width();\n\n        if (options.dynamicSlope) {\n            this.dynamicSlopeReflow(box, width, totalHeight);\n        } else {\n            this.constantSlopeReflow(box, width, totalHeight);\n        }\n\n        for (var idx = 0; idx < count; idx++) {\n            points[idx].reflow(chartBox);\n        }\n    };\n\n    return FunnelChart;\n}(ChartElement));\n\nsetDefaultOptions(FunnelChart, {\n    neckRatio: 0.3,\n    width: 300,\n    dynamicSlope: false,\n    dynamicHeight: true,\n    segmentSpacing: 0,\n    labels: {\n        visible: false,\n        align: CENTER,\n        position: CENTER,\n        zIndex: 1\n    }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\n\nimport { append } from '../../common';\n\nvar FunnelPlotArea = (function (PlotAreaBase) {\n    function FunnelPlotArea () {\n        PlotAreaBase.apply(this, arguments);\n    }\n\n    if ( PlotAreaBase ) FunnelPlotArea.__proto__ = PlotAreaBase;\n    FunnelPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n    FunnelPlotArea.prototype.constructor = FunnelPlotArea;\n\n    FunnelPlotArea.prototype.render = function render () {\n        this.createFunnelChart(this.series);\n    };\n\n    FunnelPlotArea.prototype.createFunnelChart = function createFunnelChart (series) {\n        var firstSeries = series[0];\n        var funnelChart = new FunnelChart(this, {\n            series: series,\n            legend: this.options.legend,\n            neckRatio: firstSeries.neckRatio,\n            dynamicHeight: firstSeries.dynamicHeight,\n            dynamicSlope: firstSeries.dynamicSlope,\n            segmentSpacing: firstSeries.segmentSpacing,\n            highlight: firstSeries.highlight\n        });\n\n        this.appendChart(funnelChart);\n    };\n\n    FunnelPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n        PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n        append(this.options.legend.items, chart.legendItems);\n    };\n\n    return FunnelPlotArea;\n}(PlotAreaBase));\n\nexport default FunnelPlotArea;","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n    RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n    POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n    RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n    ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nvar COLOR = \"color\";\nvar FIRST = \"first\";\nvar FROM = \"from\";\nvar MAX = \"max\";\nvar MIN = \"min\";\nvar NOTE_TEXT = \"noteText\";\nvar SUMMARY_FIELD = \"summary\";\nvar TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n    BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n    CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n    RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n    SCATTER, SCATTER_LINE, BUBBLE\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\nPlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\nSeriesBinder.current.register(\n    [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n    [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n    [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n    [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n    [ WATERFALL, HORIZONTAL_WATERFALL ],\n    [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR ]);\n\nSeriesBinder.current.register(\n    [ FUNNEL ],\n    [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\" ]\n);\n\nDefaultAggregates.current.register(\n    [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n    { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n    [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n    { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n    [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n    { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ SCATTER, SCATTER_LINE, BUBBLE ],\n    [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n    [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n    [ CANDLESTICK, OHLC ],\n    [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n    [ CANDLESTICK, OHLC ],\n    { open: MAX, high: MAX, low: MIN, close: MAX,\n      color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n    [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n    [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n    { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n      color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ BULLET, VERTICAL_BULLET ],\n    [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n    [ BULLET, VERTICAL_BULLET ],\n    { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n    [ PIE, DONUT ],\n    [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\" ]\n);","import { drawing as draw, throttle } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n    elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round, HashMap } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n    RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, SHOW_TOOLTIP, SERIES_HOVER } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nvar AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nvar MOUSEMOVE = \"mousemove\";\nvar CONTEXTMENU = \"contextmenu\";\nvar MOUSELEAVE = \"mouseleave\";\nvar MOUSEMOVE_DELAY = 20;\n\nvar Chart = (function (Class) {\n    function Chart(element, userOptions, themeOptions, context) {\n        var this$1 = this;\n        if ( context === void 0 ) context = {};\n\n        Class.call(this);\n\n        this.observers = [];\n        this.addObserver(context.observer);\n        this.chartService = new ChartService(this, context);\n        this.chartService.theme = themeOptions;\n\n        this._initElement(element);\n\n        var options = deepExtend({}, this.options, userOptions);\n        this._originalOptions = deepExtend({}, options);\n        this._theme = themeOptions;\n        this._initTheme(options, themeOptions);\n\n        this._initHandlers();\n        this._initSurface();\n\n        this.bindCategories();\n        FontLoader.preloadFonts(userOptions, function () {\n            this$1.fontLoaded = true;\n            if (!this$1._destroyed) {\n                this$1.trigger('init');\n                this$1._redraw();\n                this$1._attachEvents();\n            }\n        });\n    }\n\n    if ( Class ) Chart.__proto__ = Class;\n    Chart.prototype = Object.create( Class && Class.prototype );\n    Chart.prototype.constructor = Chart;\n\n    Chart.prototype._initElement = function _initElement (element) {\n        this._setElementClass(element);\n        element.style.position = \"relative\";\n        while (element.firstChild) {\n            element.removeChild(element.firstChild);\n        }\n        this.element = element;\n    };\n\n    Chart.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, \"k-chart\");\n    };\n\n    Chart.prototype._initTheme = function _initTheme (options, themeOptions) {\n        var seriesCopies = [];\n        var series = options.series || [];\n\n        for (var i = 0; i < series.length; i++) {\n            seriesCopies.push(Object.assign({}, series[i]));\n        }\n        options.series = seriesCopies;\n\n        resolveAxisAliases(options);\n        this.applyDefaults(options, themeOptions);\n\n        // Clean up default if not overriden by data attributes\n        if (options.seriesColors === null) {\n            delete options.seriesColors;\n        }\n\n        this.options = deepExtend({}, themeOptions, options);\n        this.applySeriesColors();\n    };\n\n    Chart.prototype.getSize = function getSize () {\n        var chartArea = this.options.chartArea || {};\n        var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n        var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n        return {\n            width: width,\n            height: height\n        };\n    };\n\n    Chart.prototype.resize = function resize (force) {\n        var size = this.getSize();\n        var currentSize = this._size;\n        var hasSize = size.width > 0 || size.height > 0;\n\n        if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n            this._size = size;\n            this._resize(size, force);\n            this.trigger(\"resize\", size);\n        } else if (hasSize && this._selections && find(this._selections, function (s) { return !s.visible; })) {\n            this._destroySelections();\n            this._setupSelection();\n        }\n    };\n\n    Chart.prototype._resize = function _resize () {\n        this._noTransitionsRedraw();\n    };\n\n    Chart.prototype.redraw = function redraw (paneName) {\n        this.applyDefaults(this.options);\n        this.applySeriesColors();\n\n        if (paneName) {\n            var plotArea = this._model._plotArea;\n            var pane = plotArea.findPane(paneName);\n            plotArea.redraw(pane);\n        } else {\n            this._redraw();\n        }\n    };\n\n    Chart.prototype.getAxis = function getAxis (name) {\n        return findAxisByName(name, this._plotArea.axes);\n    };\n\n    Chart.prototype.findAxisByName = function findAxisByName (name) {\n        return this.getAxis(name);\n    };\n\n    Chart.prototype.findPaneByName = function findPaneByName (name) {\n        var panes = this._plotArea.panes;\n\n        for (var idx = 0; idx < panes.length; idx++) {\n            if (panes[idx].options.name === name) {\n                return new ChartPane(panes[idx]);\n            }\n        }\n    };\n\n    Chart.prototype.findPaneByIndex = function findPaneByIndex (idx) {\n        var panes = this._plotArea.panes;\n        if (panes[idx]) {\n            return new ChartPane(panes[idx]);\n        }\n    };\n\n    Chart.prototype.plotArea = function plotArea () {\n        return new ChartPlotArea(this._plotArea);\n    };\n\n    Chart.prototype.toggleHighlight = function toggleHighlight (show, filter) {\n        var plotArea = this._plotArea;\n        var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n        var points;\n\n        if (isFunction(filter)) {\n            points = plotArea.filterPoints(filter);\n        } else {\n            var seriesName, categoryName;\n            if (isObject(filter)) {\n                seriesName = filter.series;\n                categoryName = filter.category;\n            } else {\n                seriesName = categoryName = filter;\n            }\n\n            if (firstSeries.type === DONUT) {\n                points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n            } else if (firstSeries.type === PIE || firstSeries.type === FUNNEL) {\n                points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n            } else {\n                points = plotArea.pointsBySeriesName(seriesName);\n            }\n        }\n\n        if (points) {\n            this.togglePointsHighlight(show, points);\n        }\n    };\n\n    Chart.prototype.togglePointsHighlight = function togglePointsHighlight (show, points) {\n        var highlight = this._highlight;\n        for (var idx = 0; idx < points.length; idx++) {\n            highlight.togglePointHighlight(points[idx], show);\n        }\n    };\n\n    Chart.prototype.showTooltip = function showTooltip (filter) {\n        var shared = this._sharedTooltip();\n        var ref = this;\n        var tooltip = ref._tooltip;\n        var plotArea = ref._plotArea;\n        var point, categoryIndex;\n\n        if (isFunction(filter)) {\n            point = plotArea.findPoint(filter);\n            if (point && shared) {\n                categoryIndex = point.categoryIx;\n            }\n        } else if (shared && defined(filter)) {\n            categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n        }\n\n        if (shared) {\n            if (categoryIndex >= 0) {\n                var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n                tooltip.showAt(points);\n            }\n        } else if (point) {\n            tooltip.show(point);\n        }\n    };\n\n    Chart.prototype.hideTooltip = function hideTooltip () {\n        this._tooltip.hide();\n    };\n\n    Chart.prototype._initSurface = function _initSurface () {\n        var surface = this.surface;\n        var wrap = this._surfaceWrap();\n\n        var chartArea = this.options.chartArea || {};\n        if (chartArea.width) {\n            elementSize(wrap, { width: chartArea.width });\n        }\n        if (chartArea.height) {\n            elementSize(wrap, { height: chartArea.height });\n        }\n\n        if (!surface || surface.options.type !== this.options.renderAs) {\n            this._destroySurface();\n\n            this.surface = draw.Surface.create(wrap, {\n                type: this.options.renderAs\n            });\n\n            this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n            this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n        } else {\n            this.surface.clear();\n            this.surface.resize();\n        }\n    };\n\n    Chart.prototype._surfaceWrap = function _surfaceWrap () {\n        return this.element;\n    };\n\n    Chart.prototype._redraw = function _redraw () {\n        var model = this._getModel();\n        this._size = {\n            width: model.options.width,\n            height: model.options.height\n        };\n\n        this._destroyView();\n\n        this._model = model;\n        this._plotArea = model._plotArea;\n\n        model.renderVisual();\n\n        if (this.options.transitions !== false) {\n            model.traverse(function(element) {\n                if (element.animation) {\n                    element.animation.setup();\n                }\n            });\n        }\n\n        this._initSurface();\n        this.surface.draw(model.visual);\n\n        if (this.options.transitions !== false) {\n            model.traverse(function(element) {\n                if (element.animation) {\n                    element.animation.play();\n                }\n            });\n        }\n\n        this._tooltip = this._createTooltip();\n        this._highlight = new Highlight();\n        this._setupSelection();\n        this._createPannable();\n        this._createZoomSelection();\n        this._createMousewheelZoom();\n\n        this.trigger(RENDER);\n        triggerPaneRender(this._plotArea.panes);\n\n        if (!this._navState) {\n            this._cancelDomEvents();\n        }\n    };\n\n    Chart.prototype.exportVisual = function exportVisual (exportOptions) {\n        var visual;\n        if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n            var currentOptions = this.options;\n            var options = deepExtend({}, exportOptions.options, {\n                chartArea: {\n                    width: exportOptions.width,\n                    height: exportOptions.height\n                }\n            });\n\n            clearMissingValues(this._originalOptions, options);\n            this.options = deepExtend({}, this._originalOptions, options);\n            this._initTheme(this.options, this._theme);\n            this.bindCategories();\n\n            var model = this._getModel();\n\n            model.renderVisual();\n            triggerPaneRender(model._plotArea.panes);\n\n            visual = model.visual;\n\n            this.options = currentOptions;\n        } else {\n            visual = this.surface.exportVisual();\n        }\n\n        return visual;\n    };\n\n    Chart.prototype._sharedTooltip = function _sharedTooltip () {\n        return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n    };\n\n    Chart.prototype._createPannable = function _createPannable () {\n        var options = this.options;\n        if (options.pannable !== false) {\n            this._pannable = new Pannable(this._plotArea, options.pannable);\n        }\n    };\n\n    Chart.prototype._createZoomSelection = function _createZoomSelection () {\n        var zoomable = this.options.zoomable;\n        var selection = (zoomable || {}).selection;\n        if (zoomable !== false && selection !== false) {\n            this._zoomSelection = new ZoomSelection(this, selection);\n        }\n    };\n\n    Chart.prototype._createMousewheelZoom = function _createMousewheelZoom () {\n        var zoomable = this.options.zoomable;\n        var mousewheel = (zoomable || {}).mousewheel;\n        if (zoomable !== false && mousewheel !== false) {\n            this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n        }\n    };\n\n    Chart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n        var pannable = this.options.pannable;\n        var zoomable = this.options.zoomable;\n        var selection = (zoomable || {}).selection;\n        var mousewheel = (zoomable || {}).mousewheel;\n        var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n        var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n        var element = this.element;\n\n        if (this._dragZoomEnabled && allowDrag && allowZoom) {\n            element.style.touchAction = this._touchAction || '';\n            this._dragZoomEnabled = false;\n        } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n            element.style.touchAction = \"none\";\n\n            this._dragZoomEnabled = true;\n        }\n\n        this._toggleDomEvents(!allowDrag, !allowZoom);\n    };\n\n    Chart.prototype._toggleDomEvents = function _toggleDomEvents (drag, zoom) {\n        var domEvents = this.domEvents;\n        if (!domEvents) {\n            return;\n        }\n\n        if (domEvents.toggleDrag) {\n            domEvents.toggleDrag(drag);\n        }\n\n        if (domEvents.toggleZoom) {\n            domEvents.toggleZoom(zoom);\n        }\n    };\n\n    Chart.prototype._createTooltip = function _createTooltip () {\n        var ref = this;\n        var tooltipOptions = ref.options.tooltip;\n        var tooltip;\n\n        if (this._sharedTooltip()) {\n            tooltip = this._createSharedTooltip(tooltipOptions);\n        } else {\n            tooltip = new Tooltip(this.chartService, tooltipOptions);\n        }\n\n        return tooltip;\n    };\n\n    Chart.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n        return new SharedTooltip(this._plotArea, options);\n    };\n\n    Chart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n        applyAxisDefaults(options, themeOptions);\n        applySeriesDefaults(options, themeOptions);\n    };\n\n    Chart.prototype.applySeriesColors = function applySeriesColors () {\n        var options = this.options;\n        var series = options.series;\n        var colors = options.seriesColors || [];\n\n        for (var i = 0; i < series.length; i++) {\n            var currentSeries = series[i];\n            var seriesColor = colors[i % colors.length];\n            var defaults = currentSeries._defaults;\n\n            currentSeries.color = currentSeries.color || seriesColor;\n            if (defaults) {\n                defaults.color = defaults.color || seriesColor;\n            }\n        }\n    };\n\n    Chart.prototype._getModel = function _getModel () {\n        var options = this.options;\n        var plotArea = this._createPlotArea();\n        var model = new RootElement(this._modelOptions());\n        model.chart = this;\n        model._plotArea = plotArea;\n\n        Title.buildTitle(options.title, model);\n\n        if (options.legend && options.legend.visible) {\n            model.append(new Legend(plotArea.options.legend, this.chartService));\n        }\n        model.append(plotArea);\n        model.reflow();\n\n        return model;\n    };\n\n    Chart.prototype._modelOptions = function _modelOptions () {\n        var options = this.options;\n        var size = this.getSize();\n\n        return deepExtend({\n            transitions: options.transitions,\n            width: size.width || DEFAULT_WIDTH,\n            height: size.height || DEFAULT_HEIGHT\n        }, options.chartArea);\n    };\n\n    Chart.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n        var options = this.options;\n\n        var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n        return plotArea;\n    };\n\n    Chart.prototype._setupSelection = function _setupSelection () {\n        var this$1 = this;\n\n        var ref = this;\n        var axes = ref._plotArea.axes;\n        var selections = this._selections = [];\n\n        for (var i = 0; i < axes.length; i++) {\n            var axis = axes[i];\n            var options = axis.options;\n            if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n                var range = axis.range();\n\n                var selection = new Selection(this$1, axis,\n                    deepExtend({ min: range.min, max: range.max }, options.select)\n                );\n\n                selections.push(selection);\n            }\n        }\n    };\n\n    Chart.prototype._selectStart = function _selectStart (e) {\n        return this.trigger(SELECT_START, e);\n    };\n\n    Chart.prototype._select = function _select (e) {\n        return this.trigger(SELECT, e);\n    };\n\n    Chart.prototype._selectEnd = function _selectEnd (e) {\n        return this.trigger(SELECT_END, e);\n    };\n\n    Chart.prototype._initHandlers = function _initHandlers () {\n        this._clickHandler = this._click.bind(this);\n        this._mousewheelHandler = this._mousewheel.bind(this);\n        this._mouseleaveHandler = this._mouseleave.bind(this);\n        this._surfaceMouseenterHandler = this._mouseover.bind(this);\n        this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n        this._mousemove = throttle(\n            this._mousemove.bind(this),\n            MOUSEMOVE_DELAY\n        );\n    };\n\n    Chart.prototype.addObserver = function addObserver (observer) {\n        if (observer) {\n            this.observers.push(observer);\n        }\n    };\n\n    Chart.prototype.removeObserver = function removeObserver (observer) {\n        var index = this.observers.indexOf(observer);\n        if (index >= 0) {\n            this.observers.splice(index, 1);\n        }\n    };\n\n    Chart.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n        var observers = this.observers;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].requiresHandlers(eventNames)) {\n                return true;\n            }\n        }\n    };\n\n    Chart.prototype.trigger = function trigger (name, args) {\n        if ( args === void 0 ) args = {};\n\n        if (name === SHOW_TOOLTIP) {\n            args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n        }\n        args.sender = this;\n\n        var observers = this.observers;\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, args)) {\n                isDefaultPrevented = true;\n            }\n        }\n\n        return isDefaultPrevented;\n    };\n\n    Chart.prototype._attachEvents = function _attachEvents () {\n        var obj, obj$1;\n\n        var element = this.element;\n\n        this._touchAction = element.style.touchAction;\n\n        bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n        if (this._shouldAttachMouseMove()) {\n            bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n        }\n\n        this.domEvents = DomEventsBuilder.create(this.element, {\n            start: this._start.bind(this),\n            move: this._move.bind(this),\n            end: this._end.bind(this),\n            tap: this._tap.bind(this),\n            gesturestart: this._gesturestart.bind(this),\n            gesturechange: this._gesturechange.bind(this),\n            gestureend: this._gestureend.bind(this)\n        });\n\n        this._toggleDragZoomEvents();\n    };\n\n    Chart.prototype._mouseleave = function _mouseleave (e) {\n        if (this._hoveredPoint) {\n            this._hoveredPoint.out(this, e);\n            this._hoveredPoint = null;\n        }\n\n        if (this._plotArea.hovered) {\n            this.trigger(PLOT_AREA_LEAVE);\n            this._plotArea.hovered = false;\n        }\n    };\n\n    Chart.prototype._cancelDomEvents = function _cancelDomEvents () {\n        if (this.domEvents && this.domEvents.cancel) {\n            this.domEvents.cancel();\n        }\n    };\n\n    Chart.prototype._gesturestart = function _gesturestart (e) {\n        if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n            this._gestureDistance = e.distance;\n            this._unsetActivePoint();\n            this.surface.suspendTracking();\n        }\n    };\n\n    Chart.prototype._gestureend = function _gestureend (e) {\n        if (this._zooming && !this._stopChartHandlers(e)) {\n            if (this.surface) {\n                this.surface.resumeTracking();\n            }\n            this._zooming = false;\n            this.trigger(ZOOM_END, {});\n        }\n    };\n\n    Chart.prototype._gesturechange = function _gesturechange (e) {\n        var mousewheelZoom = this._mousewheelZoom;\n\n        if (mousewheelZoom && !this._stopChartHandlers(e)) {\n            e.preventDefault();\n            var previousGestureDistance = this._gestureDistance;\n            var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n            if (Math.abs(scaleDelta) >= 0.1) {\n                scaleDelta = Math.round(scaleDelta * 10);\n\n                this._gestureDistance = e.distance;\n                var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n                if (this._zooming || !this.trigger(ZOOM_START, args)) {\n\n                    if (!this._zooming) {\n                        this._zooming = true;\n                    }\n\n                    var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta);\n                    if (ranges && !this.trigger(ZOOM, args)) {\n                        mousewheelZoom.zoom();\n                    }\n                }\n            }\n        }\n    };\n\n    Chart.prototype._mouseout = function _mouseout (e) {\n        if (e.element) {\n            var element = this._drawingChartElement(e.element, e);\n\n            if (element && element.leave) {\n                element.leave(this, e.originalEvent);\n            }\n        }\n    };\n\n    Chart.prototype._start = function _start (e) {\n        var coords = this._eventCoordinates(e);\n\n        if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n            return;\n        }\n\n\n        if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n            this._startNavigation(e, coords, DRAG_START);\n        }\n\n        if (this._pannable && this._pannable.start(e)) {\n            this.surface.suspendTracking();\n            this._unsetActivePoint();\n            this._suppressHover = true;\n            this.chartService.panning = true;\n        }\n\n        if (this._zoomSelection) {\n            if (this._zoomSelection.start(e)) {\n                this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n            }\n        }\n    };\n\n    Chart.prototype._move = function _move (e) {\n        var ref = this;\n        var state = ref._navState;\n        var pannable = ref._pannable;\n\n        if (this._stopChartHandlers(e)) {\n            return;\n        }\n\n        if (pannable) {\n            var ranges = pannable.move(e);\n\n            if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n                pannable.pan();\n            }\n        } else if (state) {\n            var ranges$1 = {};\n            var axes = state.axes;\n\n            for (var i = 0; i < axes.length; i++) {\n                var currentAxis = axes[i];\n                var axisName = currentAxis.options.name;\n                if (axisName) {\n                    var axis = currentAxis.options.vertical ? e.y : e.x;\n                    var delta = axis.startLocation - axis.location;\n\n                    if (delta !== 0) {\n                        ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n                    }\n                }\n            }\n\n            state.axisRanges = ranges$1;\n            this.trigger(DRAG, {\n                axisRanges: ranges$1,\n                originalEvent: e\n            });\n        }\n\n        if (this._zoomSelection) {\n            this._zoomSelection.move(e);\n        }\n    };\n\n    Chart.prototype._end = function _end (e) {\n        if (this._stopChartHandlers(e)) {\n            return;\n        }\n\n        var pannable = this._pannable;\n        if (pannable && pannable.end(e)) {\n            this.surface.resumeTracking();\n            this.trigger(DRAG_END, {\n                axisRanges: axisRanges(this._plotArea.axes),\n                originalEvent: e\n            });\n            this._suppressHover = false;\n            this.chartService.panning = false;\n        } else {\n            this._endNavigation(e, DRAG_END);\n        }\n\n        if (this._zoomSelection) {\n            var ranges = this._zoomSelection.end(e);\n            if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n                this._zoomSelection.zoom();\n                this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n            }\n        }\n    };\n\n    Chart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n        var selections = this._selections || [];\n        if (!selections.length) {\n            return false;\n        }\n\n        var coords = this._eventCoordinates(e);\n        var pane = this._plotArea.paneByPoint(coords);\n        if (pane) {\n            for (var idx = 0; idx < selections.length; idx++) {\n                if (selections[idx].onPane(pane)) {\n                    return true;\n                }\n            }\n        }\n    };\n\n    Chart.prototype._mousewheel = function _mousewheel (e) {\n        var this$1 = this;\n\n        var delta = mousewheelDelta(e);\n        var mousewheelZoom = this._mousewheelZoom;\n        var coords = this._eventCoordinates(e);\n\n        if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n            return;\n        }\n\n        if (mousewheelZoom) {\n            var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n            if (this._zooming || !this.trigger(ZOOM_START, args)) {\n                e.preventDefault();\n\n                if (!this._zooming) {\n                    this._unsetActivePoint();\n                    this.surface.suspendTracking();\n                    this._zooming = true;\n                }\n\n                if (this._mwTimeout) {\n                    clearTimeout(this._mwTimeout);\n                }\n\n                args.axisRanges = mousewheelZoom.updateRanges(delta);\n                if (args.axisRanges && !this.trigger(ZOOM, args)) {\n                    mousewheelZoom.zoom();\n                }\n\n                this._mwTimeout = setTimeout(function () {\n                    this$1.trigger(ZOOM_END, args);\n                    this$1._zooming = false;\n                    if (this$1.surface) {\n                        this$1.surface.resumeTracking();\n                    }\n                }, MOUSEWHEEL_DELAY);\n            }\n        } else {\n            var state = this._navState;\n            if (!state) {\n                var prevented = this._startNavigation(e, coords, ZOOM_START);\n                if (!prevented) {\n                    state = this._navState;\n                }\n            }\n\n            if (state) {\n                var totalDelta = state.totalDelta || delta;\n                state.totalDelta = totalDelta + delta;\n\n                var axes = this._navState.axes;\n                var ranges = {};\n\n                for (var i = 0; i < axes.length; i++) {\n                    var currentAxis = axes[i];\n                    var axisName = currentAxis.options.name;\n                    if (axisName) {\n                        ranges[axisName] = currentAxis.scaleRange(-totalDelta);\n                    }\n                }\n\n                this.trigger(ZOOM, {\n                    delta: delta,\n                    axisRanges: ranges,\n                    originalEvent: e\n                });\n\n                if (this._mwTimeout) {\n                    clearTimeout(this._mwTimeout);\n                }\n\n                this._mwTimeout = setTimeout(function () {\n                    this$1._endNavigation(e, ZOOM_END);\n                }, MOUSEWHEEL_DELAY);\n            }\n        }\n    };\n\n    Chart.prototype._startNavigation = function _startNavigation (e, coords, chartEvent) {\n        var plotArea = this._model._plotArea;\n        var pane = plotArea.findPointPane(coords);\n        var axes = plotArea.axes.slice(0);\n\n        if (!pane) {\n            return;\n        }\n\n        var ranges = axisRanges(axes);\n\n        var prevented = this.trigger(chartEvent, {\n            axisRanges: ranges,\n            originalEvent: e\n        });\n\n        if (prevented) {\n            this._cancelDomEvents();\n        } else {\n            this._suppressHover = true;\n            this._unsetActivePoint();\n            this._navState = {\n                axisRanges: ranges,\n                pane: pane,\n                axes: axes\n            };\n        }\n    };\n\n    Chart.prototype._endNavigation = function _endNavigation (e, chartEvent) {\n        if (this._navState) {\n            this.trigger(chartEvent, {\n                axisRanges: this._navState.axisRanges,\n                originalEvent: e\n            });\n            this._suppressHover = false;\n            this._navState = null;\n        }\n    };\n\n    Chart.prototype._getChartElement = function _getChartElement (e, match) {\n        var element = this.surface.eventTarget(e);\n        if (element) {\n            return this._drawingChartElement(element, e, match);\n        }\n    };\n\n    Chart.prototype._drawingChartElement = function _drawingChartElement (element, e, match) {\n        var current = element;\n        var chartElement;\n        while (current && !chartElement) {\n            chartElement = current.chartElement;\n            current = current.parent;\n        }\n\n        if (chartElement) {\n            if (chartElement.aliasFor) {\n                chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n            }\n\n            if (match) {\n                chartElement = chartElement.closest(match);\n                if (chartElement && chartElement.aliasFor) {\n                    chartElement = chartElement.aliasFor();\n                }\n            }\n\n            return chartElement;\n        }\n    };\n\n    Chart.prototype._eventCoordinates = function _eventCoordinates (e) {\n        var coordinates = eventCoordinates(e);\n        return this._toModelCoordinates(coordinates.x, coordinates.y);\n    };\n\n    Chart.prototype._elementPadding = function _elementPadding () {\n        if (!this._padding) {\n            var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n            var paddingLeft = ref.paddingLeft;\n            var paddingTop = ref.paddingTop;\n            this._padding = {\n                top: paddingTop,\n                left: paddingLeft\n            };\n        }\n\n        return this._padding;\n    };\n\n    Chart.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n        var padding = this._elementPadding();\n        var offset = elementOffset(this.element);\n\n        return {\n            left: round(point.x + padding.left + offset.left),\n            top: round(point.y + padding.top + offset.top)\n        };\n    };\n\n    Chart.prototype._toModelCoordinates = function _toModelCoordinates (clientX, clientY) {\n        var element = this.element;\n        var offset = elementOffset(element);\n        var padding = this._elementPadding();\n\n        return new Point(\n            clientX - offset.left - padding.left,\n            clientY - offset.top - padding.top\n        );\n    };\n\n    Chart.prototype._tap = function _tap (e) {\n        var this$1 = this;\n\n        var drawingElement = this.surface.eventTarget(e);\n        var element = this._drawingChartElement(drawingElement, e);\n        var sharedTooltip = this._sharedTooltip();\n\n        if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n            this._unsetActivePoint();\n        }\n\n        if (sharedTooltip) {\n            this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n        }\n\n        this._propagateClick(element, e);\n\n        //part of fix for hover issue on windows touch\n        this.handlingTap = true;\n        setTimeout(function () {\n            this$1.handlingTap = false;\n        }, 0);\n    };\n\n    Chart.prototype._click = function _click (e) {\n        var element = this._getChartElement(e);\n        this._propagateClick(element, e);\n    };\n\n    Chart.prototype._propagateClick = function _propagateClick (element, e) {\n        var this$1 = this;\n\n        var current = element;\n        while (current) {\n            if (current.click) {\n                current.click(this$1, e);\n            }\n\n            current = current.parent;\n        }\n    };\n\n    Chart.prototype._startHover = function _startHover (element, e) {\n        if (this._suppressHover) {\n            return false;\n        }\n\n        var point = this._drawingChartElement(element, e, function(element) {\n            return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n        });\n\n        var activePoint = this._activePoint;\n        var hoveredPoint = this._hoveredPoint;\n\n        if (hoveredPoint && hoveredPoint !== point) {\n            hoveredPoint.out(this, e);\n            this._hoveredPoint = null;\n        }\n\n        if (point && hoveredPoint !== point && point.over) {\n            this._hoveredPoint = point;\n            point.over(this, e);\n        }\n\n        if (point && activePoint !== point && point.hover) {\n            this._activePoint = point;\n\n            if (!this._sharedTooltip() && !point.hover(this, e)) {\n                var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n                if (tooltipOptions.visible) {\n                    this._tooltip.show(point);\n                }\n\n                this._highlight.show(point);\n            }\n        }\n\n        return point;\n    };\n\n    Chart.prototype._mouseover = function _mouseover (e) {\n        var obj;\n\n        var point = this._startHover(e.element, e.originalEvent);\n\n        if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n            this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n            bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n        }\n    };\n\n    Chart.prototype._mouseMoveTracking = function _mouseMoveTracking (e) {\n        var obj;\n\n        var ref = this;\n        var options = ref.options;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n        var point = ref._activePoint;\n        var coords = this._eventCoordinates(e);\n\n        if (this._plotArea.box.containsPoint(coords)) {\n            if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n                var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n                if (seriesPoint && seriesPoint !== point) {\n                    this._activePoint = seriesPoint;\n\n                    if (!seriesPoint.hover(this, e)) {\n                        var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n                        if (tooltipOptions.visible) {\n                            tooltip.show(seriesPoint);\n                        }\n\n                        highlight.show(seriesPoint);\n                    }\n                }\n            }\n        } else {\n            unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n            this._unsetActivePoint();\n            this._mouseMoveTrackHandler = null;\n        }\n    };\n\n    Chart.prototype._mousemove = function _mousemove (e) {\n        var coords = this._eventCoordinates(e);\n        var plotArea = this._plotArea;\n\n        this._trackCrosshairs(coords);\n\n        if (plotArea.hover) {\n            var overPlotArea = plotArea.backgroundContainsPoint(coords);\n            if (overPlotArea) {\n                plotArea.hovered = true;\n                this._plotArea.hover(this, e);\n            } else if (plotArea.hovered && !overPlotArea) {\n                this.trigger(PLOT_AREA_LEAVE);\n                plotArea.hovered = false;\n            }\n        }\n\n        if (this._sharedTooltip()) {\n            this._trackSharedTooltip(coords, e);\n        }\n    };\n\n    Chart.prototype._trackCrosshairs = function _trackCrosshairs (coords) {\n        var crosshairs = this._plotArea.crosshairs;\n\n        for (var i = 0; i < crosshairs.length; i++) {\n            var current = crosshairs[i];\n\n            if (current.box.containsPoint(coords)) {\n                current.showAt(coords);\n            } else {\n                current.hide();\n            }\n        }\n    };\n\n    Chart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords, e, toggle) {\n        if (this._suppressHover) {\n            return;\n        }\n\n        var ref = this;\n        var tooltipOptions = ref.options.tooltip;\n        var plotArea = ref._plotArea;\n        var categoryAxis = ref._plotArea.categoryAxis;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n\n        if (plotArea.backgroundContainsPoint(coords)) {\n            var index = categoryAxis.pointCategoryIndex(coords);\n            if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n                var points = plotArea.pointsByCategoryIndex(index);\n                var pointArgs = points.map(function(point) {\n                    return point.eventArgs(e);\n                });\n                var hoverArgs = pointArgs[0] || {};\n                hoverArgs.categoryPoints = pointArgs;\n\n                if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n                    if (tooltipOptions.visible) {\n                        tooltip.showAt(points, coords);\n                    }\n\n                    highlight.show(points);\n\n                    this._sharedHighlight = true;\n                } else {\n                    tooltip.hide();\n                }\n\n                this._tooltipCategoryIx = index;\n            } else if (toggle && this._sharedHighlight) {\n                highlight.hide();\n                tooltip.hide();\n                this._sharedHighlight = false;\n            }\n        } else if (this._sharedHighlight) {\n            highlight.hide();\n            tooltip.hide();\n            this._tooltipCategoryIx = null;\n            this._sharedHighlight = false;\n        }\n    };\n\n    Chart.prototype.hideElements = function hideElements () {\n        var plotArea = this._plotArea;\n        this._mousemove.cancel();\n\n        plotArea.hideCrosshairs();\n\n        this._unsetActivePoint();\n    };\n\n    Chart.prototype._unsetActivePoint = function _unsetActivePoint () {\n        var ref = this;\n        var tooltip = ref._tooltip;\n        var highlight = ref._highlight;\n\n        this._activePoint = null;\n        this._hoveredPoint = null;\n\n        if (tooltip) {\n            tooltip.hide();\n        }\n\n        this._tooltipCategoryIx = null;\n        this._sharedHighlight = false;\n\n        if (highlight) {\n            highlight.hide();\n        }\n    };\n\n    Chart.prototype._deferRedraw = function _deferRedraw () {\n        this._redraw();\n    };\n\n    Chart.prototype._clearRedrawTimeout = function _clearRedrawTimeout () {\n        if (this._redrawTimeout) {\n            clearInterval(this._redrawTimeout);\n            this._redrawTimeout = null;\n        }\n    };\n\n    Chart.prototype.bindCategories = function bindCategories () {\n        var this$1 = this;\n\n        var options = this.options;\n        var definitions = [].concat(options.categoryAxis);\n\n        for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n            var axis = definitions[axisIx];\n            if (axis.autoBind !== false) {\n                this$1.bindCategoryAxisFromSeries(axis, axisIx);\n            }\n        }\n    };\n\n    Chart.prototype.bindCategoryAxisFromSeries = function bindCategoryAxisFromSeries (axis, axisIx) {\n        var this$1 = this;\n\n        var series = this.options.series;\n        var seriesLength = series.length;\n        var uniqueCategories = new HashMap();//perf improvement in case type category with dates\n        var items = [];\n        var bindable = false;\n        var dateAxis;\n\n        for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n            var s = series[seriesIx];\n            var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n            var data = s.data;\n            var dataLength = data.length;\n            var bind = s.categoryField && onAxis;\n            bindable = bind || bindable;\n\n            if (bind && dataLength > 0) {\n                dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n                var getFn = dateAxis ? getDateField : getField;\n\n                for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n                    var dataRow = data[dataIx];\n                    var category = getFn(s.categoryField, dataRow, this$1.chartService.intl);\n\n                    if (dateAxis || !uniqueCategories.get(category)) {\n                        items.push([ category, dataRow ]);\n\n                        if (!dateAxis) {\n                            uniqueCategories.set(category, true);\n                        }\n                    }\n                }\n            }\n        }\n\n        if (items.length > 0) {\n            if (dateAxis) {\n                items = uniqueDates(items, function(a, b) {\n                    return dateComparer(a[0], b[0]);\n                });\n            }\n\n            var result = transpose(items);\n            axis.categories = result[0];\n        } else if (bindable) {\n            axis.categories = [];\n        }\n    };\n\n    Chart.prototype._isBindable = function _isBindable (series) {\n        var valueFields = SeriesBinder.current.valueFields(series);\n        var result = true;\n\n        for (var i = 0; i < valueFields.length; i++) {\n            var field = valueFields[i];\n            if (field === VALUE) {\n                field = \"field\";\n            } else {\n                field = field + \"Field\";\n            }\n\n            if (!defined(series[field])) {\n                result = false;\n                break;\n            }\n        }\n\n        return result;\n    };\n\n    Chart.prototype._noTransitionsRedraw = function _noTransitionsRedraw () {\n        var options = this.options;\n        var transitionsState;\n\n        if (options.transitions !== false) {\n            options.transitions = false;\n            transitionsState = true;\n        }\n\n        this._redraw();\n\n        if (transitionsState) {\n            options.transitions = true;\n        }\n    };\n\n    Chart.prototype._legendItemHover = function _legendItemHover (seriesIndex, pointIndex) {\n        var ref = this;\n        var plotArea = ref._plotArea;\n        var highlight = ref._highlight;\n        var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n        var items;\n\n        if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL ])) {\n            items = plotArea.findPoint(function(point) {\n                return point.series.index === seriesIndex && point.index === pointIndex;\n            });\n        } else {\n            items = plotArea.pointsBySeriesIndex(seriesIndex);\n        }\n\n        highlight.show(items);\n    };\n\n    Chart.prototype._shouldAttachMouseMove = function _shouldAttachMouseMove () {\n        return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n    };\n\n    Chart.prototype.updateMouseMoveHandler = function updateMouseMoveHandler () {\n        var obj, obj$1;\n\n        unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n        if (this._shouldAttachMouseMove()) {\n            bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n        }\n    };\n\n    Chart.prototype.applyOptions = function applyOptions (options, theme) {\n        clearMissingValues(this._originalOptions, options);\n        this._originalOptions = deepExtend(this._originalOptions, options);\n        this.options = deepExtend({}, this._originalOptions);\n\n        if (theme) {\n            this._theme = theme;\n            this.chartService.theme = theme;\n        }\n        this._initTheme(this.options, this._theme);\n\n        this._toggleDragZoomEvents();\n    };\n\n    Chart.prototype.setOptions = function setOptions (options, theme) {\n        this.applyOptions(options, theme);\n        this.bindCategories();\n        this.redraw();\n        this.updateMouseMoveHandler();\n    };\n\n    Chart.prototype.setDirection = function setDirection (rtl) {\n        this.chartService.rtl = Boolean(rtl);\n        if (this.surface && this.surface.type === 'svg') {\n            this._destroySurface();\n        }\n    };\n\n    Chart.prototype.setIntlService = function setIntlService (intl) {\n        this.chartService.intl = intl;\n    };\n\n    Chart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        this._noTransitionsRedraw();\n    };\n\n    Chart.prototype.destroy = function destroy () {\n        var obj, obj$1;\n\n        this._destroyed = true;\n\n        unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n        if (this.domEvents) {\n            this.domEvents.destroy();\n            delete this.domEvents;\n        }\n\n        if (this._mouseMoveTrackHandler) {\n            unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n        }\n\n        this._destroyView();\n\n        this._destroySurface();\n\n        this._clearRedrawTimeout();\n    };\n\n    Chart.prototype._destroySurface = function _destroySurface () {\n        var surface = this.surface;\n        if (surface) {\n            surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n            surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n            surface.destroy();\n\n            this.surface = null;\n        }\n    };\n\n    Chart.prototype._destroySelections = function _destroySelections () {\n        var selections = this._selections;\n\n        if (selections) {\n            while (selections.length > 0) {\n                selections.shift().destroy();\n            }\n        }\n    };\n\n    Chart.prototype._destroyView = function _destroyView () {\n        var model = this._model;\n\n        if (model) {\n            model.destroy();\n            this._model = null;\n        }\n\n        this._unsetActivePoint();\n\n        this._destroySelections();\n\n        if (this._tooltip) {\n            this._tooltip.destroy();\n        }\n\n        if (this._highlight) {\n            this._highlight.destroy();\n        }\n\n        if (this._zoomSelection) {\n            this._zoomSelection.destroy();\n            delete this._zoomSelection;\n        }\n\n        if (this._pannable) {\n            this._pannable.destroy();\n            delete this._pannable;\n        }\n\n        if (this._mousewheelZoom) {\n            this._mousewheelZoom.destroy();\n            delete this._mousewheelZoom;\n        }\n    };\n\n    return Chart;\n}(Class));\n\nfunction resolveAxisAliases(options) {\n    var aliases = AXIS_NAMES;\n\n    for (var idx = 0; idx < aliases.length; idx++) {\n        var alias = aliases[idx] + \"Axes\";\n        if (options[alias]) {\n            options[aliases[idx] + \"Axis\"] = options[alias];\n            delete options[alias];\n        }\n    }\n}\n\nfunction pointByCategoryName(points, name) {\n    if (points) {\n        for (var idx = 0; idx < points.length; idx++) {\n            if (points[idx].category === name) {\n                return [ points[idx] ];\n            }\n        }\n    }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n    var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n    var axisName, axisDefaults, axes;\n\n    function mapAxisOptions(axisOptions) {\n        var axisColor = (axisOptions || {}).color || axisDefaults.color;\n        var result = deepExtend({},\n            themeAxisDefaults,\n            themeAxisDefaults[axisName],\n            axisDefaults,\n            axisDefaults[axisName], {\n                line: { color: axisColor },\n                labels: { color: axisColor },\n                title: { color: axisColor }\n            },\n            axisOptions\n        );\n\n        delete result[axisName];\n\n        return result;\n    }\n\n    for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n        axisName = AXIS_NAMES[idx] + \"Axis\";\n        axisDefaults = options.axisDefaults || {};\n        axes = [].concat(options[axisName]);\n\n        axes = axes.map(mapAxisOptions);\n\n        options[axisName] = axes.length > 1 ? axes : axes[0];\n    }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n    var series = options.series;\n    var seriesLength = series.length;\n    var seriesDefaults = options.seriesDefaults;\n    var commonDefaults = deepExtend({}, options.seriesDefaults);\n    var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n    var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n    cleanupNestedSeriesDefaults(commonDefaults);\n    cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n    for (var i = 0; i < seriesLength; i++) {\n        var seriesType = series[i].type || options.seriesDefaults.type;\n\n        var baseOptions = deepExtend(\n            { data: [] },\n            commonThemeDefaults,\n            themeSeriesDefaults[seriesType],\n            { tooltip: options.tooltip },\n            commonDefaults,\n            seriesDefaults[seriesType]\n        );\n\n        series[i]._defaults = baseOptions;\n        series[i] = deepExtend({}, baseOptions, series[i]);\n        series[i].data = series[i].data || [];\n    }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n    delete seriesDefaults.bar;\n    delete seriesDefaults.column;\n    delete seriesDefaults.rangeColumn;\n    delete seriesDefaults.line;\n    delete seriesDefaults.verticalLine;\n    delete seriesDefaults.pie;\n    delete seriesDefaults.donut;\n    delete seriesDefaults.area;\n    delete seriesDefaults.verticalArea;\n    delete seriesDefaults.scatter;\n    delete seriesDefaults.scatterLine;\n    delete seriesDefaults.bubble;\n    delete seriesDefaults.candlestick;\n    delete seriesDefaults.ohlc;\n    delete seriesDefaults.boxPlot;\n    delete seriesDefaults.bullet;\n    delete seriesDefaults.verticalBullet;\n    delete seriesDefaults.polarArea;\n    delete seriesDefaults.polarLine;\n    delete seriesDefaults.radarArea;\n    delete seriesDefaults.radarLine;\n    delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n    var ranges = {};\n\n    for (var i = 0; i < axes.length; i++) {\n        var axis = axes[i];\n        var axisName = axis.options.name;\n        if (axisName) {\n            ranges[axisName] = axis.range();\n        }\n    }\n\n    return ranges;\n}\n\nfunction sortDates(dates, comparer) {\n    if ( comparer === void 0 ) comparer = dateComparer;\n\n    for (var i = 1, length = dates.length; i < length; i++) {\n        if (comparer(dates[i], dates[i - 1]) < 0) {\n            dates.sort(comparer);\n            break;\n        }\n    }\n\n    return dates;\n}\n\nfunction uniqueDates(srcDates, comparer) {\n    if ( comparer === void 0 ) comparer = dateComparer;\n\n    var dates = sortDates(srcDates, comparer);\n    var length = dates.length;\n    var result = length > 0 ? [ dates[0] ] : [];\n\n    for (var i = 1; i < length; i++) {\n        if (comparer(dates[i], last(result)) !== 0) {\n            result.push(dates[i]);\n        }\n    }\n\n    return result;\n}\n\nfunction transpose(rows) {\n    var rowCount = rows.length;\n    var result = [];\n\n    for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n        var row = rows[rowIx];\n        var colCount = row.length;\n\n        for (var colIx = 0; colIx < colCount; colIx++) {\n            result[colIx] = result[colIx] || [];\n            result[colIx].push(row[colIx]);\n        }\n    }\n\n    return result;\n}\n\nvar DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n    for (var field in options) {\n        if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n            var fieldValue = options[field];\n            var originalValue = originalOptions[field];\n            if (defined(originalValue)) {\n                var nullValue = fieldValue === null;\n                if ((nullValue || !defined(fieldValue))) {\n                    delete originalOptions[field];\n                    if (nullValue) {\n                        delete options[field];\n                    }\n                } else if (originalValue && isObject(fieldValue)) {\n                    if (isObject(originalValue)) {\n                        clearMissingValues(originalValue, fieldValue);\n                    }\n                }\n            }\n        }\n    }\n}\n\nfunction triggerPaneRender(panes) {\n    for (var idx = 0; idx < panes.length; idx++) {\n        panes[idx].notifyRender();\n    }\n}\n\nsetDefaultOptions(Chart, {\n    renderAs: \"\",\n    chartArea: {},\n    legend: {\n        visible: true,\n        labels: {}\n    },\n    categoryAxis: {},\n    seriesDefaults: {\n        type: COLUMN,\n        data: [],\n        highlight: {\n            visible: true\n        },\n        labels: {},\n        negativeValues: {\n            visible: false\n        }\n    },\n    series: [],\n    seriesColors: null,\n    tooltip: {\n        visible: false\n    },\n    transitions: true,\n    valueAxis: {},\n    plotArea: {},\n    title: {},\n    xAxis: {},\n    yAxis: {},\n    panes: [ {} ],\n    pannable: false,\n    zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nvar TOP_OFFSET = -2;\n\nvar SharedTooltip = (function (ChartSharedTooltip) {\n    function SharedTooltip () {\n        ChartSharedTooltip.apply(this, arguments);\n    }\n\n    if ( ChartSharedTooltip ) SharedTooltip.__proto__ = ChartSharedTooltip;\n    SharedTooltip.prototype = Object.create( ChartSharedTooltip && ChartSharedTooltip.prototype );\n    SharedTooltip.prototype.constructor = SharedTooltip;\n\n    SharedTooltip.prototype._slotAnchor = function _slotAnchor (coords, slot) {\n        var axis = this.plotArea.categoryAxis;\n        var vertical = axis.options.vertical;\n        var align = vertical ? {\n            horizontal: \"left\",\n            vertical: \"center\"\n        } : {\n            horizontal: \"center\",\n            vertical: \"bottom\"\n        };\n\n        var point;\n\n        if (vertical) {\n            point = new Point(this.plotArea.box.x2, slot.center().y);\n        } else {\n            point = new Point(slot.center().x, TOP_OFFSET);\n        }\n\n        return {\n            point: point,\n            align: align\n        };\n    };\n\n    SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n        return this._slotAnchor({}, slot);\n    };\n\n    return SharedTooltip;\n}(ChartSharedTooltip));\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport{ addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nvar DEAULT_BAR_WIDTH = 150;\nvar DEAULT_BULLET_WIDTH = 150;\nvar NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n    var state = [];\n    for (var idx = 0; idx < children.length; idx++) {\n        var child = children[idx];\n        state[idx] = child.style.display;\n        child.style.display = \"none\";\n    }\n\n    return state;\n}\n\nfunction show(children, state) {\n    for (var idx = 0; idx < children.length; idx++) {\n        children[idx].style.display = state[idx];\n    }\n}\n\nfunction wrapNumber(value) {\n    return isNumber(value) ? [ value ] : value;\n}\n\nvar Sparkline = (function (Chart) {\n    function Sparkline () {\n        Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) Sparkline.__proto__ = Chart;\n    Sparkline.prototype = Object.create( Chart && Chart.prototype );\n    Sparkline.prototype.constructor = Sparkline;\n\n    Sparkline.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, 'k-sparkline');\n    };\n\n    Sparkline.prototype._initElement = function _initElement (element) {\n        Chart.prototype._initElement.call(this, element);\n\n        this._initialWidth = Math.floor(elementSize(element).width);\n    };\n\n    Sparkline.prototype._resize = function _resize () {\n        var element = this.element;\n        var state = hide(element.childNodes);\n\n        this._initialWidth = Math.floor(elementSize(element).width);\n\n        show(element.childNodes, state);\n\n        Chart.prototype._resize.call(this);\n    };\n\n    Sparkline.prototype._modelOptions = function _modelOptions () {\n        var chartOptions = this.options;\n        var stage = this._surfaceWrap();\n        var displayState = hide(stage.childNodes);\n\n        var space = document.createElement('span');\n        space.innerHTML = '&nbsp;';\n\n        stage.appendChild(space);\n\n        var options = deepExtend({\n            width: this._autoWidth,\n            height: elementSize(stage).height,\n            transitions: chartOptions.transitions\n        }, chartOptions.chartArea, {\n            inline: true,\n            align: false\n        });\n\n        elementSize(stage, {\n            width: options.width,\n            height: options.height\n        });\n\n        stage.removeChild(space);\n\n        show(stage.childNodes, displayState);\n\n        if (this.surface) {\n            this.surface.resize();\n        }\n\n        return options;\n    };\n\n    Sparkline.prototype._surfaceWrap = function _surfaceWrap () {\n        if (!this.stage) {\n            var stage = this.stage = document.createElement('span');\n            this.element.appendChild(stage);\n        }\n        return this.stage;\n    };\n\n    Sparkline.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n        var plotArea = Chart.prototype._createPlotArea.call(this, skipSeries);\n        this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n        return plotArea;\n    };\n\n    Sparkline.prototype._calculateWidth = function _calculateWidth (plotArea) {\n        var options = this.options;\n        var margin = getSpacing(options.chartArea.margin);\n        var charts = plotArea.charts;\n        var stage = this._surfaceWrap();\n        var total = 0;\n\n\n        for (var i = 0; i < charts.length; i++) {\n            var currentChart = charts[i];\n            var firstSeries = (currentChart.options.series || [])[0];\n            if (!firstSeries) {\n                continue;\n            }\n\n            if (firstSeries.type === BAR) {\n                return DEAULT_BAR_WIDTH;\n            }\n\n            if (firstSeries.type === BULLET) {\n                return DEAULT_BULLET_WIDTH;\n            }\n\n            if (firstSeries.type === PIE) {\n                return elementSize(stage).height;\n            }\n\n            var categoryAxis = currentChart.categoryAxis;\n            if (categoryAxis) {\n                var pointsCount = categoryAxis.categoriesCount() *\n                    (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n                total = Math.max(total, pointsCount);\n            }\n        }\n\n        var size = total * options.pointWidth;\n        if (size > 0) {\n            size += margin.left + margin.right;\n        }\n\n        return size;\n    };\n\n    Sparkline.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n        return new SharedTooltip(this._plotArea, options);\n    };\n\n    Sparkline.normalizeOptions = function normalizeOptions (userOptions) {\n        var options = wrapNumber(userOptions);\n\n        if (isArray(options)) {\n            options = { seriesDefaults: { data: options } };\n        } else {\n            options = deepExtend({}, options);\n        }\n\n        if (!options.series) {\n            options.series = [ { data: wrapNumber(options.data) } ];\n        }\n\n        deepExtend(options, {\n            seriesDefaults: {\n                type: options.type\n            }\n        });\n\n        if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n            inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n            options = deepExtend({}, {\n                categoryAxis: {\n                    crosshair: {\n                        visible: false\n                    }\n                }\n            }, options);\n        }\n\n        return options;\n    };\n\n    return Sparkline;\n}(Chart));\n\nsetDefaultOptions(Sparkline, {\n    chartArea: {\n        margin: 2\n    },\n    axisDefaults: {\n        visible: false,\n        majorGridLines: {\n            visible: false\n        },\n        valueAxis: {\n            narrowRange: true\n        }\n    },\n    seriesDefaults: {\n        type: \"line\",\n        area: {\n            line: {\n                width: 0.5\n            }\n        },\n        bar: {\n            stack: true\n        },\n        padding: 2,\n        width: 0.5,\n        overlay: {\n            gradient: null\n        },\n        highlight: {\n            visible: false\n        },\n        border: {\n            width: 0\n        },\n        markers: {\n            size: 2,\n            visible: false\n        }\n    },\n    tooltip: {\n        visible: true,\n        shared: true\n    },\n    categoryAxis: {\n        crosshair: {\n            visible: true,\n            tooltip: {\n                visible: false\n            }\n        }\n    },\n    legend: {\n        visible: false\n    },\n    transitions: false,\n\n    pointWidth: 5,\n\n    panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nvar FadeOutAnimation = (function (superclass) {\n    function FadeOutAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) FadeOutAnimation.__proto__ = superclass;\n    FadeOutAnimation.prototype = Object.create( superclass && superclass.prototype );\n    FadeOutAnimation.prototype.constructor = FadeOutAnimation;\n\n    FadeOutAnimation.prototype.setup = function setup () {\n        this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n    };\n\n    FadeOutAnimation.prototype.step = function step (pos) {\n        elementStyles(this.element, {\n            opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n        });\n    };\n\n    FadeOutAnimation.prototype.abort = function abort () {\n        superclass.prototype.abort.call(this);\n        elementStyles(this.element, {\n            display: 'none',\n            opacity: String(this._initialOpacity)\n        });\n    };\n\n    FadeOutAnimation.prototype.cancel = function cancel () {\n        superclass.prototype.abort.call(this);\n        elementStyles(this.element, {\n            opacity: String(this._initialOpacity)\n        });\n    };\n\n    return FadeOutAnimation;\n}(draw.Animation));\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n    var div = document.createElement(\"div\");\n    div.className = className;\n    if (style) {\n        div.style.cssText = style;\n    }\n\n    return div;\n}\n\nvar NavigatorHint = (function (Class) {\n    function NavigatorHint(container, chartService, options) {\n        Class.call(this);\n\n        this.options = deepExtend({}, this.options, options);\n        this.container = container;\n        this.chartService = chartService;\n\n        var padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n        this.chartPadding = {\n            top: padding.paddingTop,\n            left: padding.paddingLeft\n        };\n\n        this.createElements();\n        container.appendChild(this.element);\n    }\n\n    if ( Class ) NavigatorHint.__proto__ = Class;\n    NavigatorHint.prototype = Object.create( Class && Class.prototype );\n    NavigatorHint.prototype.constructor = NavigatorHint;\n\n    NavigatorHint.prototype.createElements = function createElements () {\n        var element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n        var tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n        var scroll = this.scroll = createDiv('k-scroll');\n\n        tooltip.innerHTML = '&nbsp;';\n\n        element.appendChild(tooltip);\n        element.appendChild(scroll);\n    };\n\n    NavigatorHint.prototype.show = function show (from, to, bbox) {\n        var ref = this;\n        var element = ref.element;\n        var options = ref.options;\n        var scroll = ref.scroll;\n        var tooltip = ref.tooltip;\n        var middle = toDate(toTime(from) + toTime(to - from) / 2);\n        var scrollWidth = bbox.width() * 0.4;\n        var minPos = bbox.center().x - scrollWidth;\n        var maxPos = bbox.center().x;\n        var posRange = maxPos - minPos;\n        var range = options.max - options.min;\n        var scale = posRange / range;\n        var offset = middle - options.min;\n        var text = this.chartService.intl.format(options.format, from, to);\n        var template = getTemplate(options);\n\n        this.clearHideTimeout();\n\n        if (!this._visible) {\n            elementStyles(element, {\n                visibility: 'hidden',\n                display: 'block'\n            });\n            this._visible = true;\n        }\n\n        if (template) {\n            text = template({\n                from: from,\n                to: to\n            });\n        }\n\n        tooltip.innerHTML = text;\n        elementStyles(tooltip, {\n            left: bbox.center().x - tooltip.offsetWidth / 2,\n            top: bbox.y1\n        });\n\n        var tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n        elementStyles(scroll, {\n            width: scrollWidth,\n            left: minPos + offset * scale,\n            top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n        });\n\n        elementStyles(element, {\n            visibility: 'visible'\n        });\n    };\n\n    NavigatorHint.prototype.clearHideTimeout = function clearHideTimeout () {\n        if (this._hideTimeout) {\n            clearTimeout(this._hideTimeout);\n        }\n\n        if (this._hideAnimation) {\n            this._hideAnimation.cancel();\n        }\n    };\n\n    NavigatorHint.prototype.hide = function hide () {\n        var this$1 = this;\n\n        this.clearHideTimeout();\n\n        this._hideTimeout = setTimeout(function () {\n            this$1._visible = false;\n            this$1._hideAnimation = new FadeOutAnimation(this$1.element);\n            this$1._hideAnimation.setup();\n            this$1._hideAnimation.play();\n        }, this.options.hideDelay);\n    };\n\n    NavigatorHint.prototype.destroy = function destroy () {\n        this.clearHideTimeout();\n        if (this.container) {\n            this.container.removeChild(this.element);\n        }\n        delete this.container;\n        delete this.chartService;\n        delete this.element;\n        delete this.tooltip;\n        delete this.scroll;\n    };\n\n    return NavigatorHint;\n}(Class));\n\nsetDefaultOptions(NavigatorHint, {\n    format: \"{0:d} - {1:d}\",\n    hideDelay: 500\n});\n\nexport default NavigatorHint;","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar ZOOM_ACCELERATION = 3;\n\nvar Navigator = (function (Class) {\n    function Navigator(chart) {\n        var obj;\n\n        Class.call(this);\n\n        this.chart = chart;\n        var options = this.options = deepExtend({}, this.options, chart.options.navigator);\n        var select = options.select;\n        if (select) {\n            select.from = this.parseDate(select.from);\n            select.to = this.parseDate(select.to);\n        }\n\n        if (!defined(options.hint.visible)) {\n            options.hint.visible = options.visible;\n        }\n\n        this.chartObserver = new InstanceObserver(this, ( obj = {}, obj[DRAG] = '_drag', obj[DRAG_END] = '_dragEnd', obj[ZOOM] = '_zoom', obj[ZOOM_END] = '_zoomEnd', obj ));\n        chart.addObserver(this.chartObserver);\n    }\n\n    if ( Class ) Navigator.__proto__ = Class;\n    Navigator.prototype = Object.create( Class && Class.prototype );\n    Navigator.prototype.constructor = Navigator;\n\n    Navigator.prototype.parseDate = function parseDate$1 (value) {\n        return parseDate(this.chart.chartService.intl, value);\n    };\n\n    Navigator.prototype.clean = function clean () {\n        if (this.selection) {\n            this.selection.destroy();\n            this.selection = null;\n        }\n\n        if (this.hint) {\n            this.hint.destroy();\n            this.hint = null;\n        }\n    };\n\n    Navigator.prototype.destroy = function destroy () {\n        if (this.chart) {\n            this.chart.removeObserver(this.chartObserver);\n            delete this.chart;\n        }\n\n        this.clean();\n    };\n\n    Navigator.prototype.redraw = function redraw () {\n        this._redrawSelf();\n        this.initSelection();\n    };\n\n    Navigator.prototype.initSelection = function initSelection () {\n        var ref = this;\n        var chart = ref.chart;\n        var options = ref.options;\n        var axis = this.mainAxis();\n        var ref$1 = axis.roundedRange();\n        var min = ref$1.min;\n        var max = ref$1.max;\n        var ref$2 = options.select;\n        var from = ref$2.from;\n        var to = ref$2.to;\n        var mousewheel = ref$2.mousewheel;\n        var axisClone = clone(axis);\n\n        if (axis.categoriesCount() === 0) {\n            return;\n        }\n\n        this.clean();\n\n        // \"Freeze\" the selection axis position until the next redraw\n        axisClone.box = axis.box;\n\n        this.selection = new Selection(chart, axisClone, {\n            min: min,\n            max: max,\n            from: from || min,\n            to: to || max,\n            mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n            visible: options.visible\n        }, new InstanceObserver(this, {\n            selectStart: '_selectStart',\n            select: '_select',\n            selectEnd: '_selectEnd'\n        }));\n\n        if (options.hint.visible) {\n            this.hint = new NavigatorHint(chart.element, chart.chartService, {\n                min: min,\n                max: max,\n                template: getTemplate(options.hint),\n                format: options.hint.format\n            });\n        }\n    };\n\n    Navigator.prototype.setRange = function setRange () {\n        var plotArea = this.chart._createPlotArea(true);\n        var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n        var ref = axis.roundedRange();\n        var min = ref.min;\n        var max = ref.max;\n\n        var select = this.options.select || {};\n        var from = select.from || min;\n        if (from < min) {\n            from = min;\n        }\n\n        var to = select.to || max;\n        if (to > max) {\n            to = max;\n        }\n\n        this.options.select = deepExtend({}, select, {\n            from: from,\n            to: to\n        });\n\n        this.filterAxes();\n    };\n\n    Navigator.prototype._redrawSelf = function _redrawSelf (silent) {\n        var plotArea = this.chart._plotArea;\n\n        if (plotArea) {\n            plotArea.redraw(last(plotArea.panes), silent);\n        }\n    };\n\n    Navigator.prototype.redrawSlaves = function redrawSlaves () {\n        var chart = this.chart;\n        var plotArea = chart._plotArea;\n        var slavePanes = plotArea.panes.slice(0, -1);\n\n        // Update the original series and categoryAxis before partial refresh.\n        plotArea.srcSeries = chart.options.series;\n        plotArea.options.categoryAxis = chart.options.categoryAxis;\n        plotArea.clearSeriesPointsCache();\n\n        plotArea.redraw(slavePanes);\n    };\n\n    Navigator.prototype._drag = function _drag (e) {\n        var ref = this;\n        var chart = ref.chart;\n        var selection = ref.selection;\n        var coords = chart._eventCoordinates(e.originalEvent);\n        var navigatorAxis = this.mainAxis();\n        var naviRange = navigatorAxis.roundedRange();\n        var inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n        var axis = chart._plotArea.categoryAxis;\n        var range = e.axisRanges[axis.options.name];\n        var select = this.options.select;\n        var duration;\n\n        if (!range || inNavigator || !selection) {\n            return;\n        }\n\n        if (select.from && select.to) {\n            duration = toTime(select.to) - toTime(select.from);\n        } else {\n            duration = toTime(selection.options.to) - toTime(selection.options.from);\n        }\n\n        var from = toDate(limitValue(\n            toTime(range.min),\n            naviRange.min, toTime(naviRange.max) - duration\n        ));\n\n        var to = toDate(limitValue(\n            toTime(from) + duration,\n            toTime(naviRange.min) + duration, naviRange.max\n        ));\n\n        this.options.select = { from: from, to: to };\n\n        if (this.options.liveDrag) {\n            this.filterAxes();\n            this.redrawSlaves();\n        }\n\n        selection.set(from, to);\n\n        this.showHint(from, to);\n    };\n\n    Navigator.prototype._dragEnd = function _dragEnd () {\n        this.filterAxes();\n        this.filter();\n        this.redrawSlaves();\n\n        if (this.hint) {\n            this.hint.hide();\n        }\n    };\n\n    Navigator.prototype.readSelection = function readSelection () {\n        var ref = this;\n        var ref_selection_options = ref.selection.options;\n        var from = ref_selection_options.from;\n        var to = ref_selection_options.to;\n        var select = ref.options.select;\n\n        select.from = from;\n        select.to = to;\n    };\n\n    Navigator.prototype.filterAxes = function filterAxes () {\n        var ref = this;\n        var select = ref.options.select; if ( select === void 0 ) select = { };\n        var chart = ref.chart;\n        var allAxes = chart.options.categoryAxis;\n        var from = select.from;\n        var to = select.to;\n\n        for (var idx = 0; idx < allAxes.length; idx++) {\n            var axis = allAxes[idx];\n            if (axis.pane !== NAVIGATOR_PANE) {\n                axis.min = from;\n                axis.max = to;\n            }\n        }\n    };\n\n    Navigator.prototype.filter = function filter () {\n        var ref = this;\n        var chart = ref.chart;\n        var select = ref.options.select;\n\n        if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n            return;\n        }\n\n        var mainAxis = this.mainAxis();\n        var args = {\n            from: select.from,\n            to: select.to\n        };\n\n        if (mainAxis.options.type !== 'category') {\n            var axisOptions = new DateCategoryAxis(deepExtend({\n                baseUnit: \"fit\"\n            }, chart.options.categoryAxis[0], {\n                categories: [ select.from, select.to ]\n            }), chart.chartService).options;\n\n            args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n            args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n        }\n\n        this.chart.trigger(\"navigatorFilter\", args);\n    };\n\n    Navigator.prototype._zoom = function _zoom (e) {\n        var ref = this;\n        var axis = ref.chart._plotArea.categoryAxis;\n        var selection = ref.selection;\n        var ref_options = ref.options;\n        var select = ref_options.select;\n        var liveDrag = ref_options.liveDrag;\n        var mainAxis = this.mainAxis();\n        var delta = e.delta;\n\n        if (!selection) {\n            return;\n        }\n\n        var fromIx = mainAxis.categoryIndex(selection.options.from);\n        var toIx = mainAxis.categoryIndex(selection.options.to);\n\n        e.originalEvent.preventDefault();\n\n        if (Math.abs(delta) > 1) {\n            delta *= ZOOM_ACCELERATION;\n        }\n\n        if (toIx - fromIx > 1) {\n            selection.expand(delta);\n            this.readSelection();\n        } else {\n            axis.options.min = select.from;\n            select.from = axis.scaleRange(-e.delta).min;\n        }\n\n        if (liveDrag) {\n            this.filterAxes();\n            this.redrawSlaves();\n        }\n\n        selection.set(select.from, select.to);\n\n        this.showHint(this.options.select.from, this.options.select.to);\n    };\n\n    Navigator.prototype._zoomEnd = function _zoomEnd (e) {\n        this._dragEnd(e);\n    };\n\n    Navigator.prototype.showHint = function showHint (from, to) {\n        var plotArea = this.chart._plotArea;\n\n        if (this.hint) {\n            this.hint.show(from, to, plotArea.backgroundBox());\n        }\n    };\n\n    Navigator.prototype._selectStart = function _selectStart (e) {\n        return this.chart._selectStart(e);\n    };\n\n    Navigator.prototype._select = function _select (e) {\n        this.showHint(e.from, e.to);\n\n        return this.chart._select(e);\n    };\n\n    Navigator.prototype._selectEnd = function _selectEnd (e) {\n        if (this.hint) {\n            this.hint.hide();\n        }\n\n        this.readSelection();\n        this.filterAxes();\n        this.filter();\n        this.redrawSlaves();\n\n        return this.chart._selectEnd(e);\n    };\n\n    Navigator.prototype.mainAxis = function mainAxis () {\n        var plotArea = this.chart._plotArea;\n\n        if (plotArea) {\n            return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n        }\n    };\n\n    Navigator.prototype.select = function select (from, to) {\n        var select = this.options.select;\n\n        if (from && to) {\n            select.from = this.parseDate(from);\n            select.to = this.parseDate(to);\n\n            this.filterAxes();\n            this.filter();\n            this.redrawSlaves();\n\n            this.selection.set(from, to);\n        }\n\n        return {\n            from: select.from,\n            to: select.to\n        };\n    };\n\n    Navigator.setup = function setup (options, themeOptions) {\n        if ( options === void 0 ) options = {};\n        if ( themeOptions === void 0 ) themeOptions = {};\n\n        if (options.__navi) {\n            return;\n        }\n        options.__navi = true;\n\n        var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n        var panes = options.panes = [].concat(options.panes);\n        var paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n        if (!naviOptions.visible) {\n            paneOptions.visible = false;\n            paneOptions.height = 0.1;\n        }\n\n        panes.push(paneOptions);\n\n        Navigator.attachAxes(options, naviOptions);\n        Navigator.attachSeries(options, naviOptions, themeOptions);\n    };\n\n    Navigator.attachAxes = function attachAxes (options, naviOptions) {\n        var series = naviOptions.series || [];\n        var categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n        var valueAxes = options.valueAxis = [].concat(options.valueAxis);\n\n        var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n        var justifyAxis = equallySpacedSeries.length === 0;\n\n        var base = deepExtend({\n            type: \"date\",\n            pane: NAVIGATOR_PANE,\n            roundToBaseUnit: !justifyAxis,\n            justified: justifyAxis,\n            _collapse: false,\n            majorTicks: { visible: true },\n            tooltip: { visible: false },\n            labels: { step: 1 },\n            autoBind: naviOptions.autoBindElements,\n            autoBaseUnitSteps: {\n                minutes: [ 1 ],\n                hours: [ 1, 2 ],\n                days: [ 1, 2 ],\n                weeks: [],\n                months: [ 1 ],\n                years: [ 1 ]\n            }\n        });\n        var user = naviOptions.categoryAxis;\n\n        categoryAxes.push(\n            deepExtend({}, base, {\n                maxDateGroups: 200\n            }, user, {\n                name: NAVIGATOR_AXIS,\n                title: null,\n                baseUnit: \"fit\",\n                baseUnitStep: \"auto\",\n                labels: { visible: false },\n                majorTicks: { visible: false }\n            }), deepExtend({}, base, user, {\n                name: NAVIGATOR_AXIS + \"_labels\",\n                maxDateGroups: 20,\n                baseUnitStep: \"auto\",\n                labels: { position: \"\" },\n                plotBands: [],\n                autoBaseUnitSteps: {\n                    minutes: []\n                },\n                _overlap: true\n            }), deepExtend({}, base, user, {\n                name: NAVIGATOR_AXIS + \"_ticks\",\n                maxDateGroups: 200,\n                majorTicks: {\n                    width: 0.5\n                },\n                plotBands: [],\n                title: null,\n                labels: { visible: false, mirror: true },\n                _overlap: true\n            })\n        );\n\n        valueAxes.push(deepExtend({\n            name: NAVIGATOR_AXIS,\n            pane: NAVIGATOR_PANE,\n            majorGridLines: {\n                visible: false\n            },\n            visible: false\n        }, naviOptions.valueAxis));\n    };\n\n    Navigator.attachSeries = function attachSeries (options, naviOptions, themeOptions) {\n        var series = options.series = options.series || [];\n        var navigatorSeries = [].concat(naviOptions.series || []);\n        var seriesColors = themeOptions.seriesColors;\n        var defaults = naviOptions.seriesDefaults;\n\n        for (var idx = 0; idx < navigatorSeries.length; idx++) {\n            series.push(\n                deepExtend({\n                    color: seriesColors[idx % seriesColors.length],\n                    categoryField: naviOptions.dateField,\n                    visibleInLegend: false,\n                    tooltip: {\n                        visible: false\n                    }\n                }, defaults, navigatorSeries[idx], {\n                    axis: NAVIGATOR_AXIS,\n                    categoryAxis: NAVIGATOR_AXIS,\n                    autoBind: naviOptions.autoBindElements\n                })\n            );\n        }\n    };\n\n    return Navigator;\n}(Class));\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n    ClonedObject.prototype = obj;\n    return new ClonedObject();\n}\n\nexport default Navigator;\n","var NAVIGATOR_PANE = \"_navigator\";\nvar NAVIGATOR_AXIS = NAVIGATOR_PANE;\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE };","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar AUTO_CATEGORY_WIDTH = 28;\n\nvar StockChart = (function (Chart) {\n    function StockChart () {\n        Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) StockChart.__proto__ = Chart;\n    StockChart.prototype = Object.create( Chart && Chart.prototype );\n    StockChart.prototype.constructor = StockChart;\n\n    StockChart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n        var width = elementSize(this.element).width || DEFAULT_WIDTH;\n        var theme = themeOptions;\n\n        var stockDefaults = {\n            seriesDefaults: {\n                categoryField: options.dateField\n            },\n            axisDefaults: {\n                categoryAxis: {\n                    name: \"default\",\n                    majorGridLines: {\n                        visible: false\n                    },\n                    labels: {\n                        step: 2\n                    },\n                    majorTicks: {\n                        visible: false\n                    },\n                    maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n                }\n            }\n        };\n\n        if (theme) {\n            theme = deepExtend({}, theme, stockDefaults);\n        }\n\n        Navigator.setup(options, theme);\n\n        Chart.prototype.applyDefaults.call(this, options, theme);\n    };\n\n    StockChart.prototype._setElementClass = function _setElementClass (element) {\n        addClass(element, 'k-chart k-stockchart');\n    };\n\n    StockChart.prototype.setOptions = function setOptions (options) {\n        this.destroyNavigator();\n        Chart.prototype.setOptions.call(this, options);\n    };\n\n    StockChart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        var transitions = this.options.transitions;\n\n        this.options.transitions = false;\n        this._fullRedraw();\n        this.options.transitions = transitions;\n    };\n\n    StockChart.prototype._resize = function _resize () {\n        this.noTransitionsRedraw();\n    };\n\n    StockChart.prototype._redraw = function _redraw () {\n        var navigator = this.navigator;\n\n        if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n            navigator.redrawSlaves();\n        } else {\n            this._fullRedraw();\n        }\n    };\n\n    StockChart.prototype._dirty = function _dirty () {\n        var options = this.options;\n        var series = [].concat(options.series, options.navigator.series);\n        var seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n        var dirty = this._seriesCount !== seriesCount;\n        this._seriesCount = seriesCount;\n\n        return dirty;\n    };\n\n    StockChart.prototype._fullRedraw = function _fullRedraw () {\n        var navigator = this.navigator;\n\n        if (!navigator) {\n            navigator = this.navigator = new Navigator(this);\n            this.trigger(\"navigatorCreated\", { navigator: navigator });\n        }\n\n        navigator.clean();\n        navigator.setRange();\n\n        Chart.prototype._redraw.call(this);\n\n        navigator.initSelection();\n    };\n\n    StockChart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords) {\n        var plotArea = this._plotArea;\n        var pane = plotArea.paneByPoint(coords);\n\n        if (pane && pane.options.name === NAVIGATOR_PANE) {\n            this._unsetActivePoint();\n        } else {\n            Chart.prototype._trackSharedTooltip.call(this, coords);\n        }\n    };\n\n    StockChart.prototype.bindCategories = function bindCategories () {\n        Chart.prototype.bindCategories.call(this);\n        this.copyNavigatorCategories();\n    };\n\n    StockChart.prototype.copyNavigatorCategories = function copyNavigatorCategories () {\n        var definitions = [].concat(this.options.categoryAxis);\n        var categories;\n\n        for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n            var axis = definitions[axisIx];\n            if (axis.name === NAVIGATOR_AXIS) {\n                categories = axis.categories;\n            } else if (categories && axis.pane === NAVIGATOR_PANE) {\n                axis.categories = categories;\n            }\n        }\n    };\n\n    StockChart.prototype.destroyNavigator = function destroyNavigator () {\n        if (this.navigator) {\n            this.navigator.destroy();\n            this.navigator = null;\n        }\n    };\n\n    StockChart.prototype.destroy = function destroy () {\n        this.destroyNavigator();\n        Chart.prototype.destroy.call(this);\n    };\n\n    StockChart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n        var coords = this._eventCoordinates(e);\n        var pane = this._plotArea.paneByPoint(coords);\n\n        return Chart.prototype._stopChartHandlers.call(this, e) || (pane && pane.options.name === NAVIGATOR_PANE);\n    };\n\n    StockChart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n        if (!this._dragZoomEnabled) {\n            this.element.style.touchAction = \"none\";\n\n            this._dragZoomEnabled = true;\n        }\n    };\n\n    return StockChart;\n}(Chart));\n\nsetDefaultOptions(StockChart, {\n    dateField: \"date\",\n    axisDefaults: {\n        categoryAxis: {\n            type: \"date\",\n            baseUnit: \"fit\",\n            justified: true\n        },\n        valueAxis: {\n            narrowRange: true,\n            labels: {\n                format: \"C\"\n            }\n        }\n    },\n    navigator: {\n        select: {},\n        seriesDefaults: {\n            markers: {\n                visible: false\n            },\n            tooltip: {\n                visible: true\n            },\n            line: {\n                width: 2\n            }\n        },\n        hint: {},\n        visible: true\n    },\n    tooltip: {\n        visible: true\n    },\n    legend: {\n        visible: false\n    }\n});\n\nexport default StockChart;","var ANGULAR_SPEED = 150;\nvar LINEAR_SPEED = 250;\nvar ARROW = \"arrow\";\nvar ARROW_POINTER = \"arrowPointer\";\nvar BAR_POINTER = \"barPointer\";\nvar DEFAULT_HEIGHT = 200;\nvar DEFAULT_LINE_WIDTH = 0.5;\nvar DEFAULT_WIDTH = 200;\nvar DEGREE = Math.PI / 180;\nvar INSIDE = \"inside\";\nvar LINEAR = \"linear\";\nvar OUTSIDE = \"outside\";\nvar RADIAL_POINTER = \"radialPointer\";\nvar RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n    ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n    DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n    DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n    var origin = bbox.getOrigin();\n    var size = bbox.getSize();\n    var spacing = getSpacing(value);\n\n    bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n    bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n    return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\nvar Text = drawing.Text;\n\nexport default function buildLabelElement(label, options) {\n    var labelBox = label.box;\n    var textBox = label.children[0].box;\n    var border = options.border || {};\n    var background = options.background || \"\";\n\n    var wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n        stroke: {}\n    });\n\n    var text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n        font: options.font,\n        fill: { color: options.color }\n    });\n\n    var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n    var styleBox = Path.fromRect(styleGeometry, {\n        stroke: {\n            color: border.width ? border.color : \"\",\n            width: border.width,\n            opacity: border.opacity,\n            dashType: border.dashType,\n            lineJoin: \"round\",\n            lineCap: \"round\"\n        },\n        fill: {\n            color: background\n        }\n    });\n\n    var elements = new Group();\n    elements.append(wrapper);\n    elements.append(styleBox);\n    elements.append(text);\n\n    return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n    var from = defined(range.from) ? range.from : MIN_VALUE;\n    var to = defined(range.to) ? range.to : MAX_VALUE;\n\n    range.from = Math.max(Math.min(to, from), min);\n    range.to = Math.min(Math.max(to, from), max);\n\n    return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n    var spacing = getSpacing(value);\n\n    spacing.left = -spacing.left; spacing.top = -spacing.top;\n    spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n    return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nvar DEFAULT_MARGIN = 5;\nvar Path = drawing.Path;\nvar Surface = drawing.Surface;\n\nvar Gauge = (function (Class) {\n    function Gauge(element, userOptions, theme, context) {\n        if ( context === void 0 ) context = {};\n\n        Class.call(this);\n\n        this.element = element;\n        this.theme = theme;\n        this.contextService = new ChartService(this, context);\n        this._originalOptions = deepExtend({}, this.options, userOptions);\n        this.options = deepExtend({}, this._originalOptions);\n        this._initTheme(theme);\n\n        this.redraw();\n    }\n\n    if ( Class ) Gauge.__proto__ = Class;\n    Gauge.prototype = Object.create( Class && Class.prototype );\n    Gauge.prototype.constructor = Gauge;\n\n    Gauge.prototype.destroy = function destroy () {\n        if (this.surface) {\n            this.surface.destroy();\n            this.surface = null;\n        }\n\n        delete this.element;\n        delete this.surfaceElement;\n    };\n\n    Gauge.prototype.value = function value (pointerValue) {\n        var pointer = this.pointers[0];\n\n        if (arguments.length === 0) {\n            return pointer.value();\n        }\n\n        pointer.value(pointerValue);\n        this._setValueOptions(pointerValue);\n    };\n\n    Gauge.prototype._draw = function _draw () {\n        var surface = this.surface;\n\n        surface.clear();\n        surface.draw(this._visuals);\n    };\n\n    Gauge.prototype.exportVisual = function exportVisual () {\n        return this._visuals;\n    };\n\n    Gauge.prototype.allValues = function allValues (values) {\n        var pointers = this.pointers;\n        var allValues = [];\n\n        if (arguments.length === 0) {\n            for (var i = 0; i < pointers.length; i++) {\n                allValues.push(pointers[i].value());\n            }\n\n            return allValues;\n        }\n\n        if (isArray(values)) {\n            for (var i$1 = 0; i$1 < values.length; i$1++) {\n                if (isNumber(values[i$1])) {\n                    pointers[i$1].value(values[i$1]);\n                }\n            }\n        }\n\n        this._setValueOptions(values);\n    };\n\n    Gauge.prototype._setValueOptions = function _setValueOptions (values) {\n        var pointers = [].concat(this.options.pointer);\n        var arrayValues = [].concat(values);\n\n        for (var i = 0; i < arrayValues.length; i++) {\n            pointers[i].value = arrayValues[i];\n        }\n    };\n\n    Gauge.prototype.resize = function resize () {\n        this.noTransitionsRedraw();\n    };\n\n    Gauge.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n        var transitions = this.options.transitions;\n\n        this._toggleTransitions(false);\n\n        this.redraw();\n\n        this._toggleTransitions(transitions);\n    };\n\n    Gauge.prototype.redraw = function redraw () {\n        var size = this._surfaceSize();\n        var wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n        this._initSurface();\n\n        this.gaugeArea = this._createGaugeArea();\n\n        this._createModel();\n\n        var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n        this.reflow(bbox);\n    };\n\n    Gauge.prototype.setOptions = function setOptions (options, theme) {\n        this._originalOptions = deepExtend(this._originalOptions, options);\n        this.options = deepExtend({}, this._originalOptions);\n\n        this._initTheme(theme);\n\n        this.redraw();\n    };\n\n    Gauge.prototype.setDirection = function setDirection (rtl) {\n        this.contextService.rtl = Boolean(rtl);\n        if (this.surface && this.surface.type === 'svg') {\n            this.surface.destroy();\n            this.surface = null;\n        }\n    };\n\n    Gauge.prototype.setIntlService = function setIntlService (intl) {\n        this.contextService.intl = intl;\n    };\n\n    Gauge.prototype._initTheme = function _initTheme (theme) {\n        var currentTheme = theme || this.theme || {};\n        this.theme = currentTheme;\n\n        this.options = deepExtend({}, currentTheme, this.options);\n        var options = this.options;\n        var pointer = options.pointer;\n\n        if (isArray(pointer)) {\n            var pointers = [];\n            for (var i = 0; i < pointer.length; i++) {\n                pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n            }\n            options.pointer = pointers;\n        }\n    };\n\n    Gauge.prototype._createGaugeArea = function _createGaugeArea () {\n        var options = this.options.gaugeArea;\n        var size = this.surface.size();\n        var border = options.border || {};\n        var areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n        this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n        if (border.width > 0) {\n            areaGeometry = unpad(areaGeometry, border.width);\n        }\n\n        var gaugeArea = Path.fromRect(areaGeometry, {\n            stroke: {\n                color: border.width ? border.color : \"\",\n                width: border.width,\n                dashType: border.dashType,\n                lineJoin: \"round\",\n                lineCap: \"round\"\n            },\n            fill: {\n                color: options.background\n            }\n        });\n\n        return gaugeArea;\n    };\n\n    Gauge.prototype._initSurface = function _initSurface () {\n        var ref = this;\n        var options = ref.options;\n        var surface = ref.surface;\n        var element = this._surfaceElement();\n        var size = this._surfaceSize();\n\n        elementSize(element, size);\n\n        if (!surface || surface.options.type !== options.renderAs) {\n            if (surface) {\n                surface.destroy();\n            }\n\n            this.surface = Surface.create(element, {\n                type: options.renderAs\n            });\n        } else {\n            this.surface.clear();\n            this.surface.resize();\n        }\n    };\n\n    Gauge.prototype._surfaceSize = function _surfaceSize () {\n        var options = this.options;\n        var size = this._getSize();\n\n        if (options.gaugeArea) {\n            deepExtend(size, options.gaugeArea);\n        }\n\n        return size;\n    };\n\n    Gauge.prototype._surfaceElement = function _surfaceElement () {\n        if (!this.surfaceElement) {\n            this.surfaceElement = document.createElement('div');\n            this.element.appendChild(this.surfaceElement);\n        }\n\n        return this.surfaceElement;\n    };\n\n    Gauge.prototype.getSize = function getSize () {\n        return this._getSize();\n    };\n\n    Gauge.prototype._getSize = function _getSize () {\n        var element = this.element;\n        var defaultSize = this._defaultSize();\n        var width = element.offsetWidth;\n        var height = element.offsetHeight;\n\n        if (!width) {\n            width = defaultSize.width;\n        }\n\n        if (!height) {\n            height = defaultSize.height;\n        }\n\n        return { width: width, height: height };\n    };\n\n    Gauge.prototype._defaultSize = function _defaultSize () {\n        return {\n            width: DEFAULT_WIDTH,\n            height: DEFAULT_HEIGHT\n        };\n    };\n\n    Gauge.prototype._toggleTransitions = function _toggleTransitions (value) {\n        var this$1 = this;\n\n        this.options.transitions = value;\n        for (var i = 0; i < this.pointers.length; i++) {\n            this$1.pointers[i].options.animation.transitions = value;\n        }\n    };\n\n    return Gauge;\n}(Class));\n\nsetDefaultOptions(Gauge, {\n    plotArea: {},\n    theme: \"default\",\n    renderAs: \"\",\n    pointer: {},\n    scale: {},\n    gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nvar Path = drawing.Path;\nvar Group = drawing.Group;\nvar Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n    var position = tickRenderOptions.position;\n    var tickX = tickRenderOptions.tickX;\n    var tickY = tickRenderOptions.tickY;\n    var start, end;\n\n    if (tickRenderOptions.vertical) {\n        start = new Point(tickX, position);\n        end = new Point(tickX + tickOptions.size, position);\n    } else {\n        start = new Point(position, tickY);\n        end = new Point(position, tickY + tickOptions.size);\n    }\n\n    var tickPath = new Path({\n        stroke: {\n            color: tickOptions.color,\n            width: tickOptions.width\n        }\n    }).moveTo(start).lineTo(end);\n\n    return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n    var count = tickPositions.length;\n\n    if (tickOptions.visible) {\n        var mirror = tickRenderOptions.mirror;\n        var lineBox = tickRenderOptions.lineBox;\n        for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n            if (i % tickOptions.skipUnit === 0) {\n                continue;\n            }\n\n            tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n            tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n            tickRenderOptions.position = tickPositions[i];\n\n            tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n        }\n    }\n}\n\nvar LinearScale = (function (NumericAxis) {\n    function LinearScale(options, service) {\n        var scaleOptions = options || {};\n        if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n            scaleOptions = Object.assign({}, scaleOptions, {\n                reverse: true\n            });\n        }\n\n        NumericAxis.call(this, 0, 1, scaleOptions, service);\n\n        this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n    }\n\n    if ( NumericAxis ) LinearScale.__proto__ = NumericAxis;\n    LinearScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    LinearScale.prototype.constructor = LinearScale;\n\n    LinearScale.prototype.initUserOptions = function initUserOptions (options) {\n        var scaleOptions = deepExtend({}, this.options, options);\n        scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n        scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n        return scaleOptions;\n    };\n\n    LinearScale.prototype.initFields = function initFields () {\n    };\n\n    LinearScale.prototype.render = function render () {\n        var elements = this.elements = new Group();\n        var labels = this.renderLabels();\n        var scaleLine = this.renderLine();\n        var scaleTicks = this.renderTicks();\n        var ranges = this.renderRanges();\n\n        elements.append(scaleLine, labels, scaleTicks, ranges);\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderRanges = function renderRanges () {\n        var this$1 = this;\n\n        var options = this.options;\n        var min = options.min;\n        var max = options.max;\n        var vertical = options.vertical;\n        var mirror = options.labels.mirror;\n        var ranges = options.ranges || [];\n        var elements = new Group();\n        var count = ranges.length;\n        var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n        for (var i = 0; i < count; i++) {\n            var range = getRange(ranges[i], min, max);\n            var slot = this$1.getSlot(range.from, range.to);\n            var slotX = vertical ? this$1.lineBox() : slot;\n            var slotY = vertical ? slot : this$1.lineBox();\n            if (vertical) {\n                slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n            } else {\n                slotY.y2 += rangeSize * (mirror ? -1 : 1);\n            }\n\n            elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n                fill: { color: range.color, opacity: range.opacity },\n                stroke: { }\n            }));\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderLabels = function renderLabels () {\n        var ref = this;\n        var labels = ref.labels;\n        var options = ref.options;\n        var elements = new Group();\n\n        for (var i = 0; i < labels.length; i++) {\n            elements.append(buildLabelElement(labels[i], options.labels));\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderLine = function renderLine () {\n        var line = this.options.line;\n        var lineBox = this.lineBox();\n        var elements = new Group();\n\n        if (line.width > 0 && line.visible) {\n            var linePath = new Path({\n                stroke: {\n                    color: line.color,\n                    dashType: line.dashType,\n                    width: line.width\n                }\n            });\n\n            linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n            elements.append(linePath);\n        }\n\n        return elements;\n    };\n\n    LinearScale.prototype.renderTicks = function renderTicks$1 () {\n        var ticks = new Group();\n        var options = this.options;\n        var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n        var tickRenderOptions = {\n            vertical: options.vertical,\n            mirror: options.labels.mirror,\n            lineBox: this.lineBox()\n        };\n\n        renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n        renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n            skipUnit: majorUnit / options.minorUnit\n        }, options.minorTicks));\n\n        return ticks;\n    };\n\n    return LinearScale;\n}(NumericAxis));\n\nsetDefaultOptions(LinearScale, {\n    min: 0,\n    max: 50,\n\n    majorTicks: {\n        size: 15,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    minorTicks: {\n        size: 10,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    line: {\n        width: DEFAULT_LINE_WIDTH\n    },\n\n    labels: {\n        position: INSIDE,\n        padding: 2\n    },\n    mirror: false,\n    _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nvar Pointer = (function (Class) {\n    function Pointer(scale, userOptions) {\n        Class.call(this);\n\n        var ref = scale.options;\n        var min = ref.min;\n        var max = ref.max;\n        var options = this.options = deepExtend({}, this.options, userOptions);\n\n        options.fill = options.color;\n\n        this.scale = scale;\n\n        if (defined(options.value)) {\n            options.value = limitValue(options.value, min, max);\n        } else {\n            options.value = min;\n        }\n    }\n\n    if ( Class ) Pointer.__proto__ = Class;\n    Pointer.prototype = Object.create( Class && Class.prototype );\n    Pointer.prototype.constructor = Pointer;\n\n    Pointer.prototype.value = function value (newValue) {\n        var options = this.options;\n        var value = options.value;\n\n        if (arguments.length === 0) {\n            return value;\n        }\n\n        var ref = this.scale.options;\n        var min = ref.min;\n        var max = ref.max;\n\n        options._oldValue = defined(options._oldValue) ? options.value : min;\n        options.value = limitValue(newValue, min, max);\n\n        if (this.elements) {\n            this.repaint();\n        }\n    };\n\n    return Pointer;\n}(Class));\n\nsetDefaultOptions(Pointer, {\n    color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nvar LinearPointer = (function (Pointer) {\n    function LinearPointer(scale, options) {\n        Pointer.call(this, scale, options);\n\n        this.options = deepExtend({\n            track: {\n                visible: defined(options.track)\n            }\n        }, this.options);\n    }\n\n    if ( Pointer ) LinearPointer.__proto__ = Pointer;\n    LinearPointer.prototype = Object.create( Pointer && Pointer.prototype );\n    LinearPointer.prototype.constructor = LinearPointer;\n\n    LinearPointer.prototype.reflow = function reflow () {\n        var ref = this;\n        var options = ref.options;\n        var scale = ref.scale;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var scaleLine = scale.lineBox();\n        var trackSize = options.track.size || options.size;\n        var pointerHalfSize = options.size / 2;\n        var margin = getSpacing(options.margin);\n        var space = vertical ?\n                 margin[mirror ? \"left\" : \"right\"] :\n                 margin[mirror ? \"bottom\" : \"top\"];\n        var pointerBox, pointerRangeBox, trackBox;\n\n        space = mirror ? -space : space;\n\n        if (vertical) {\n            trackBox = new Box(\n                scaleLine.x1 + space, scaleLine.y1,\n                scaleLine.x1 + space, scaleLine.y2);\n\n            if (mirror) {\n                trackBox.x1 -= trackSize;\n            } else {\n                trackBox.x2 += trackSize;\n            }\n\n            if (options.shape !== BAR_POINTER) {\n                pointerRangeBox = new Box(\n                    scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n                    scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n                );\n                pointerBox = pointerRangeBox;\n            }\n        } else {\n            trackBox = new Box(\n                scaleLine.x1, scaleLine.y1 - space,\n                scaleLine.x2, scaleLine.y1 - space);\n\n            if (mirror) {\n                trackBox.y2 += trackSize;\n            } else {\n                trackBox.y1 -= trackSize;\n            }\n\n            if (options.shape !== BAR_POINTER) {\n                pointerRangeBox = new Box(\n                    scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n                    scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n                );\n                pointerBox = pointerRangeBox;\n            }\n        }\n\n        this.trackBox = trackBox;\n        this.pointerRangeBox = pointerRangeBox;\n        this.box = pointerBox || trackBox.clone().pad(options.border.width);\n    };\n\n    LinearPointer.prototype.getElementOptions = function getElementOptions () {\n        var options = this.options;\n\n        return {\n            fill: {\n                color: options.color,\n                opacity: options.opacity\n            },\n            stroke: defined(options.border) ? {\n                color: options.border.width ? options.border.color || options.color : \"\",\n                width: options.border.width,\n                dashType: options.border.dashType,\n                opacity: options.opacity\n            } : null\n        };\n    };\n\n    LinearPointer.prototype._margin = function _margin () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var margin = getSpacing(options.margin);\n\n        var space = vertical ?\n            margin[mirror ? \"left\" : \"right\"] :\n            margin[mirror ? \"bottom\" : \"top\"];\n\n        return space;\n    };\n\n    return LinearPointer;\n}(Pointer));\n\nsetDefaultOptions(LinearPointer, {\n    shape: BAR_POINTER,\n\n    track: {\n        border: {\n            width: 1\n        }\n    },\n\n    color: BLACK,\n    border: {\n        width: 1\n    },\n    opacity: 1,\n\n    margin: getSpacing(3),\n    animation: {\n        type: BAR_POINTER\n    },\n    visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar ArrowLinearPointerAnimation = (function (superclass) {\n    function ArrowLinearPointerAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) ArrowLinearPointerAnimation.__proto__ = superclass;\n    ArrowLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    ArrowLinearPointerAnimation.prototype.constructor = ArrowLinearPointerAnimation;\n\n    ArrowLinearPointerAnimation.prototype.setup = function setup () {\n        var options = this.options;\n        var margin = options.margin;\n        var from = options.from;\n        var to = options.to;\n        var vertical = options.vertical;\n        var axis = vertical ? \"x1\" : \"y1\";\n\n        if (options.mirror === vertical) {\n            from[axis] -= margin; to[axis] -= margin;\n        } else {\n            from[axis] += margin; to[axis] += margin;\n        }\n\n        var fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n        var toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n        if (options.duration !== 0) {\n            options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n        }\n    };\n\n    ArrowLinearPointerAnimation.prototype.step = function step (pos) {\n        var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n        var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n        this.element.transform(geometry.transform().translate(translateX, translateY));\n    };\n\n    return ArrowLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n    easing: LINEAR,\n    duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nvar Point = geo.Point;\nvar Path = drawing.Path;\n\nvar ArrowLinearPointer = (function (LinearPointer) {\n    function ArrowLinearPointer(scale, options) {\n        LinearPointer.call(this, scale, options);\n\n        if (!defined(this.options.size)) {\n            this.options.size = this.scale.options.majorTicks.size * 0.6;\n        }\n    }\n\n    if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer;\n    ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n    ArrowLinearPointer.prototype.constructor = ArrowLinearPointer;\n\n    ArrowLinearPointer.prototype.pointerShape = function pointerShape () {\n        var ref = this;\n        var scale = ref.scale;\n        var size = ref.options.size;\n        var halfSize = size / 2;\n        var sign = (scale.options.mirror ? -1 : 1);\n        var shape;\n\n        if (scale.options.vertical) {\n            shape = [\n                new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n            ];\n        } else {\n            shape = [\n                new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n            ];\n        }\n\n        return shape;\n    };\n\n    ArrowLinearPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n            vertical: scale.options.vertical,\n            mirror: scale.options.mirror,\n            margin: this._margin(options.margin),\n            from: scale.getSlot(options._oldValue),\n            to: scale.getSlot(options.value)\n        }));\n\n        if (options.animation.transitions === false) {\n            animation.options.duration = 0;\n        }\n\n        animation.setup();\n        animation.play();\n    };\n\n    ArrowLinearPointer.prototype.render = function render () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var elementOptions = this.getElementOptions();\n        var shape = this.pointerShape(options.value);\n\n        options.animation.type = ARROW_POINTER;\n\n        var elements = new Path({\n            stroke: elementOptions.stroke,\n            fill: elementOptions.fill\n        }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n        var slot = scale.getSlot(options.value);\n        elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n        this.elements = elements;\n\n        return elements;\n    };\n\n    return ArrowLinearPointer;\n}(LinearPointer));\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar BarLinearPointerAnimation = (function (superclass) {\n    function BarLinearPointerAnimation () {\n        superclass.apply(this, arguments);\n    }\n\n    if ( superclass ) BarLinearPointerAnimation.__proto__ = superclass;\n    BarLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    BarLinearPointerAnimation.prototype.constructor = BarLinearPointerAnimation;\n\n    BarLinearPointerAnimation.prototype.setup = function setup () {\n        var options = this.options;\n        var axis = this.axis = options.vertical ? Y : X;\n        var to = this.to = options.newPoints[0][axis];\n        var from = this.from = options.oldPoints[0][axis];\n\n        if (options.duration !== 0) {\n            options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n        }\n\n        this._set(from);\n    };\n\n    BarLinearPointerAnimation.prototype.step = function step (pos) {\n        var value = interpolateValue(this.from, this.to, pos);\n        this._set(value);\n    };\n\n    BarLinearPointerAnimation.prototype._set = function _set (value) {\n        var setter = \"set\" + this.axis.toUpperCase();\n        var points = this.options.newPoints;\n\n        points[0][setter](value);\n        points[1][setter](value);\n    };\n\n    return BarLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n    easing: LINEAR,\n    speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar BarLinearPointer = (function (LinearPointer) {\n    function BarLinearPointer(scale, options) {\n        LinearPointer.call(this, scale, options);\n\n        if (!defined(this.options.size)) {\n            this.options.size = this.scale.options.majorTicks.size * 0.3;\n        }\n    }\n\n    if ( LinearPointer ) BarLinearPointer.__proto__ = LinearPointer;\n    BarLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n    BarLinearPointer.prototype.constructor = BarLinearPointer;\n\n    BarLinearPointer.prototype.pointerShape = function pointerShape (value) {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var ref$1 = scale.options;\n        var mirror = ref$1.mirror;\n        var vertical = ref$1.vertical;\n        var dir = mirror === vertical ? -1 : 1;\n        var size = options.size * dir;\n        var minSlot = scale.getSlot(scale.options.min);\n        var slot = scale.getSlot(value);\n        var axis = vertical ? Y : X;\n        var sizeAxis = vertical ? X : Y;\n        var margin = this._margin() * dir;\n\n        var p1 = new geo.Point();\n        p1[axis] = minSlot[axis + \"1\"];\n        p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n        var p2 = new geo.Point();\n        p2[axis] = slot[axis + \"1\"];\n        p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n        if (vertical) {\n            p1.translate(margin, 0);\n            p2.translate(margin, 0);\n        } else {\n            p1.translate(0, margin);\n            p2.translate(0, margin);\n        }\n\n        var p3 = p2.clone();\n        var p4 = p1.clone();\n\n        if (vertical) {\n            p3.translate(size, 0);\n            p4.translate(size, 0);\n        } else {\n            p3.translate(0, size);\n            p4.translate(0, size);\n        }\n\n        return [ p1, p2, p3, p4 ];\n    };\n\n    BarLinearPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var shape = this.pointerShape(options.value);\n        var pointerPath = this.pointerPath;\n        var oldShape = this.pointerShape(options._oldValue);\n\n        pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n        var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n            reverse: scale.options.reverse,\n            vertical: scale.options.vertical,\n            oldPoints: [ oldShape[1], oldShape[2] ],\n            newPoints: [ shape[1], shape[2] ]\n        }));\n\n        if (options.animation.transitions === false) {\n            animation.options.duration = 0;\n        }\n\n        animation.setup();\n        animation.play();\n    };\n\n    BarLinearPointer.prototype.render = function render () {\n        var group = new Group();\n        var elementOptions = this.getElementOptions();\n\n        if (this.options.track.visible) {\n            group.append(this.renderTrack());\n        }\n\n        var pointer = this.pointerPath = new Path({\n            stroke: elementOptions.stroke,\n            fill: elementOptions.fill\n        });\n\n        group.append(pointer);\n\n        this.elements = group;\n\n        return group;\n    };\n\n    BarLinearPointer.prototype.renderTrack = function renderTrack () {\n        var trackOptions = this.options.track;\n        var border = trackOptions.border || {};\n        var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n        return new Path.fromRect(trackBox.toRect(), {\n            fill: {\n                color: trackOptions.color,\n                opacity: trackOptions.opacity\n            },\n            stroke: {\n                color: border.width ? border.color || trackOptions.color : \"\",\n                width: border.width,\n                dashType: border.dashType\n            }\n        });\n    };\n\n    return BarLinearPointer;\n}(LinearPointer));\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nvar DEFAULT_MIN_WIDTH = 60;\nvar DEFAULT_MIN_HEIGHT = 60;\n\nvar Group = drawing.Group;\n\nvar LinearGauge = (function (Gauge) {\n    function LinearGauge () {\n        Gauge.apply(this, arguments);\n    }\n\n    if ( Gauge ) LinearGauge.__proto__ = Gauge;\n    LinearGauge.prototype = Object.create( Gauge && Gauge.prototype );\n    LinearGauge.prototype.constructor = LinearGauge;\n\n    LinearGauge.prototype.reflow = function reflow (bbox) {\n        var pointers = this.pointers;\n        var bboxX = bbox.origin.x;\n        var bboxY = bbox.origin.y;\n\n        var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n        this.scale.reflow(box);\n        this._shrinkScaleWidth(box);\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow();\n        }\n\n        this.bbox = this._getBox(box);\n        this._alignElements();\n        this._shrinkElements();\n        this._buildVisual();\n        this._draw();\n    };\n\n    LinearGauge.prototype._buildVisual = function _buildVisual () {\n        var visuals = new Group();\n        var scaleElements = this.scale.render();\n        var pointers = this.pointers;\n\n        visuals.append(this.gaugeArea);\n        visuals.append(scaleElements);\n\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            visuals.append(current.render());\n            current.value(current.options.value);\n        }\n\n        this._visuals = visuals;\n    };\n\n    LinearGauge.prototype._createModel = function _createModel () {\n        var this$1 = this;\n\n        var options = this.options;\n        var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n        this.pointers = [];\n\n        var pointers = options.pointer;\n        pointers = isArray(pointers) ? pointers : [ pointers ];\n\n        for (var i = 0; i < pointers.length; i++) {\n            var currentOptions = deepExtend({}, pointers[i], {\n                animation: {\n                    transitions: options.transitions\n                }\n            });\n            var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n            this$1.pointers.push(new pointerType(scale, currentOptions));\n        }\n    };\n\n    LinearGauge.prototype._defaultSize = function _defaultSize () {\n        var vertical = this.options.scale.vertical;\n\n        return {\n            width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n            height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n        };\n    };\n\n    LinearGauge.prototype._getBox = function _getBox (box) {\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var boxCenter = box.center();\n        var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n        for (var i = 0; i < pointers.length; i++) {\n            plotAreaBox.wrap(pointers[i].box.clone());\n        }\n\n        var size;\n        if (scale.options.vertical) {\n            size = plotAreaBox.width() / 2;\n            plotAreaBox = new Box(\n                boxCenter.x - size, box.y1,\n                boxCenter.x + size, box.y2\n            );\n        } else {\n            size = plotAreaBox.height() / 2;\n            plotAreaBox = new Box(\n                box.x1, boxCenter.y - size,\n                box.x2, boxCenter.y + size\n            );\n        }\n\n        return plotAreaBox;\n    };\n\n    LinearGauge.prototype._alignElements = function _alignElements () {\n        var this$1 = this;\n\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var scaleBox = scale.box;\n        var box = pointers[0].box.clone().wrap(scale.box);\n        var plotAreaBox = this.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            box.wrap(pointers[i].box.clone());\n        }\n\n        var diff;\n        if (scale.options.vertical) {\n            diff = plotAreaBox.center().x - box.center().x;\n            scale.reflow(new Box(\n                scaleBox.x1 + diff, plotAreaBox.y1,\n                scaleBox.x2 + diff, plotAreaBox.y2\n            ));\n        } else {\n            diff = plotAreaBox.center().y - box.center().y;\n            scale.reflow(new Box(\n                scaleBox.x1, scaleBox.y1 + diff,\n                scaleBox.x2, scaleBox.y2 + diff\n            ));\n        }\n\n        for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n            pointers[i$1].reflow(this$1.bbox);\n        }\n    };\n\n    LinearGauge.prototype._shrinkScaleWidth = function _shrinkScaleWidth (bbox) {\n        var ref = this;\n        var scale = ref.scale;\n        if (!scale.options.vertical) {\n            var overflow = scale.contentBox().width() - bbox.width();\n            if (overflow > 0) {\n                scale.box.shrink(overflow, 0);\n                scale.box.alignTo(bbox, 'center');\n                scale.reflow(scale.box);\n            }\n        }\n    };\n\n    LinearGauge.prototype._shrinkElements = function _shrinkElements () {\n        var this$1 = this;\n\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n        var scaleBox = scale.box.clone();\n        var pos = scale.options.vertical ? \"y\" : \"x\";\n        var pointerBox = pointers[0].box;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointerBox.wrap(pointers[i].box.clone());\n        }\n\n        scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n        scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n        scale.reflow(scaleBox);\n\n        for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n            pointers[i$1].reflow(this$1.bbox);\n        }\n    };\n\n    return LinearGauge;\n}(Gauge));\n\nsetDefaultOptions(LinearGauge, {\n    transitions: true,\n    gaugeArea: {\n        background: \"\"\n    },\n    scale: {\n        vertical: true\n    }\n});\n\nexport default LinearGauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nvar GEO_ARC_ADJUST_ANGLE = 180;\n\nvar Arc = drawing.Arc;\nvar Path = drawing.Path;\nvar Group = drawing.Group;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n    var ticks = new Group();\n    var center = arc.center;\n    var radius = arc.getRadiusX();\n\n    if (tickOptions.visible) {\n        for (var i = 0; i < tickAngles.length; i++) {\n            var tickStart = arc.pointAt(tickAngles[i]);\n            var tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n            ticks.append(new Path({\n                stroke: {\n                    color: tickOptions.color,\n                    width: tickOptions.width\n                }\n            }).moveTo(tickStart).lineTo(tickEnd));\n        }\n    }\n\n    return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n    return { from: from, to: to, color: color, opacity: opacity };\n}\n\nvar RadialScale = (function (NumericAxis) {\n    function RadialScale(options, service) {\n        NumericAxis.call(this, 0, 1, options, service);\n    }\n\n    if ( NumericAxis ) RadialScale.__proto__ = NumericAxis;\n    RadialScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n    RadialScale.prototype.constructor = RadialScale;\n\n    RadialScale.prototype.initUserOptions = function initUserOptions (options) {\n        var scaleOptions = deepExtend({}, this.options, options);\n        scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n        scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n        return scaleOptions;\n    };\n\n    RadialScale.prototype.initFields = function initFields () {\n    };\n\n    RadialScale.prototype.render = function render (center, radius) {\n        var arc = this.renderArc(center, radius);\n\n        this.bbox = arc.bbox();\n        this.labelElements = this.renderLabels();\n        this.ticks = this.renderTicks();\n        this.ranges = this.renderRanges();\n    };\n\n    RadialScale.prototype.reflow = function reflow (bbox) {\n        var center = bbox.center();\n        var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n        if (defined(this.bbox)) {\n            this.bbox = this.arc.bbox();\n            this.radius(this.arc.getRadiusX());\n            this.repositionRanges();\n            this.renderLabels();\n        } else {\n            return this.render(center, radius);\n        }\n    };\n\n    RadialScale.prototype.slotAngle = function slotAngle (value) {\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var reverse = ref.reverse;\n        var startAngle = ref.startAngle;\n        var endAngle = ref.endAngle;\n        var angle = endAngle - startAngle;\n        var result;\n\n        if (reverse) {\n            result = endAngle - (value - min) / (max - min) * angle;\n        } else {\n            result = ((value - min) / (max - min) * angle) + startAngle;\n        }\n\n        return result + GEO_ARC_ADJUST_ANGLE;\n    };\n\n    RadialScale.prototype.hasRanges = function hasRanges () {\n        var ranges = this.options.ranges;\n\n        return ranges && ranges.length;\n    };\n\n    RadialScale.prototype.ticksSize = function ticksSize () {\n        var ref = this.options;\n        var majorTicks = ref.majorTicks;\n        var minorTicks = ref.minorTicks;\n        var size = 0;\n        if (majorTicks.visible) {\n            size = majorTicks.size;\n        }\n\n        if (minorTicks.visible) {\n            size = Math.max(minorTicks.size, size);\n        }\n\n        return size;\n    };\n\n    RadialScale.prototype.renderLabels = function renderLabels () {\n        var this$1 = this;\n\n        var options = this.options;\n        var arc = this.arc.clone();\n        var radius = arc.getRadiusX();\n        var tickAngles = this.tickAngles(arc, options.majorUnit);\n        var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n        var labelsGroup = new Group();\n\n        var rangeDistance = radius * 0.05;\n        if (defined(options.rangeDistance)) {\n            rangeDistance = options.rangeDistance;\n        } else {\n            options.rangeDistance = rangeDistance;\n        }\n\n        var labelsOptions = options.labels;\n        var isInside = labelsOptions.position === INSIDE;\n        var hasLabelElements = defined(this.labelElements);\n\n        if (isInside) {\n            radius -= this.ticksSize();\n\n            if (this.hasRanges() && !hasLabelElements) {\n                radius -= rangeSize + rangeDistance;\n            }\n            arc.setRadiusX(radius).setRadiusY(radius);\n        }\n\n        var labels = this.labels;\n        var count = labels.length;\n        var padding = getSpacing(labelsOptions.padding);\n        var paddingWidth = (padding.left + padding.right) / 2;\n        var paddingHeight = (padding.top + padding.bottom) / 2;\n\n        for (var i = 0; i < count; i++) {\n            var label = labels[i];\n            var halfWidth = label.box.width() / 2;\n            var halfHeight = label.box.height() / 2;\n            var angle = tickAngles[i];\n            var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n            var lp = arc.pointAt(angle);\n            var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n            var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n            label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n            var labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n            var labelElement = (void 0);\n            if (!hasLabelElements) {\n                labelElement = buildLabelElement(label, options.labels);\n                labelsGroup.append(labelElement);\n            } else {\n                labelElement = this$1.labelElements.children[i];\n                var prevLabelPos = labelElement.bbox().origin;\n\n                var labelTransform = labelElement.transform() || geo.transform();\n                labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n                labelElement.transform(labelTransform);\n            }\n\n            this$1.bbox = geo.Rect.union(this$1.bbox, labelElement.bbox());\n        }\n\n        return labelsGroup;\n    };\n\n    RadialScale.prototype.repositionRanges = function repositionRanges () {\n        var ranges = this.ranges.children;\n\n        if (ranges.length > 0) {\n            var ref = this.options;\n            var rangeDistance = ref.rangeDistance;\n            var rangeSize = ref.rangeSize;\n            var rangeRadius = this.getRangeRadius();\n\n            if (this.options.labels.position === INSIDE) {\n                rangeRadius += rangeSize + rangeDistance;\n            }\n\n            var newRadius = rangeRadius + (rangeSize / 2);\n\n            for (var i = 0; i < ranges.length; i++) {\n                ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n            }\n\n            this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n        }\n    };\n\n    RadialScale.prototype.renderRanges = function renderRanges () {\n        var this$1 = this;\n\n        var segments = this.rangeSegments();\n        var segmentsCount = segments.length;\n        var result = new Group();\n\n        if (segmentsCount) {\n            var ref = this.options;\n            var rangeSize = ref.rangeSize;\n            var reverse = ref.reverse;\n            var rangeDistance = ref.rangeDistance;\n            var rangeRadius = this.getRangeRadius();\n\n            // move the ticks with a range distance and a range size\n            this.radius(this.radius() - rangeSize - rangeDistance);\n\n            for (var i = 0; i < segmentsCount; i++) {\n                var segment = segments[i];\n                var from = this$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n                var to = this$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n                if (to - from !== 0) {\n                    result.append(this$1.createRange(from, to, rangeRadius, segment));\n                }\n            }\n        }\n\n        return result;\n    };\n\n    RadialScale.prototype.createRange = function createRange (startAngle, endAngle, rangeRadius, options) {\n        var rangeSize = this.options.rangeSize;\n        var rangeGeom = new geo.Arc(this.arc.center, {\n            radiusX: rangeRadius + (rangeSize / 2),\n            radiusY: rangeRadius + (rangeSize / 2),\n            startAngle: startAngle,\n            endAngle: endAngle\n        });\n\n        return new Arc(rangeGeom, {\n            stroke: {\n                width: rangeSize,\n                color: options.color,\n                opacity: options.opacity,\n                lineCap: options.lineCap\n            }\n        });\n    };\n\n    RadialScale.prototype.rangeSegments = function rangeSegments () {\n        var options = this.options;\n        var ranges = options.ranges || [];\n        var count = ranges.length;\n        var segments = [];\n\n        if (count) {\n            var min = options.min;\n            var max = options.max;\n            var defaultColor = options.rangePlaceholderColor;\n            segments.push(rangeSegment(min, max, defaultColor));\n\n            for (var i = 0; i < count; i++) {\n                var range = getRange(ranges[i], min, max);\n                var segmentsCount = segments.length;\n\n                for (var j = 0; j < segmentsCount; j++) {\n                    var segment = segments[j];\n\n                    if (segment.from <= range.from && range.from <= segment.to) {\n                        segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n                        if (segment.from <= range.to && range.to <= segment.to) {\n                            segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n                        }\n\n                        segment.to = range.from;\n\n                        break;\n                    }\n                }\n            }\n        }\n\n        return segments;\n    };\n\n    RadialScale.prototype.getRangeRadius = function getRangeRadius () {\n        var ref = this;\n        var arc = ref.arc;\n        var options = ref.options;\n        var rangeSize = options.rangeSize;\n        var rangeDistance = options.rangeDistance;\n        var majorTickSize = options.majorTicks.size;\n        var radius;\n\n        if (options.labels.position === OUTSIDE) {\n            radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n        } else {\n            radius = arc.getRadiusX() - rangeSize;\n        }\n\n        return radius;\n    };\n\n    RadialScale.prototype.renderArc = function renderArc (center, radius) {\n        var options = this.options;\n\n        var arc = this.arc = new geo.Arc(center, {\n            radiusX: radius,\n            radiusY: radius,\n            startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n            endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n        });\n\n        return arc;\n    };\n\n    RadialScale.prototype.renderTicks = function renderTicks () {\n        var ref = this;\n        var arc = ref.arc;\n        var options = ref.options;\n        var tickArc = arc.clone();\n\n        this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n        this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n        var allTicks = new Group();\n        allTicks.append(this.majorTicks);\n\n        var majorTickSize = options.majorTicks.size;\n        var minorTickSize = options.minorTicks.size;\n\n        this._tickDifference = majorTickSize - minorTickSize;\n\n        if (options.labels.position === OUTSIDE) {\n            var radius = tickArc.getRadiusX();\n            tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n                   .setRadiusY(radius - majorTickSize + minorTickSize);\n        }\n\n        this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n        this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n        allTicks.append(this.minorTicks);\n\n        return allTicks;\n    };\n\n    RadialScale.prototype.normalizeTickAngles = function normalizeTickAngles (angles) {\n        var options = this.options;\n        var skip = options.majorUnit / options.minorUnit;\n\n        for (var i = angles.length - 1; i >= 0; i--) {\n            if (i % skip === 0) {\n                angles.splice(i, 1);\n            }\n        }\n\n        return angles;\n    };\n\n    RadialScale.prototype.tickAngles = function tickAngles (ring, stepValue) {\n        var options = this.options;\n        var reverse = options.reverse;\n        var range = options.max - options.min;\n        var angle = ring.endAngle - ring.startAngle;\n        var tickCount = range / stepValue;\n        var pos = ring.startAngle;\n        var step = angle / tickCount;\n\n        if (reverse) {\n            pos += angle;\n            step = -step;\n        }\n\n        var positions = [];\n        for (var i = 0; i < tickCount; i++) {\n            positions.push(round(pos, COORD_PRECISION));\n            pos += step;\n        }\n\n        if (round(pos) <= ring.endAngle) {\n            positions.push(pos);\n        }\n\n        return positions;\n    };\n\n    RadialScale.prototype.radius = function radius (value) {\n        if (value) {\n            this.arc.setRadiusX(value).setRadiusY(value);\n            this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n            this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n        } else {\n            return this.arc.getRadiusX();\n        }\n    };\n\n    RadialScale.prototype.repositionTicks = function repositionTicks (ticks, tickAngles, minor) {\n        var diff = minor ? (this._tickDifference || 0) : 0;\n        var tickArc = this.arc;\n        var radius = tickArc.getRadiusX();\n\n        if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n            tickArc = this.arc.clone();\n            tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n        }\n\n        for (var i = 0; i < ticks.length; i++) {\n            var newPoint = tickArc.pointAt(tickAngles[i]);\n            var segments = ticks[i].segments;\n            var xDiff = newPoint.x - segments[0].anchor().x;\n            var yDiff = newPoint.y - segments[0].anchor().y;\n\n            ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n        }\n    };\n\n    return RadialScale;\n}(NumericAxis));\n\nsetDefaultOptions(RadialScale, {\n    min: 0,\n    max: 100,\n\n    majorTicks: {\n        size: 15,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    minorTicks: {\n        size: 10,\n        align: INSIDE,\n        color: BLACK,\n        width: DEFAULT_LINE_WIDTH,\n        visible: true\n    },\n\n    startAngle: -30,\n    endAngle: 210,\n\n    labels: {\n        position: INSIDE,\n        padding: 2\n    }\n});\n\nexport default RadialScale;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nvar RadialPointerAnimation = (function (superclass) {\n    function RadialPointerAnimation(element, options) {\n        superclass.call(this, element, options);\n\n        var animationOptions = this.options;\n\n        animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n    }\n\n    if ( superclass ) RadialPointerAnimation.__proto__ = superclass;\n    RadialPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    RadialPointerAnimation.prototype.constructor = RadialPointerAnimation;\n\n    RadialPointerAnimation.prototype.step = function step (pos) {\n        var options = this.options;\n        var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n        this.element.transform(geometry.transform().rotate(angle, options.center));\n    };\n\n    return RadialPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RadialPointerAnimation, {\n    easing: LINEAR,\n    duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nvar CAP_SIZE = 0.05;\nvar Circle = drawing.Circle;\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar RadialPointer = (function (Pointer) {\n    function RadialPointer () {\n        Pointer.apply(this, arguments);\n    }\n\n    if ( Pointer ) RadialPointer.__proto__ = Pointer;\n    RadialPointer.prototype = Object.create( Pointer && Pointer.prototype );\n    RadialPointer.prototype.constructor = RadialPointer;\n\n    RadialPointer.prototype.setAngle = function setAngle (angle) {\n        this.elements.transform(geo.transform().rotate(angle, this.center));\n    };\n\n    RadialPointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var oldAngle = scale.slotAngle(options._oldValue);\n        var newAngle = scale.slotAngle(options.value);\n\n        if (options.animation.transitions === false) {\n            this.setAngle(newAngle);\n        } else {\n            new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n                oldAngle: oldAngle,\n                newAngle: newAngle\n            })).play();\n        }\n    };\n\n    RadialPointer.prototype.render = function render () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var elements = new Group();\n\n        if (options.animation !== false) {\n            deepExtend(options.animation, {\n                startAngle: 0,\n                center: scale.arc.center,\n                reverse: scale.options.reverse\n            });\n        }\n\n        elements.append(this._renderNeedle(), this._renderCap());\n\n        this.elements = elements;\n        this.setAngle(DEGREE);\n\n        return elements;\n    };\n\n    RadialPointer.prototype.reflow = function reflow (arc) {\n        var center = this.center = arc.center;\n        var length = limitValue(this.options.length || 1, 0.1, 1.5);\n        var radius = this.radius = arc.getRadiusX() * length;\n        var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n        this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n                                    new geo.Point(center.x + capSize, center.y + capSize));\n    };\n\n    RadialPointer.prototype._renderNeedle = function _renderNeedle () {\n        var minorTickSize = this.scale.options.minorTicks.size;\n        var center = this.center;\n        var needleColor = this.options.color;\n\n        var needlePath = new Path({\n            fill: { color: needleColor },\n            stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n        });\n\n        needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n                  .lineTo(center.x, center.y - (this.capSize / 2))\n                  .lineTo(center.x, center.y + (this.capSize / 2))\n                  .close();\n\n        return needlePath;\n    };\n\n    RadialPointer.prototype._renderCap = function _renderCap () {\n        var options = this.options;\n        var capColor = options.cap.color || options.color;\n        var circle = new geo.Circle(this.center, this.capSize);\n\n        var cap = new Circle(circle, {\n            fill: { color: capColor },\n            stroke: { color: capColor }\n        });\n\n        return cap;\n    };\n\n    return RadialPointer;\n}(Pointer));\n\nsetDefaultOptions(RadialPointer, {\n    cap: {\n        size: CAP_SIZE\n    },\n    arrow: {\n        width: 16,\n        height: 14\n    },\n    animation: {\n        type: RADIAL_POINTER,\n        duration: ANGULAR_SPEED\n    }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nvar Group = drawing.Group;\n\nvar RadialGauge = (function (Gauge) {\n    function RadialGauge () {\n        Gauge.apply(this, arguments);\n    }\n\n    if ( Gauge ) RadialGauge.__proto__ = Gauge;\n    RadialGauge.prototype = Object.create( Gauge && Gauge.prototype );\n    RadialGauge.prototype.constructor = RadialGauge;\n\n    RadialGauge.prototype.reflow = function reflow (bbox) {\n        var this$1 = this;\n\n        var pointers = this.pointers;\n        this.scale.reflow(bbox);\n        this._initialPlotArea = this.scale.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(this$1.scale.arc);\n            this$1._initialPlotArea = geo.Rect.union(this$1._initialPlotArea, pointers[i].bbox);\n        }\n\n        this.fitScale(bbox);\n        this.alignScale(bbox);\n        this._buildVisual(this.gaugeArea, pointers, this.scale);\n        this._draw();\n    };\n\n    RadialGauge.prototype._buildVisual = function _buildVisual (gaugeArea, pointers, scale) {\n        var visuals = this._visuals = new Group();\n\n        visuals.append(gaugeArea);\n        visuals.append(scale.ticks);\n        visuals.append(scale.ranges);\n        this._buildPointers(pointers);\n        visuals.append(scale.labelElements);\n    };\n\n    RadialGauge.prototype._buildPointers = function _buildPointers (pointers) {\n        var this$1 = this;\n\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            current.render();\n            this$1._visuals.append(current.elements);\n\n            current.value(current.options.value);\n        }\n    };\n\n    RadialGauge.prototype.fitScale = function fitScale (bbox) {\n        var this$1 = this;\n\n        var arc = this.scale.arc;\n        var plotAreaBox = this._initialPlotArea;\n        var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n        var min = round(step, COORD_PRECISION);\n        var max = round(-step, COORD_PRECISION);\n        var minDiff, midDiff, maxDiff, mid, oldDiff;\n        var staleFlag = 0;\n        var i = 0;\n\n        while (i++ < 100) {\n            staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n            if (staleFlag > 5) {\n                break;\n            }\n\n            if (min !== mid) {\n                minDiff = this$1.getPlotBox(min, bbox, arc);\n                if (0 <= minDiff && minDiff <= 2) {\n                    break;\n                }\n            }\n\n            if (max !== mid) {\n                maxDiff = this$1.getPlotBox(max, bbox, arc);\n                if (0 <= maxDiff && maxDiff <= 2) {\n                    break;\n                }\n            }\n\n            if (minDiff > 0 && maxDiff > 0) {\n                mid = min * 2;\n            } else if (minDiff < 0 && maxDiff < 0) {\n                mid = max * 2;\n            } else {\n                mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n            }\n\n            midDiff = this$1.getPlotBox(mid, bbox, arc);\n            if (0 <= midDiff && midDiff <= 2) {\n                break;\n            }\n\n            oldDiff = maxDiff;\n\n            if (midDiff > 0) {\n                max = mid;\n                maxDiff = midDiff;\n            } else {\n                min = mid;\n                minDiff = midDiff;\n            }\n        }\n    };\n\n    RadialGauge.prototype.getPlotBox = function getPlotBox (step, bbox, arc) {\n        var this$1 = this;\n\n        var scale = this.scale;\n        var pointers = this.pointers;\n        var radius = arc.getRadiusX();\n        var scaleArc = arc.clone();\n\n        scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n        scale.arc = scaleArc;\n        scale.reflow(bbox);\n        this.plotBbox = scale.bbox;\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(scaleArc);\n            this$1.plotBbox = geo.Rect.union(this$1.plotBbox, pointers[i].bbox);\n        }\n\n        return this.getDiff(this.plotBbox, bbox);\n    };\n\n    RadialGauge.prototype.getDiff = function getDiff (plotBox, box) {\n        return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n    };\n\n    RadialGauge.prototype.alignScale = function alignScale (bbox) {\n        var this$1 = this;\n\n        var plotBoxCenter = this.plotBbox.center();\n        var boxCenter = bbox.center();\n        var paddingX = plotBoxCenter.x - boxCenter.x;\n        var paddingY = plotBoxCenter.y - boxCenter.y;\n        var ref = this;\n        var scale = ref.scale;\n        var pointers = ref.pointers;\n\n        scale.arc.center.x -= paddingX;\n        scale.arc.center.y -= paddingY;\n\n        scale.reflow(bbox);\n\n        for (var i = 0; i < pointers.length; i++) {\n            pointers[i].reflow(scale.arc);\n            this$1.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n        }\n    };\n\n    RadialGauge.prototype._createModel = function _createModel () {\n        var this$1 = this;\n\n        var options = this.options;\n        var pointers = options.pointer;\n        var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n        this.pointers = [];\n\n        var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n        for (var i = 0; i < pointersArr.length; i++) {\n            var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n                animation: {\n                    transitions: options.transitions\n                }\n            }));\n\n            this$1.pointers.push(current);\n        }\n    };\n\n    return RadialGauge;\n}(Gauge));\n\nsetDefaultOptions(RadialGauge, {\n    transitions: true,\n    gaugeArea: {\n        background: \"\"\n    }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nvar ArcScale = (function (RadialScale) {\n    function ArcScale () {\n        RadialScale.apply(this, arguments);\n    }\n\n    if ( RadialScale ) ArcScale.__proto__ = RadialScale;\n    ArcScale.prototype = Object.create( RadialScale && RadialScale.prototype );\n    ArcScale.prototype.constructor = ArcScale;\n\n    ArcScale.prototype.rangeSegments = function rangeSegments () {\n        var ref = this.options;\n        var min = ref.min;\n        var max = ref.max;\n        var rangePlaceholderColor = ref.rangePlaceholderColor;\n        var rangeLineCap = ref.rangeLineCap;\n\n        return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n    };\n\n    ArcScale.prototype.hasRanges = function hasRanges () {\n        return true;\n    };\n\n    ArcScale.prototype.placeholderRangeAngle = function placeholderRangeAngle (angle) {\n        var geometry = this.ranges.children[0].geometry();\n\n        if (this.options.reverse) {\n            geometry.setEndAngle(angle);\n        } else {\n            geometry.setStartAngle(angle);\n        }\n    };\n\n    ArcScale.prototype.addRange = function addRange (from, to, options) {\n        var reverse = this.options.reverse;\n\n        var startAngle = this.slotAngle(reverse ? to : from);\n        var endAngle = this.slotAngle(reverse ? from : to);\n\n        var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n        this.ranges.append(range);\n\n        return range;\n    };\n\n    return ArcScale;\n}(RadialScale));\n\nsetDefaultOptions(ArcScale, {\n    min: 0,\n    max: 100,\n\n    majorTicks: {\n        visible: false\n    },\n\n    minorTicks: {\n        visible: false\n    },\n\n    labels: {\n        visible: false\n    },\n\n    startAngle: 0,\n    endAngle: 180,\n    rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nvar MAX_DURATION = 800;\n\nvar RangePointerAnimation = (function (superclass) {\n    function RangePointerAnimation(element, options) {\n        superclass.call(this, element, options);\n\n        var animationOptions = this.options;\n        var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n        animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n        var startColor = element.elements.options.get(\"stroke.color\");\n        var color = element.currentColor();\n        if (startColor !== color) {\n            this.startColor = new Color(startColor);\n            this.color = new Color(color);\n        }\n    }\n\n    if ( superclass ) RangePointerAnimation.__proto__ = superclass;\n    RangePointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n    RangePointerAnimation.prototype.constructor = RangePointerAnimation;\n\n    RangePointerAnimation.prototype.step = function step (pos) {\n        var ref = this;\n        var options = ref.options;\n        var startColor = ref.startColor;\n        var color = ref.color;\n        var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n        this.element.angle(angle);\n\n        if (color) {\n            var r = round(interpolateValue(startColor.r, color.r, pos));\n            var g = round(interpolateValue(startColor.g, color.g, pos));\n            var b = round(interpolateValue(startColor.b, color.b, pos));\n\n            this.element.stroke(new Color(r, g, b).toHex());\n        }\n    };\n\n    return RangePointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RangePointerAnimation, {\n    easing: LINEAR,\n    duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nvar RangePointer = (function (Pointer) {\n    function RangePointer () {\n        Pointer.apply(this, arguments);\n    }\n\n    if ( Pointer ) RangePointer.__proto__ = Pointer;\n    RangePointer.prototype = Object.create( Pointer && Pointer.prototype );\n    RangePointer.prototype.constructor = RangePointer;\n\n    RangePointer.prototype.repaint = function repaint () {\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n        var oldAngle = scale.slotAngle(options._oldValue);\n        var newAngle = scale.slotAngle(options.value);\n\n        if (this.animation) {\n            this.animation.abort();\n        }\n\n        if (options.animation.transitions === false) {\n            this.angle(newAngle);\n            this.stroke(this.currentColor());\n        } else {\n            this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n                oldAngle: oldAngle,\n                newAngle: newAngle\n            }));\n\n            this.animation.play();\n        }\n    };\n\n    RangePointer.prototype.angle = function angle (value) {\n        var geometry = this.elements.geometry();\n        if (this.scale.options.reverse) {\n            geometry.setStartAngle(value);\n        } else {\n            geometry.setEndAngle(value);\n        }\n        this.scale.placeholderRangeAngle(value);\n    };\n\n    RangePointer.prototype.stroke = function stroke (value) {\n        this.elements.stroke(value);\n    };\n\n    RangePointer.prototype.render = function render () {\n        if (this.elements) {\n            return;\n        }\n\n        var ref = this;\n        var scale = ref.scale;\n        var options = ref.options;\n\n        if (options.animation !== false) {\n            deepExtend(options.animation, {\n                startAngle: 0,\n                center: scale.arc.center,\n                reverse: scale.options.reverse\n            });\n        }\n\n        this.elements = scale.addRange(scale.options.min, this.options.value, {\n            color: this.currentColor(),\n            opacity: options.opacity,\n            lineCap: scale.options.rangeLineCap\n        });\n    };\n\n    RangePointer.prototype.currentColor = function currentColor () {\n        var ref = this.scale.options;\n        var min = ref.min;\n        var max = ref.max;\n        var ref$1 = this.options;\n        var colors = ref$1.colors;\n        var color = ref$1.color;\n        var value = ref$1.value;\n        var currentValue = isNumber(value) ? value : min;\n\n        if (colors) {\n            for (var idx = 0; idx < colors.length; idx++) {\n                var ref$2 = colors[idx];\n                var rangeColor = ref$2.color;\n                var from = ref$2.from; if ( from === void 0 ) from = min;\n                var to = ref$2.to; if ( to === void 0 ) to = max;\n\n                if (from <= currentValue && currentValue <= to) {\n                    return rangeColor;\n                }\n            }\n        }\n\n        return color;\n    };\n\n    RangePointer.prototype.reflow = function reflow () {\n        this.render();\n\n        this.bbox = this.elements.bbox();\n    };\n\n    return RangePointer;\n}(Pointer));\n\nsetDefaultOptions(RangePointer, {\n    animation: {\n        type: RADIAL_RANGE_POINTER,\n        duration: ANGULAR_SPEED\n    }\n});\n\nexport default RangePointer;\n","var BAR_GAP = 1.5;\nvar BAR_SPACING = 0.4;\nvar BLACK = '#000';\nvar SANS = 'Arial, Helvetica, sans-serif';\nvar SANS11 = \"11px \" + SANS;\nvar SANS12 = '12px ' + SANS;\nvar SANS16 = '16px ' + SANS;\nvar TRANSPARENT = 'transparent';\nvar WHITE = '#fff';\n\nvar notes = function () { return ({\n    icon: {\n        border: {\n            width: 1\n        }\n    },\n    label: {\n        font: SANS12,\n        padding: 3\n    },\n    line: {\n        length: 10,\n        width: 2\n    },\n    visible: true\n}); };\n\nvar axisDefaults = function () { return ({\n    labels: {\n        font: SANS12\n    },\n    notes: notes(),\n    title: {\n        font: SANS16,\n        margin: 5\n    }\n}); };\n\nvar areaSeries = function () { return ({\n    highlight: {\n        markers: {\n            border: {}\n        }\n    },\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.4\n}); };\n\nvar rangeAreaSeries = function () { return ({\n    highlight: {\n        markers: {\n            border: {}\n        }\n    },\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.4\n}); };\n\nvar barSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar boxPlotSeries = function () { return ({\n    outliersField: \"\",\n    meanField: \"\",\n    border: {\n        _brightness: 0.8,\n        width: 1\n    },\n    downColor: WHITE,\n    gap: 1,\n    highlight: {\n        border: {\n            opacity: 1,\n            width: 2\n        },\n        whiskers: {\n            width: 3\n        },\n        mean: {\n            width: 2\n        },\n        median: {\n            width: 2\n        }\n    },\n    mean: {\n        width: 2\n    },\n    median: {\n        width: 2\n    },\n    spacing: 0.3,\n    whiskers: {\n        width: 2\n    }\n}); };\n\nvar bubbleSeries = function () { return ({\n    border: {\n        width: 0\n    },\n    labels: {\n        background: TRANSPARENT\n    },\n    opacity: 0.6\n}); };\n\nvar bulletSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING,\n    target: {\n        color: \"#ff0000\"\n    }\n}); };\n\nvar candlestickSeries = function () { return ({\n    border: {\n        _brightness: 0.8,\n        width: 1\n    },\n    downColor: WHITE,\n    gap: 1,\n    highlight: {\n        border: {\n            opacity: 1,\n            width: 2\n        },\n        line: {\n            width: 2\n        }\n    },\n    line: {\n        color: BLACK,\n        width: 1\n    },\n    spacing: 0.3\n}); };\n\nvar columnSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar donutSeries = function () { return ({\n    margin: 1\n}); };\n\nvar lineSeries = function () { return ({\n    width: 2\n}); };\n\nvar ohlcSeries = function () { return ({\n    gap: 1,\n    highlight: {\n        line: {\n            opacity: 1,\n            width: 3\n        }\n    },\n    line: {\n        width: 1\n    },\n    spacing: 0.3\n}); };\n\nvar radarAreaSeries = function () { return ({\n    line: {\n        opacity: 1,\n        width: 0\n    },\n    markers: {\n        size: 6,\n        visible: false\n    },\n    opacity: 0.5\n}); };\n\nvar radarLineSeries = function () { return ({\n    markers: {\n        visible: false\n    },\n    width: 2\n}); };\n\nvar rangeBarSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar rangeColumnSeries = function () { return ({\n    gap: BAR_GAP,\n    spacing: BAR_SPACING\n}); };\n\nvar scatterLineSeries = function () { return ({\n    width: 1\n}); };\n\nvar waterfallSeries = function () { return ({\n    gap: 0.5,\n    line: {\n        color: BLACK,\n        width: 1\n    },\n    spacing: BAR_SPACING\n}); };\n\nvar pieSeries = function () { return ({\n    labels: {\n        background: '',\n        color: '',\n        padding: {\n            top: 5,\n            bottom: 5,\n            left: 7,\n            right: 7\n        }\n    }\n}); };\n\nvar funnelSeries = function () { return ({\n    labels: {\n        background: '',\n        color: '',\n        padding: {\n            top: 5,\n            bottom: 5,\n            left: 7,\n            right: 7\n        }\n    }\n}); };\n\nvar seriesDefaults = function (options) { return ({\n    visible: true,\n    labels: {\n        font: SANS11\n    },\n    overlay: options.gradients ? {} : {\n        gradient: \"none\"\n    },\n    area: areaSeries(),\n    rangeArea: rangeAreaSeries(),\n    verticalRangeArea: rangeAreaSeries(),\n    bar: barSeries(),\n    boxPlot: boxPlotSeries(),\n    bubble: bubbleSeries(),\n    bullet: bulletSeries(),\n    candlestick: candlestickSeries(),\n    column: columnSeries(),\n    pie: pieSeries(),\n    donut: donutSeries(),\n    funnel: funnelSeries(),\n    horizontalWaterfall: waterfallSeries(),\n    line: lineSeries(),\n    notes: notes(),\n    ohlc: ohlcSeries(),\n    radarArea: radarAreaSeries(),\n    radarLine: radarLineSeries(),\n    polarArea: radarAreaSeries(),\n    polarLine: radarLineSeries(),\n    rangeBar: rangeBarSeries(),\n    rangeColumn: rangeColumnSeries(),\n    scatterLine: scatterLineSeries(),\n    verticalArea: areaSeries(),\n    verticalBoxPlot: boxPlotSeries(),\n    verticalBullet: bulletSeries(),\n    verticalLine: lineSeries(),\n    waterfall: waterfallSeries()\n}); };\n\nvar title = function () { return ({\n    font: SANS16\n}); };\n\nvar legend = function () { return ({\n    labels: {\n        font: SANS12\n    }\n}); };\n\nexport var baseTheme = function (options) {\n    if ( options === void 0 ) options = {};\n\n    return ({\n    axisDefaults: axisDefaults(),\n    categoryAxis: {\n        majorGridLines: {\n            visible: true\n        }\n    },\n    navigator: {\n        pane: {\n            height: 90,\n            margin: {\n                top: 10\n            }\n        }\n    },\n    seriesDefaults: seriesDefaults(options),\n    title: title(),\n    legend: legend()\n});\n};\n\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nvar ArcGauge = (function (RadialGauge) {\n    function ArcGauge () {\n        RadialGauge.apply(this, arguments);\n    }\n\n    if ( RadialGauge ) ArcGauge.__proto__ = RadialGauge;\n    ArcGauge.prototype = Object.create( RadialGauge && RadialGauge.prototype );\n    ArcGauge.prototype.constructor = ArcGauge;\n\n    ArcGauge.prototype._initTheme = function _initTheme (theme) {\n        RadialGauge.prototype._initTheme.call(this, theme);\n\n        this.options.color = this.options.color || (this.theme.pointer || {}).color;\n    };\n\n    ArcGauge.prototype._createModel = function _createModel () {\n        var options = this.options;\n        var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n        var pointer = new RangePointer(scale, deepExtend({}, {\n            colors: options.colors,\n            color: options.color,\n            value: options.value,\n            opacity: options.opacity,\n            animation: {\n                transitions: options.transitions\n            }\n        }));\n\n        this.pointers = [ pointer ];\n    };\n\n    ArcGauge.prototype._buildPointers = function _buildPointers (pointers) {\n        for (var i = 0; i < pointers.length; i++) {\n            var current = pointers[i];\n            current.render();\n\n            current.value(current.options.value);\n        }\n    };\n\n    ArcGauge.prototype._setValueOptions = function _setValueOptions (value) {\n        this.options.value = value;\n    };\n\n    ArcGauge.prototype.currentColor = function currentColor () {\n        var pointer = this.pointers[0];\n        if (pointer) {\n            return pointer.currentColor();\n        }\n    };\n\n    ArcGauge.prototype.centerLabelPosition = function centerLabelPosition (width, height) {\n        var size = this.getSize();\n        var center = this.scale.arc.center;\n\n        var left = center.x - width / 2;\n        var top = center.y - height / 2;\n\n        if (width < size.width) {\n            var right = left + width;\n\n            left = Math.max(left, 0);\n\n            if (right > size.width) {\n                left -= right - size.width;\n            }\n        }\n\n        if (height < size.height) {\n            var bbox = this.scale.bbox;\n            var yLimit = bbox.bottomRight().y;\n            var bottom = top + height;\n\n            top = Math.max(top, bbox.origin.y);\n\n            if (bottom > yLimit) {\n                top -= bottom - yLimit;\n            }\n        }\n\n        return {\n            left: left,\n            top: top\n        };\n    };\n\n    return ArcGauge;\n}(RadialGauge));\n\nexport default ArcGauge;","/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n    var current = element;\n    while (current && current !== parent) {\n        current = current.parentNode;\n    }\n    return current ? true : false;\n}\n/**\n * @hidden\n */\nfunction validateChildren(props, propName, componentName, childType) {\n    var prop = props[propName];\n    if (prop) {\n        if (Array.isArray(prop)) {\n            for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n                var value = prop_1[_i];\n                if (!value.type || value.type !== childType) {\n                    return new Error(componentName + \" children should be Array of type \" + childType.displayName + \".\");\n                }\n            }\n        }\n    }\n    return null;\n}\n/**\n * @hidden\n */\nvar toggle = function (flag) { return flag === undefined ? false : !flag; };\nexport { hasParent, validateChildren, toggle };\n//# sourceMappingURL=main.js.map","var getTouch = function (domEvent) {\n    return {\n        x: {\n            location: domEvent.pageX\n        },\n        y: {\n            location: domEvent.pageY\n        }\n    };\n};\nvar eventArgs = function (e, previousArgs) {\n    var pointers = e.pointers;\n    var pointer = pointers[0];\n    var xLocation = pointer.pageX;\n    var yLocation = pointer.pageY;\n    var distance = 0;\n    if (pointers.length > 1) {\n        var pointer1 = pointers[0];\n        var pointer2 = pointers[1];\n        distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) +\n            Math.pow(pointer1.pageY - pointer2.pageY, 2));\n    }\n    return {\n        distance: distance,\n        event: e.srcEvent,\n        preventDefault: function () {\n            e.preventDefault();\n        },\n        target: e.target,\n        touches: pointers.map(getTouch),\n        type: e.type,\n        x: {\n            delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n            initialDelta: e.deltaX,\n            location: xLocation,\n            startLocation: xLocation - e.deltaX\n        },\n        y: {\n            delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n            initialDelta: e.deltaY,\n            location: yLocation,\n            startLocation: yLocation - e.deltaY\n        }\n    };\n};\nfunction shouldBindGroup(groupNames, events) {\n    for (var idx = 0; idx < groupNames.length; idx++) {\n        if (events[groupNames[idx]]) {\n            return true;\n        }\n    }\n    return false;\n}\nvar eventGroups = [{\n        end: 'panend',\n        move: 'panmove',\n        start: 'panstart'\n    }, {\n        gesturechange: 'pinchmove',\n        gestureend: 'pinchend',\n        gesturestart: 'pinchstart'\n    }, {\n        press: 'press'\n    }, {\n        tap: 'tap'\n    }];\n/**\n * @hidden\n */\nvar DomEvents = /** @class */ (function () {\n    function DomEvents(hammerInstance, events) {\n        this.hammerInstance = hammerInstance;\n        this.eventHandlers = {};\n        this.tap = this.tap.bind(this);\n        this.press = this.press.bind(this);\n        this.panstart = this.panstart.bind(this);\n        this.panmove = this.panmove.bind(this);\n        this.panend = this.panend.bind(this);\n        this.pinchstart = this.pinchstart.bind(this);\n        this.pinchmove = this.pinchmove.bind(this);\n        this.pinchend = this.pinchend.bind(this);\n        if (events) {\n            this.bind(events);\n        }\n    }\n    DomEvents.prototype.tap = function (e) {\n        this.trigger('tap', e);\n    };\n    DomEvents.prototype.press = function (e) {\n        this.trigger('press', e);\n    };\n    DomEvents.prototype.panstart = function (e) {\n        delete this.previous;\n        this.previous = this.trigger('start', e);\n    };\n    DomEvents.prototype.panmove = function (e) {\n        this.previous = this.trigger('move', e);\n    };\n    DomEvents.prototype.panend = function (e) {\n        this.trigger('end', e);\n        delete this.previous;\n    };\n    DomEvents.prototype.pinchstart = function (e) {\n        this.trigger('gesturestart', e);\n    };\n    DomEvents.prototype.pinchmove = function (e) {\n        this.trigger('gesturechange', e);\n    };\n    DomEvents.prototype.pinchend = function (e) {\n        this.trigger('gestureend', e);\n    };\n    DomEvents.prototype.trigger = function (name, e) {\n        var args = eventArgs(e, this.previous);\n        if (this.eventHandlers[name]) {\n            this.eventHandlers[name](args);\n        }\n        return args;\n    };\n    DomEvents.prototype.bind = function (events) {\n        if (events === void 0) { events = {}; }\n        this.unbind();\n        this.eventHandlers = events;\n        for (var idx = 0; idx < eventGroups.length; idx++) {\n            var eventGroup = eventGroups[idx];\n            var groupNames = Object.keys(eventGroup);\n            if (shouldBindGroup(groupNames, events)) {\n                for (var nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n                    var name_1 = eventGroup[groupNames[nameIdx]];\n                    this.hammerInstance.on(name_1, this[name_1]);\n                }\n            }\n        }\n    };\n    DomEvents.prototype.unbind = function () {\n        if (this.hammerInstance) {\n            this.hammerInstance.off();\n        }\n        this.eventHandlers = {};\n    };\n    DomEvents.prototype.destroy = function () {\n        if (this.hammerInstance) {\n            this.hammerInstance.destroy();\n            delete this.hammerInstance;\n        }\n        delete this.eventHandlers;\n    };\n    DomEvents.prototype.toggleDrag = function (enable) {\n        this.toggle('pan', enable);\n    };\n    DomEvents.prototype.toggleZoom = function (enable) {\n        this.toggle('pinch', enable);\n    };\n    DomEvents.prototype.toggle = function (recognizer, enable) {\n        if (this.hammerInstance) {\n            var instanceRecognizer = this.hammerInstance.get(recognizer);\n            instanceRecognizer.set({\n                enable: enable\n            });\n        }\n    };\n    return DomEvents;\n}());\nexport { DomEvents };\n//# sourceMappingURL=dom-events.js.map","import { DomEvents } from './dom-events';\nvar MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n    'Solution: http://www.telerik.com/kendo-react-ui/components/charts/troubleshooting/#toc-installation';\n/**\n * @hidden\n */\nvar DomEventsBuilder = /** @class */ (function () {\n    function DomEventsBuilder() {\n    }\n    DomEventsBuilder.create = function (element, events) {\n        if (typeof window !== 'undefined') {\n            var HAMMER = window.Hammer;\n            if (!HAMMER) {\n                if (process.env.NODE_ENV !== 'production') {\n                    console.warn(MISSING_HAMMER_MESSAGE);\n                }\n                return;\n            }\n            var hammerInstance = new HAMMER(element, {\n                recognizers: [\n                    [HAMMER.Tap],\n                    [HAMMER.Pan],\n                    [HAMMER.Pinch],\n                    [HAMMER.Press, { time: 0 }]\n                ]\n            });\n            return new DomEvents(hammerInstance, events);\n        }\n    };\n    return DomEventsBuilder;\n}());\nexport { DomEventsBuilder };\n//# sourceMappingURL=dom-events-builder.js.map","/**\n * @hidden\n */\nvar BaseEvent = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function BaseEvent(target) {\n        this.target = target;\n    }\n    return BaseEvent;\n}());\nexport { BaseEvent };\n//# sourceMappingURL=base-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `axisLabelClick` event.\n */\nvar AxisLabelClickEvent = /** @class */ (function (_super) {\n    __extends(AxisLabelClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function AxisLabelClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.dataItem = e.dataItem;\n        _this.index = e.index;\n        _this.text = e.text;\n        _this.value = e.value;\n        return _this;\n    }\n    return AxisLabelClickEvent;\n}(BaseEvent));\nexport { AxisLabelClickEvent };\n// tslint:enable:max-line-length\n//# sourceMappingURL=axis-label-click-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * @hidden\n */\nvar PreventableEvent = /** @class */ (function (_super) {\n    __extends(PreventableEvent, _super);\n    function PreventableEvent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.prevented = false;\n        return _this;\n    }\n    // tslint:disable:max-line-length\n    /**\n     * Prevents the default action for a specified event. In this way, the source component suppresses the built-in behavior that follows the event.\n     */\n    PreventableEvent.prototype.preventDefault = function () {\n        this.prevented = true;\n    };\n    /**\n     * Returns `true` if the event was prevented by any of its subscribers.\n     *\n     * @returns `true` if the default action was prevented.\n     * Otherwise, returns `false`.\n     */\n    PreventableEvent.prototype.isDefaultPrevented = function () {\n        return this.prevented;\n    };\n    return PreventableEvent;\n}(BaseEvent));\nexport { PreventableEvent };\n// tslint:enable:max-line-length\n//# sourceMappingURL=preventable-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `drag` event.\n */\nvar DragEvent = /** @class */ (function (_super) {\n    __extends(DragEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragEvent;\n}(PreventableEvent));\nexport { DragEvent };\n//# sourceMappingURL=drag-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `dragEnd` event.\n */\nvar DragEndEvent = /** @class */ (function (_super) {\n    __extends(DragEndEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragEndEvent;\n}(BaseEvent));\nexport { DragEndEvent };\n// tslint:enable:max-line-length\n//# sourceMappingURL=drag-end-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `dragStart` event.\n */\nvar DragStartEvent = /** @class */ (function (_super) {\n    __extends(DragStartEvent, _super);\n    /**\n     * @hidden\n     */\n    function DragStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return DragStartEvent;\n}(PreventableEvent));\nexport { DragStartEvent };\n//# sourceMappingURL=drag-start-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemHover` event.\n */\nvar LegendItemHoverEvent = /** @class */ (function (_super) {\n    __extends(LegendItemHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * If called, the series highlight is not shown as a result of hovering over the legend item.\n     */\n    LegendItemHoverEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemHoverEvent;\n}(PreventableEvent));\nexport { LegendItemHoverEvent };\n//# sourceMappingURL=legend-item-hover-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemClick` event.\n */\nvar LegendItemClickEvent = /** @class */ (function (_super) {\n    __extends(LegendItemClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * If called, the series visibility is not toggled as a result of clicking the legend item.\n     */\n    LegendItemClickEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemClickEvent;\n}(PreventableEvent));\nexport { LegendItemClickEvent };\n//# sourceMappingURL=legend-item-click-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemLeave` event.\n */\nvar LegendItemLeaveEvent = /** @class */ (function (_super) {\n    __extends(LegendItemLeaveEvent, _super);\n    /**\n     * @hidden\n     */\n    function LegendItemLeaveEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.series = e.series;\n        _this.seriesIndex = e.seriesIndex;\n        _this.pointIndex = e.pointIndex;\n        _this.text = e.text;\n        return _this;\n    }\n    /**\n     * @hidden\n     */\n    LegendItemLeaveEvent.prototype.preventDefault = function () {\n        _super.prototype.preventDefault.call(this);\n    };\n    return LegendItemLeaveEvent;\n}(PreventableEvent));\nexport { LegendItemLeaveEvent };\n//# sourceMappingURL=legend-item-leave-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * The arguments for the `navigatorFilter` event.\n */\nvar NavigatorFilterEvent = /** @class */ (function (_super) {\n    __extends(NavigatorFilterEvent, _super);\n    /**\n     * Constructs the event arguments from a raw object.\n     */\n    function NavigatorFilterEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return NavigatorFilterEvent;\n}(BaseEvent));\nexport { NavigatorFilterEvent };\n//# sourceMappingURL=navigator-filter-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteClick` event.\n */\nvar NoteClickEvent = /** @class */ (function (_super) {\n    __extends(NoteClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function NoteClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.series = e.series;\n        _this.value = e.value;\n        _this.visual = e.visual;\n        return _this;\n    }\n    return NoteClickEvent;\n}(BaseEvent));\nexport { NoteClickEvent };\n//# sourceMappingURL=note-click-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteHover` event.\n */\nvar NoteHoverEvent = /** @class */ (function (_super) {\n    __extends(NoteHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function NoteHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.series = e.series;\n        _this.value = e.value;\n        _this.visual = e.visual;\n        return _this;\n    }\n    return NoteHoverEvent;\n}(BaseEvent));\nexport { NoteHoverEvent };\n//# sourceMappingURL=note-hover-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaClick` event.\n */\nvar PlotAreaClickEvent = /** @class */ (function (_super) {\n    __extends(PlotAreaClickEvent, _super);\n    /**\n     * @hidden\n     */\n    function PlotAreaClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.nativeEvent = e.originalEvent;\n        _this.value = e.value;\n        _this.x = e.x;\n        _this.y = e.y;\n        return _this;\n    }\n    return PlotAreaClickEvent;\n}(BaseEvent));\nexport { PlotAreaClickEvent };\n//# sourceMappingURL=plot-area-click-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaHover` event.\n */\nvar PlotAreaHoverEvent = /** @class */ (function (_super) {\n    __extends(PlotAreaHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function PlotAreaHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.nativeEvent = e.originalEvent;\n        _this.value = e.value;\n        _this.x = e.x;\n        _this.y = e.y;\n        return _this;\n    }\n    return PlotAreaHoverEvent;\n}(BaseEvent));\nexport { PlotAreaHoverEvent };\n//# sourceMappingURL=plot-area-hover-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `render` event.\n */\nvar RenderEvent = /** @class */ (function (_super) {\n    __extends(RenderEvent, _super);\n    /**\n     * @hidden\n     */\n    function RenderEvent(_e, sender) {\n        return _super.call(this, sender) || this;\n    }\n    return RenderEvent;\n}(BaseEvent));\nexport { RenderEvent };\n//# sourceMappingURL=render-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `select` event.\n */\nvar SelectEvent = /** @class */ (function (_super) {\n    __extends(SelectEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectEvent;\n}(PreventableEvent));\nexport { SelectEvent };\n//# sourceMappingURL=select-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `selectEnd` event.\n */\nvar SelectEndEvent = /** @class */ (function (_super) {\n    __extends(SelectEndEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectEndEvent;\n}(BaseEvent));\nexport { SelectEndEvent };\n//# sourceMappingURL=select-end-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `selectStart` event.\n */\nvar SelectStartEvent = /** @class */ (function (_super) {\n    __extends(SelectStartEvent, _super);\n    /**\n     * @hidden\n     */\n    function SelectStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axis = e.axis;\n        _this.from = e.from;\n        _this.to = e.to;\n        return _this;\n    }\n    return SelectStartEvent;\n}(PreventableEvent));\nexport { SelectStartEvent };\n//# sourceMappingURL=select-start-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `seriesClick` event.\n */\nvar SeriesClickEvent = /** @class */ (function (_super) {\n    __extends(SeriesClickEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function SeriesClickEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.dataItem = e.dataItem;\n        _this.nativeEvent = e.originalEvent;\n        _this.percentage = e.percentage;\n        _this.point = e.point;\n        _this.series = e.series;\n        _this.stackValue = e.stackValue;\n        _this.value = e.value;\n        return _this;\n    }\n    return SeriesClickEvent;\n}(BaseEvent));\nexport { SeriesClickEvent };\n//# sourceMappingURL=series-click-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `seriesHover` event.\n */\nvar SeriesHoverEvent = /** @class */ (function (_super) {\n    __extends(SeriesHoverEvent, _super);\n    /**\n     * @hidden\n     */\n    function SeriesHoverEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.category = e.category;\n        _this.categoryPoints = e.categoryPoints;\n        _this.dataItem = e.dataItem;\n        _this.nativeEvent = e.originalEvent;\n        _this.percentage = e.percentage;\n        _this.point = e.point;\n        _this.series = e.series;\n        _this.stackValue = e.stackValue;\n        _this.value = e.value;\n        return _this;\n    }\n    return SeriesHoverEvent;\n}(PreventableEvent));\nexport { SeriesHoverEvent };\n// tslint:enable:max-line-length\n//# sourceMappingURL=series-hover-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `zoom` event.\n */\nvar ZoomEvent = /** @class */ (function (_super) {\n    __extends(ZoomEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.delta = e.delta;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomEvent;\n}(PreventableEvent));\nexport { ZoomEvent };\n//# sourceMappingURL=zoom-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseEvent } from './base-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `zoomEnd` event.\n */\nvar ZoomEndEvent = /** @class */ (function (_super) {\n    __extends(ZoomEndEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomEndEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomEndEvent;\n}(BaseEvent));\nexport { ZoomEndEvent };\n//# sourceMappingURL=zoom-end-event.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { PreventableEvent } from './preventable-event';\n// tslint:disable:max-line-length\n/**\n * Arguments for the `zoomStart` event.\n */\nvar ZoomStartEvent = /** @class */ (function (_super) {\n    __extends(ZoomStartEvent, _super);\n    // tslint:enable:max-line-length\n    /**\n     * @hidden\n     */\n    function ZoomStartEvent(e, target) {\n        var _this = _super.call(this, target) || this;\n        _this.axisRanges = e.axisRanges;\n        _this.nativeEvent = e.originalEvent;\n        return _this;\n    }\n    return ZoomStartEvent;\n}(PreventableEvent));\nexport { ZoomStartEvent };\n//# sourceMappingURL=zoom-start-event.js.map","import { AxisLabelClickEvent } from './axis-label-click-event';\nimport { DragEvent } from './drag-event';\nimport { DragEndEvent } from './drag-end-event';\nimport { DragStartEvent } from './drag-start-event';\nimport { LegendItemHoverEvent } from './legend-item-hover-event';\nimport { LegendItemClickEvent } from './legend-item-click-event';\nimport { LegendItemLeaveEvent } from './legend-item-leave-event';\nimport { NavigatorFilterEvent } from './navigator-filter-event';\nimport { NoteClickEvent } from './note-click-event';\nimport { NoteHoverEvent } from './note-hover-event';\nimport { PlotAreaClickEvent } from './plot-area-click-event';\nimport { PlotAreaHoverEvent } from './plot-area-hover-event';\nimport { RenderEvent } from './render-event';\nimport { SelectEvent } from './select-event';\nimport { SelectEndEvent } from './select-end-event';\nimport { SelectStartEvent } from './select-start-event';\nimport { SeriesClickEvent } from './series-click-event';\nimport { SeriesHoverEvent } from './series-hover-event';\nimport { ZoomEvent } from './zoom-event';\nimport { ZoomEndEvent } from './zoom-end-event';\nimport { ZoomStartEvent } from './zoom-start-event';\nvar EVENT_MAP = {\n    axisLabelClick: AxisLabelClickEvent,\n    drag: DragEvent,\n    dragEnd: DragEndEvent,\n    dragStart: DragStartEvent,\n    legendItemHover: LegendItemHoverEvent,\n    legendItemClick: LegendItemClickEvent,\n    legendItemLeave: LegendItemLeaveEvent,\n    navigatorFilter: NavigatorFilterEvent,\n    noteClick: NoteClickEvent,\n    noteHover: NoteHoverEvent,\n    plotAreaClick: PlotAreaClickEvent,\n    plotAreaHover: PlotAreaHoverEvent,\n    render: RenderEvent,\n    select: SelectEvent,\n    selectEnd: SelectEndEvent,\n    selectStart: SelectStartEvent,\n    seriesClick: SeriesClickEvent,\n    seriesHover: SeriesHoverEvent,\n    zoom: ZoomEvent,\n    zoomEnd: ZoomEndEvent,\n    zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nfunction create(name, args, sender) {\n    if (EVENT_MAP[name]) {\n        return new EVENT_MAP[name](args, sender);\n    }\n}\nexport { create };\n//# sourceMappingURL=chart-event-builder.js.map","/**\n * @hidden\n */\nvar DomEvent = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function DomEvent(sender, e) {\n        this.sender = sender;\n        this.syntheticEvent = e;\n    }\n    return DomEvent;\n}());\nexport { DomEvent };\nfunction toDomEvent(sender, e) {\n    return new DomEvent(sender, e);\n}\nexport { toDomEvent };\n//# sourceMappingURL=dom-event.js.map","import { chartBaseTheme } from '@progress/kendo-charts';\nvar font = function (style) { return style.fontSize + \" \" + style.fontFamily; };\nvar letterPos = function (letter) { return letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0); };\nvar seriesPos = function (name) { return letterPos(name.match(/series-([a-z])$/)[1]); };\nvar template = \"\\n    <div class=\\\"k-var--accent\\\"></div>\\n    <div class=\\\"k-var--base\\\"></div>\\n    <div class=\\\"k-var--background\\\"></div>\\n\\n    <div class=\\\"k-var--normal-background\\\"></div>\\n    <div class=\\\"k-var--normal-text-color\\\"></div>\\n    <div class=\\\"k-var--hover-background\\\"></div>\\n    <div class=\\\"k-var--hover-text-color\\\"></div>\\n    <div class=\\\"k-var--selected-background\\\"></div>\\n    <div class=\\\"k-var--selected-text-color\\\"></div>\\n    <div class=\\\"k-var--chart-error-bars-background\\\"></div>\\n    <div class=\\\"k-var--chart-notes-background\\\"></div>\\n    <div class=\\\"k-var--chart-notes-border\\\"></div>\\n    <div class=\\\"k-var--chart-notes-lines\\\"></div>\\n    <div class=\\\"k-var--chart-crosshair-background\\\"></div>\\n\\n    <div class=\\\"k-var--chart-inactive\\\"></div>\\n    <div class=\\\"k-var--chart-major-lines\\\"></div>\\n    <div class=\\\"k-var--chart-minor-lines\\\"></div>\\n    <div class=\\\"k-var--chart-area-opacity\\\"></div>\\n\\n    <div class=\\\"k-widget\\\">\\n        <div class=\\\"k-var--chart-font\\\"></div>\\n        <div class=\\\"k-var--chart-title-font\\\"></div>\\n        <div class=\\\"k-var--chart-label-font\\\"></div>\\n    </div>\\n\\n    <div class=\\\"k-var--series\\\">\\n      <div class=\\\"k-var--series-a\\\"></div>\\n      <div class=\\\"k-var--series-b\\\"></div>\\n      <div class=\\\"k-var--series-c\\\"></div>\\n      <div class=\\\"k-var--series-d\\\"></div>\\n      <div class=\\\"k-var--series-e\\\"></div>\\n      <div class=\\\"k-var--series-f\\\"></div>\\n    </div>\\n\";\n/**\n * @hidden\n */\nvar ThemeService = /** @class */ (function () {\n    function ThemeService(store) {\n        this.store = store;\n    }\n    ThemeService.prototype.setStyle = function (field, value) {\n        this.store.dispatch({ type: 'set', payload: { field: field, value: value } });\n    };\n    ThemeService.prototype.setColors = function () {\n        this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n        this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n        this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n        this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n        this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n        this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n        this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n        this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n        this.mapColor('axisDefaults.title.color', 'normal-text-color');\n        this.mapColor('chartArea.background', 'background');\n        this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n        this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n        this.mapColor('legend.labels.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n        this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n        this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n        this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n        this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n        this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n        this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n        this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n        this.mapColor('seriesDefaults.labels.background', 'background');\n        this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n        this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n        this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n        this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n        this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n        this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n        this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n        this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n        this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n        this.mapColor('title.color', 'normal-text-color');\n        var opacity = this.queryStyle('chart-area-opacity').opacity;\n        this.setStyle('seriesDefaults.area.opacity', opacity);\n        this.setStyle('seriesDefaults.labels.opacity', opacity);\n    };\n    ThemeService.prototype.setFonts = function () {\n        var defaultFont = font(this.queryStyle('chart-font'));\n        var titleFont = font(this.queryStyle('chart-title-font'));\n        var labelFont = font(this.queryStyle('chart-label-font'));\n        this.setStyle('axisDefaults.labels.font', labelFont);\n        this.setStyle('axisDefaults.notes.label.font', defaultFont);\n        this.setStyle('axisDefaults.title.font', defaultFont);\n        this.setStyle('legend.labels.font', defaultFont);\n        this.setStyle('seriesDefaults.labels.font', labelFont);\n        this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n        this.setStyle('title.font', titleFont);\n    };\n    ThemeService.prototype.setSeriesColors = function () {\n        var element = this.element;\n        var series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n        var seriesColors = series.reduce(function (arr, el) {\n            var pos = seriesPos(el.className);\n            arr[pos] = window.getComputedStyle(el).backgroundColor;\n            return arr;\n        }, [] // Will populate the series colors in this array\n        );\n        this.setStyle('seriesColors', seriesColors);\n    };\n    ThemeService.prototype.mapColor = function (key, varName) {\n        this.setStyle(key, this.queryStyle(varName).backgroundColor);\n    };\n    ThemeService.prototype.queryStyle = function (varName) {\n        var element = this.element;\n        return window.getComputedStyle(element.querySelector(\".k-var--\" + varName));\n    };\n    return ThemeService;\n}());\nvar loadTheme = function (store, done) {\n    var service = new ThemeService(store);\n    if (typeof document === 'undefined') {\n        store.dispatch({ type: 'push', payload: chartBaseTheme() });\n        return;\n    }\n    var container = service.element = document.createElement('div');\n    container.style.display = 'none';\n    container.innerHTML = template;\n    document.body.appendChild(container);\n    try {\n        store.dispatch({ type: 'push', payload: chartBaseTheme() });\n        service.setColors();\n        service.setFonts();\n        service.setSeriesColors();\n    }\n    finally {\n        document.body.removeChild(service.element);\n        delete service.element;\n        done();\n    }\n};\nexport { loadTheme };\n//# sourceMappingURL=theme-service.js.map","import { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nvar createStore = function (reducer) {\n    var state;\n    var timerId;\n    var listeners = [];\n    var getState = function () { return state; };\n    var dispatch = function (action) {\n        state = reducer(state, action);\n        if (canUseDOM) {\n            window.clearTimeout(timerId);\n            timerId = window.setTimeout(function () { return listeners.forEach(function (l) { return l(); }); }, THROTTLE_MS);\n        }\n    };\n    var subscribe = function (listener) {\n        listeners.push(listener);\n        return function () { return listeners = listeners.filter(function (l) { return l !== listener; }); };\n    };\n    dispatch({});\n    return { getState: getState, dispatch: dispatch, subscribe: subscribe };\n};\nexport default createStore;\n//# sourceMappingURL=store.js.map","/**\n * @hidden\n */\nvar optionsReducer = function (currentState, action) {\n    if (action.chartCollectionIdxKey) {\n        return reducers.collectionConfigurationItem(currentState, action);\n    }\n    else if (action.chartKey) {\n        return reducers.configurationItem(currentState, action);\n    }\n    else {\n        return {};\n    }\n};\n/**\n * @hidden\n */\nvar themeReducer = function (currentState, action) {\n    if (action.type) {\n        switch (action.type) {\n            case 'set':\n                return reducers.themeItem(currentState, action);\n            case 'push':\n                return Object.assign(currentState, action.payload);\n            default:\n                return currentState;\n        }\n    }\n    else {\n        return {};\n    }\n};\n/**\n * @hidden\n */\nvar observersReducer = function (currentState, action) {\n    if (action.type) {\n        switch (action.type) {\n            case 'add':\n                return currentState.concat([action.payload]);\n            case 'remove':\n                return currentState.filter(function (element) { return element !== action.payload; });\n            default:\n                return currentState;\n        }\n    }\n    else {\n        return [];\n    }\n};\n/**\n * @hidden\n */\nvar reducers = {\n    configurationItem: function (currentState, action) {\n        var _a;\n        return Object.assign(currentState, (_a = {},\n            _a[action.chartKey] = action.payload,\n            _a));\n    },\n    collectionConfigurationItem: function (currentState, action) {\n        var _a;\n        var inCollection = false;\n        var _b = action.chartCollectionIdxKey.split('_'), collectionName = _b[0], collectionIdx = _b[1];\n        var collection = currentState[collectionName].map(function (item, index) {\n            if (parseInt(collectionIdx, 10) === index) {\n                inCollection = true;\n                return action.payload;\n            }\n            return item;\n        });\n        if (inCollection === false) {\n            collection.splice(parseInt(collectionIdx, 10), 0, action.payload);\n        }\n        return Object.assign(currentState, (_a = {},\n            _a[collectionName] = collection,\n            _a));\n    },\n    themeItem: function (currentState, action) {\n        var store = {};\n        var nextStore = Object.assign(store, currentState);\n        var _a = action.payload, field = _a.field, value = _a.value;\n        var parts = field.split('.');\n        var key = parts.shift();\n        while (parts.length > 0) {\n            store = store[key] = store[key] || {};\n            key = parts.shift();\n        }\n        store[key] = value;\n        return nextStore;\n    }\n};\nexport { optionsReducer, themeReducer, observersReducer };\n//# sourceMappingURL=reducer.js.map","import { DateCategoryAxis, DateValueAxis } from '@progress/kendo-charts';\nvar dateCategoryAxisFormats = DateCategoryAxis.prototype.options.labels.dateFormats;\nvar dateValueAxisFormats = DateValueAxis.prototype.options.labels.dateFormats;\nvar dateFormats = {\n    milliseconds: 'HH:mm:ss.SSS',\n    seconds: { time: 'medium' },\n    minutes: { time: 'short' },\n    hours: { time: 'short' },\n    days: { skeleton: 'Md' },\n    weeks: { skeleton: 'Md' },\n    months: { skeleton: 'yyMMM' },\n    years: { skeleton: 'y' }\n};\nObject.assign(dateCategoryAxisFormats, dateFormats);\nObject.assign(dateValueAxisFormats, dateFormats);\n//# sourceMappingURL=defaults.js.map","/**\n * The point that is passed to the tooltip component.\n */\nvar TooltipPoint = /** @class */ (function () {\n    /**\n     * @hidden\n     */\n    function TooltipPoint(point, format) {\n        this.value = point.value;\n        this.category = point.category;\n        this.categoryIndex = point.categoryIx;\n        this.series = point.series;\n        this.dataItem = point.dataItem;\n        this.percentage = point.percentage;\n        this.runningTotal = point.runningTotal;\n        this.total = point.total;\n        this.low = point.low;\n        this.high = point.high;\n        this.xLow = point.xLow;\n        this.xHigh = point.xHigh;\n        this.yLow = point.yLow;\n        this.yHigh = point.yHigh;\n        this.point = point;\n        this.format = ((point.options || {}).tooltip || {}).format || format;\n    }\n    Object.defineProperty(TooltipPoint.prototype, \"formattedValue\", {\n        get: function () {\n            return this.format ? this.point.formatValue(this.format) : String(this.value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return TooltipPoint;\n}());\nexport { TooltipPoint };\n//# sourceMappingURL=Point.js.map","import * as React from 'react';\nvar TOOLTIP_MARKER_CLASS = 'k-chart-shared-tooltip-marker';\n/**\n * @hidden\n */\nvar SharedTooltipContent = function (props) {\n    var categoryText = props.categoryText, colorMarker = props.colorMarker, colspan = props.colspan, nameColumn = props.nameColumn, points = props.points;\n    var pointsMap = function (point, idx) {\n        return (React.createElement(\"tr\", { key: idx },\n            colorMarker && (React.createElement(\"td\", null,\n                React.createElement(\"span\", { className: TOOLTIP_MARKER_CLASS, style: { backgroundColor: point.series.color } }))),\n            nameColumn && (React.createElement(\"td\", null, point.series.name)),\n            React.createElement(\"td\", { dangerouslySetInnerHTML: { __html: point.formattedValue } })));\n    };\n    return (React.createElement(\"table\", null,\n        React.createElement(\"thead\", null,\n            React.createElement(\"tr\", null,\n                React.createElement(\"th\", { colSpan: colspan }, categoryText))),\n        React.createElement(\"tbody\", null, points.map(pointsMap))));\n};\nexport { SharedTooltipContent };\n//# sourceMappingURL=SharedTooltipContent.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nexport var ChartContext = React.createContext(null);\nChartContext.displayName = 'ChartContext';\n//# sourceMappingURL=ChartContext.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { toDomEvent } from './../events/dom-event';\nimport { hasParent } from '../utils/main';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { ChartContext } from '../ChartContext';\nvar COLLISION = { horizontal: 'fit', vertical: 'fit' };\nvar TOOLTIP_CLASS = 'k-chart-tooltip';\nvar POPUP_WRAPPER_CLASS = 'k-chart-tooltip-wrapper';\n/**\n * @hidden\n */\nvar TooltipPopup = /** @class */ (function (_super) {\n    __extends(TooltipPopup, _super);\n    function TooltipPopup(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.onChartMouseLeave = function (e) {\n            var syntheticEvent = e.syntheticEvent;\n            if (hasParent(syntheticEvent.relatedTarget, _this.element)) {\n                /* prevent default behavior so that the tooltip won't be hidden */\n                return true;\n            }\n            return false;\n        };\n        _this.onMouseLeave = function (e) {\n            var domEvent = toDomEvent(_this, e);\n            var isDefaultPrevented = _this.context.childrenObserver.trigger('onMouseLeave', domEvent);\n            if (isDefaultPrevented) {\n                e.preventDefault();\n            }\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            onMouseLeave: 'onChartMouseLeave'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    TooltipPopup.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, popupShown = _a.popupShown, popupAlign = _a.popupAlign, popupOffset = _a.popupOffset, popupStyles = _a.popupStyles, popupContent = _a.popupContent, className = _a.className;\n        var wrapperClass = [TOOLTIP_CLASS, className].join(' ').trim();\n        var popupComponent = (React.createElement(Popup, { animate: false, popupAlign: popupAlign, offset: popupOffset, show: popupShown, collision: COLLISION, className: POPUP_WRAPPER_CLASS },\n            React.createElement(\"div\", { className: wrapperClass, style: popupStyles, onMouseLeave: this.onMouseLeave, ref: function (el) { return _this.element = el; } }, popupContent())));\n        return popupComponent;\n    };\n    TooltipPopup.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    TooltipPopup.contextType = ChartContext;\n    return TooltipPopup;\n}(React.Component));\nexport { TooltipPopup };\n//# sourceMappingURL=Popup.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPoint } from './Point';\nimport { SharedTooltipContent } from './SharedTooltipContent';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar SeriesTooltip = /** @class */ (function (_super) {\n    __extends(SeriesTooltip, _super);\n    function SeriesTooltip() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            popupShown: false\n        };\n        return _this;\n    }\n    SeriesTooltip.prototype.componentDidMount = function () {\n        // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n        this.chartObserver = new InstanceObserver(this, {\n            showTooltip: 'onShowTooltip',\n            hideTooltip: 'onHideTooltip'\n        });\n        this.context.observersStore.dispatch({\n            type: 'add',\n            payload: this.chartObserver\n        });\n    };\n    SeriesTooltip.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var _b = this.state, popupContext = _b.popupContext, shared = _b.shared, className = _b.className, tooltipProps = __rest(_b, [\"popupContext\", \"shared\", \"className\"]);\n        var tooltipContent = this.state.popupShown ? function () {\n            var render = _this.findRenderFunction();\n            if (shared) {\n                return render !== null ? render(popupContext) :\n                    (React.createElement(SharedTooltipContent, __assign({}, popupContext)));\n            }\n            else {\n                var point = popupContext.point;\n                var seriesRenderer = _this.findRenderFunctionByIndex(point.series.index);\n                if (seriesRenderer !== null) {\n                    return seriesRenderer(popupContext);\n                }\n                else if (render !== null) {\n                    return render(popupContext);\n                }\n                else {\n                    return (React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: popupContext.point.formattedValue } }));\n                }\n            }\n        } : Function.prototype;\n        var popupContainerClassName = classNames((_a = {},\n            _a[SHARED_TOOLTIP_CLASS] = shared,\n            _a[INVERSE_TOOLTIP_CLASS] = !!className,\n            _a));\n        return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n    };\n    SeriesTooltip.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    SeriesTooltip.prototype.onShowTooltip = function (e) {\n        var anchor = e.anchor, style = e.style, shared = e.shared, className = e.className, crosshair = e.crosshair;\n        var context;\n        if (crosshair) {\n            return;\n        }\n        if (shared) {\n            context = this.createSharedTooltipContext(e);\n        }\n        else {\n            context = this.createTooltipContext(e);\n        }\n        this.setState({\n            popupShown: true,\n            popupAlign: anchor.align,\n            popupOffset: anchor.point,\n            popupContext: context,\n            popupStyles: style,\n            className: className,\n            shared: shared\n        });\n    };\n    SeriesTooltip.prototype.onHideTooltip = function () {\n        this.setState({\n            popupShown: false,\n            popupStyles: {},\n            className: undefined\n        });\n    };\n    SeriesTooltip.prototype.createSharedTooltipContext = function (e) {\n        var points = e.points, categoryText = e.categoryText;\n        var nameColumn = points.filter(function (point) { return typeof point.series.name !== 'undefined'; }).length > 0;\n        var colorMarker = e.series.length > 1;\n        var colspan = 1;\n        if (nameColumn) {\n            colspan++;\n        }\n        if (colorMarker) {\n            colspan++;\n        }\n        return {\n            categoryText: categoryText,\n            colorMarker: colorMarker,\n            colspan: colspan,\n            nameColumn: nameColumn,\n            points: e.points.map(function (point) { return new TooltipPoint(point, e.format); })\n        };\n    };\n    SeriesTooltip.prototype.createTooltipContext = function (e) {\n        var point = e.point, format = e.format;\n        return { point: new TooltipPoint(point, format) };\n    };\n    SeriesTooltip.prototype.findRenderFunctionByIndex = function (seriesIdx) {\n        var series = this.context.optionsStore.getState().series;\n        if (series !== undefined\n            && Array.isArray(series)\n            && series[seriesIdx] !== undefined\n            && series[seriesIdx].hasOwnProperty('tooltip')\n            && series[seriesIdx].tooltip.hasOwnProperty('render')) {\n            return series[seriesIdx].tooltip.render;\n        }\n        return null;\n    };\n    SeriesTooltip.prototype.findRenderFunction = function () {\n        var tooltip = this.context.optionsStore.getState().tooltip;\n        if (tooltip !== undefined\n            && tooltip.hasOwnProperty('render')) {\n            return tooltip.render;\n        }\n        return null;\n    };\n    SeriesTooltip.contextType = ChartContext;\n    return SeriesTooltip;\n}(React.Component));\nexport { SeriesTooltip };\n//# sourceMappingURL=Series.js.map","/**\n * @hidden\n */\nvar Container = function (props) { return (props.children); };\nContainer.displayName = 'Container';\n// tslint:disable:max-line-length\n/**\n * To provide support for React versions which do not support `React.Fragment`, the following component acts as its replacement. Returning an array is not an option as it blocks unit testing until [https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134](https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134) is released.\n */\nexport { Container };\n//# sourceMappingURL=Container.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar CROSSHAIR_TOOLTIP_CLASS = 'k-chart-crosshair-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n    __extends(CrosshairTooltip, _super);\n    function CrosshairTooltip(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.state = {\n            popupShown: false\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            showTooltip: 'onShowTooltip',\n            hideTooltip: 'onHideTooltip'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    CrosshairTooltip.prototype.render = function () {\n        var _a;\n        var _b = this.state, popupContend = _b.popupContend, className = _b.className, tooltipProps = __rest(_b, [\"popupContend\", \"className\"]);\n        var tooltipContent = this.state.popupShown ? function () { return popupContend; } : Function.prototype;\n        var popupContainerClassName = classNames((_a = {},\n            _a[CROSSHAIR_TOOLTIP_CLASS] = true,\n            _a[INVERSE_TOOLTIP_CLASS] = !!className,\n            _a));\n        return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n    };\n    CrosshairTooltip.prototype.componentWillUnmount = function () {\n        this.context.observersStore.dispatch({\n            type: 'remove',\n            payload: this.chartObserver\n        });\n    };\n    CrosshairTooltip.prototype.onShowTooltip = function (e) {\n        var anchor = e.anchor, style = e.style, className = e.className, crosshair = e.crosshair, axisName = e.axisName, axisIndex = e.axisIndex, value = e.value;\n        var _a = this.props, name = _a.name, index = _a.index;\n        if (!crosshair) {\n            return;\n        }\n        if (axisName === name && axisIndex === index) {\n            this.setState({\n                popupShown: true,\n                popupAlign: anchor.align,\n                popupOffset: anchor.point,\n                popupContend: value,\n                popupStyles: style,\n                className: className\n            });\n        }\n    };\n    CrosshairTooltip.prototype.onHideTooltip = function () {\n        this.setState({\n            popupShown: false,\n            popupStyles: {},\n            className: undefined\n        });\n    };\n    CrosshairTooltip.contextType = ChartContext;\n    return CrosshairTooltip;\n}(React.Component));\nexport { CrosshairTooltip };\n//# sourceMappingURL=Crosshair.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Container } from './../Container';\nimport { CrosshairTooltip } from './Crosshair';\nimport { ChartContext } from '../ChartContext';\nvar AXES = ['categoryAxis', 'valueAxis', 'xAxis', 'yAxis'];\nfunction mapTooltips(options) {\n    var map = {};\n    for (var idx = 0; idx < AXES.length; idx++) {\n        var tooltips = axesCrosshairTooltipOptions(options, AXES[idx]);\n        for (var tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n            var tooltip = tooltips[tooltipIdx];\n            map[tooltip.name + tooltip.index] = tooltip;\n        }\n    }\n    return map;\n}\nfunction axesCrosshairTooltipOptions(options, name) {\n    var result = [];\n    if (options[name]) {\n        var axes = [].concat(options[name]);\n        for (var idx = 0; idx < axes.length; idx++) {\n            var tooltip = (axes[idx].crosshair || {}).tooltip;\n            if (tooltip && tooltip.visible) {\n                result.push({\n                    index: idx,\n                    name: name\n                });\n            }\n        }\n    }\n    return result;\n}\n/**\n * @hidden\n */\nvar CrosshairTooltipContainer = /** @class */ (function (_super) {\n    __extends(CrosshairTooltipContainer, _super);\n    function CrosshairTooltipContainer() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            tooltips: {}\n        };\n        _this.storeUnsubscriber = Function.prototype;\n        _this.subscriber = function () {\n            _this.setState({\n                tooltips: mapTooltips(_this.context.optionsStore.getState())\n            });\n        };\n        return _this;\n    }\n    CrosshairTooltipContainer.prototype.componentDidMount = function () {\n        // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n        this.storeUnsubscriber = this.context.optionsStore.subscribe(this.subscriber);\n    };\n    CrosshairTooltipContainer.prototype.render = function () {\n        var tooltips = this.state.tooltips;\n        var childrenMap = Object.keys(tooltips).map(function (key) { return (React.createElement(CrosshairTooltip, __assign({}, tooltips[key], { key: key }))); });\n        return React.createElement(Container, null, childrenMap);\n    };\n    CrosshairTooltipContainer.prototype.componentWillUnmount = function () {\n        this.storeUnsubscriber();\n    };\n    CrosshairTooltipContainer.contextType = ChartContext;\n    return CrosshairTooltipContainer;\n}(React.Component));\nexport { CrosshairTooltipContainer };\n//# sourceMappingURL=CrosshairContainer.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { DomEventsBuilder as ChartDomEventsBuilder, InstanceObserver } from '@progress/kendo-charts';\nimport { canUseDOM } from '@progress/kendo-react-common';\nimport { hasParent } from './utils/main';\nimport { DomEventsBuilder } from './events/dom-events-builder';\nimport { create as createEvent } from './events/chart-event-builder';\nimport { toDomEvent } from './events/dom-event';\nimport { loadTheme } from './theming/theme-service';\nimport createStore from './store/store';\nimport { optionsReducer, themeReducer, observersReducer } from './store/reducer';\nimport { toggle } from './utils/main';\nimport './defaults';\nimport { SeriesTooltip } from './tooltip/Series';\nimport { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';\nimport { ChartContext } from './ChartContext';\n/**\n * @hidden\n */\nvar BaseChart = /** @class */ (function (_super) {\n    __extends(BaseChart, _super);\n    function BaseChart(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * @hidden\n         */\n        _this.chartInstance = null;\n        _this._element = null;\n        _this.optionsStore = {};\n        _this.optionsUnsubscriber = Function.prototype;\n        _this.themeStore = {};\n        _this.themeUnsubscriber = Function.prototype;\n        _this.observersStore = {};\n        /* Chart handlers */\n        /**\n         * @hidden\n         */\n        _this.onRender = function (e) {\n            if (_this.chartInstance !== null) {\n                _this.surface = e.sender.surface;\n                _this.trigger('render', e);\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onLegendItemClick = function (e) {\n            if (_this.chartInstance !== null) {\n                /**\n                 * In \"controlled\" state the user should toggle the series data visibility\n                 */\n                if (_this.props.onLegendItemClick) {\n                    _this.trigger('legendItemClick', e);\n                }\n                else {\n                    var series = _this.optionsStore.getState().series;\n                    if (!series) {\n                        return;\n                    }\n                    var payload = {};\n                    var seriesIndex = e.seriesIndex, pointIndex = e.pointIndex;\n                    var seriesByIndex = series[seriesIndex];\n                    if (pointIndex === undefined) {\n                        payload = Object.assign({}, seriesByIndex, { visible: toggle(seriesByIndex.visible) });\n                    }\n                    else {\n                        var pv = seriesByIndex.pointVisibility = seriesByIndex.pointVisibility || [];\n                        pv[pointIndex] = toggle(pv[pointIndex]);\n                        payload = Object.assign({}, seriesByIndex);\n                    }\n                    _this.optionsStore.dispatch({\n                        chartCollectionIdxKey: \"series_\" + seriesIndex,\n                        payload: payload\n                    });\n                }\n            }\n        };\n        /* Dom event handlers */\n        /**\n         * @hidden\n         */\n        _this.onWindowResize = function () {\n            if (_this.chartInstance !== null) {\n                _this.chartInstance.resize();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onChartMouseLeave = function (e) {\n            var domEvent = toDomEvent(_this, e);\n            var isDefaultPrevented = _this.triggerDomEvent('onMouseLeave', domEvent);\n            if (isDefaultPrevented) {\n                e.preventDefault();\n            }\n            else if (_this.chartInstance !== null) {\n                _this.chartInstance.hideElements();\n            }\n        };\n        /**\n         * @hidden\n         */\n        _this.onChildMouseLeave = function (e) {\n            var syntheticEvent = e.syntheticEvent;\n            if (_this.chartInstance && !hasParent(syntheticEvent.relatedTarget, _this.element)) {\n                _this.chartInstance.hideElements();\n            }\n            return false;\n        };\n        _this.optionsStore = createStore(optionsReducer);\n        _this.observersStore = createStore(observersReducer);\n        _this.childrenObserver = new InstanceObserver(_this, { onMouseLeave: 'onChildMouseLeave' });\n        _this.contextValue = {\n            optionsStore: _this.optionsStore,\n            observersStore: _this.observersStore,\n            childrenObserver: _this.childrenObserver\n        };\n        _this.themeStore = createStore(themeReducer);\n        _this.chartObserver = new InstanceObserver(_this, { render: 'onRender', legendItemClick: 'onLegendItemClick' });\n        return _this;\n    }\n    Object.defineProperty(BaseChart.prototype, \"element\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            return this._element;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentDidMount = function () {\n        loadTheme(this.themeStore, this.instantiateCoreChart.bind(this));\n        this.optionsUnsubscriber = this.optionsStore.subscribe(this.refresh.bind(this));\n        this.themeUnsubscriber = this.themeStore.subscribe(this.refresh.bind(this));\n        window.addEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentWillUnmount = function () {\n        this.optionsUnsubscriber();\n        this.themeUnsubscriber();\n        if (this.chartInstance !== null) {\n            this.chartInstance.destroy();\n            this.chartInstance = null;\n        }\n        window.removeEventListener('resize', this.onWindowResize);\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.componentDidUpdate = function (prevProps) {\n        var _a = this.props, dir = _a.dir, children = _a.children, spreadProps = __rest(_a, [\"dir\", \"children\"]);\n        if (this.chartInstance !== null) {\n            var currentIntlService = provideIntlService(this);\n            var chartService = this.chartInstance.chartService;\n            var localeChanged = currentIntlService.locale !== chartService._intlService.locale;\n            var shouldUpdate = Object.entries(prevProps)\n                .filter(function (keyValue) { return (keyValue[0] !== 'dir' && keyValue[0] !== 'children'); })\n                .some(function (keyValue) {\n                var key = keyValue[0], value = keyValue[1];\n                return !(spreadProps.hasOwnProperty(key) && spreadProps[key] === value);\n            });\n            if (localeChanged) {\n                this.chartInstance.chartService._intlService = currentIntlService;\n                this.chartInstance.chartService.format._intlService = currentIntlService;\n                if (!shouldUpdate) {\n                    this.chartInstance.noTransitionsRedraw();\n                }\n            }\n            if (shouldUpdate) {\n                this.refresh();\n            }\n            if (prevProps.dir !== dir) {\n                this.chartInstance.setDirection(this.getDirection(dir));\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, wrapperClassName = _a.wrapperClassName, wrapper = _a.wrapper, children = _a.children;\n        var chartStyles = Object.assign({}, style, { position: 'relative' });\n        var content = React.createElement(wrapper, {\n            className: wrapperClassName,\n            style: chartStyles,\n            key: 'chartElement'\n        }, (React.createElement(\"div\", { onMouseLeave: this.onChartMouseLeave, ref: function (el) { return _this._element = el; }, className: \"k-chart-surface\" }, children)));\n        return (React.createElement(ChartContext.Provider, { value: this.contextValue },\n            React.createElement(SeriesTooltip, { key: \"seriesTooltip\" }),\n            React.createElement(CrosshairTooltipContainer, { key: \"crosshairTooltips\" }),\n            content));\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.getDirection = function (dir) {\n        var _this = this;\n        var directionFromWindow = function () { return canUseDOM && window.getComputedStyle(_this.element).direction; };\n        var direction = dir !== undefined ? dir : (directionFromWindow() || 'ltr');\n        return direction === 'rtl';\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.getChartOptions = function () {\n        var _a = this.props, renderAs = _a.renderAs, pannable = _a.pannable, zoomable = _a.zoomable, transitions = _a.transitions, seriesColors = _a.seriesColors, seriesDefaults = _a.seriesDefaults, axisDefaults = _a.axisDefaults, deriveOptionsFromParent = _a.deriveOptionsFromParent;\n        var chartOptions = {};\n        // undefined clears chart defaults which leads to several issues\n        if (renderAs !== undefined) {\n            chartOptions.renderAs = renderAs;\n        }\n        if (pannable !== undefined) {\n            chartOptions.pannable = pannable;\n        }\n        if (zoomable !== undefined) {\n            chartOptions.zoomable = zoomable;\n        }\n        if (transitions !== undefined) {\n            chartOptions.transitions = transitions;\n        }\n        if (seriesColors !== undefined) {\n            chartOptions.seriesColors = seriesColors;\n        }\n        if (seriesDefaults !== undefined) {\n            chartOptions.seriesDefaults = seriesDefaults;\n        }\n        if (axisDefaults !== undefined) {\n            chartOptions.axisDefaults = axisDefaults;\n        }\n        chartOptions = Object.assign(chartOptions, this.optionsStore.getState());\n        if (deriveOptionsFromParent) {\n            chartOptions = deriveOptionsFromParent(chartOptions);\n        }\n        return chartOptions;\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.refresh = function () {\n        if (this.chartInstance !== null) {\n            var themeOptions = this.themeStore.getState();\n            var chartOptions = this.getChartOptions();\n            if (this.props.onRefresh) {\n                this.props.onRefresh.call(undefined, chartOptions, themeOptions, this.chartInstance);\n            }\n            else {\n                this.chartInstance.setOptions(chartOptions, themeOptions);\n            }\n        }\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.instantiateCoreChart = function () {\n        var _a = this.props, dir = _a.dir, chartConstructor = _a.chartConstructor;\n        var chartOptions = this.getChartOptions();\n        this.chartInstance = new chartConstructor(this.element, chartOptions, this.themeStore.getState(), {\n            rtl: this.getDirection(dir),\n            intlService: provideIntlService(this),\n            observer: this.chartObserver,\n            sender: this\n        });\n    };\n    /* Triggers public dom event handlers */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.trigger = function (name, e) {\n        var target = this.props.getTarget();\n        var eventObject = createEvent(name, e, target);\n        var handler = 'on' + name.charAt(0).toUpperCase() + name.slice(1);\n        var observers = this.observersStore.getState();\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, e)) {\n                isDefaultPrevented = true;\n            }\n        }\n        /* We have not prevented the event internally, now pass it to the user */\n        if (isDefaultPrevented === false\n            && eventObject\n            && this.props.hasOwnProperty(handler)) {\n            this.props[handler].call(undefined, eventObject);\n            return eventObject.isDefaultPrevented && eventObject.isDefaultPrevented();\n        }\n        return isDefaultPrevented;\n    };\n    /* Used by (event)InstanceObserver to check the wrapper for supported events */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.requiresHandlers = function (names) {\n        for (var idx = 0; idx < names.length; idx++) {\n            var name_1 = names[idx];\n            var handler = 'on' + name_1.charAt(0).toUpperCase() + name_1.slice(1);\n            if (this.props.hasOwnProperty(handler)) {\n                return true;\n            }\n        }\n        return false;\n    };\n    /* Triggers private dom event handlers */\n    /**\n     * @hidden\n     */\n    BaseChart.prototype.triggerDomEvent = function (name, e) {\n        var observers = this.observersStore.getState();\n        var isDefaultPrevented = false;\n        for (var idx = 0; idx < observers.length; idx++) {\n            if (observers[idx].trigger(name, e)) {\n                isDefaultPrevented = true;\n            }\n        }\n        return isDefaultPrevented;\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.propTypes = {\n        dir: PropTypes.string,\n        renderAs: PropTypes.oneOf(['svg', 'canvas'])\n    };\n    /**\n     * @hidden\n     */\n    BaseChart.defaultProps = {\n        renderAs: 'svg'\n    };\n    return BaseChart;\n}(React.Component));\nexport { BaseChart };\nregisterForIntl(BaseChart);\nChartDomEventsBuilder.register(DomEventsBuilder);\n//# sourceMappingURL=BaseChart.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { ChartContext } from './ChartContext';\n/**\n * @hidden\n */\nvar DonutCenter = /** @class */ (function (_super) {\n    __extends(DonutCenter, _super);\n    function DonutCenter(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.state = {\n            donutCenterStyles: null\n        };\n        _this.chartObserver = new InstanceObserver(_this, {\n            render: 'onRender'\n        });\n        context.observersStore.dispatch({\n            type: 'add',\n            payload: _this.chartObserver\n        });\n        return _this;\n    }\n    DonutCenter.prototype.render = function () {\n        var render = this.props.render;\n        var donutCenterStyles = this.state.donutCenterStyles;\n        var renderer = null;\n        if (render && donutCenterStyles) {\n            renderer = (React.createElement(\"div\", { className: \"k-chart-donut-center\", style: donutCenterStyles }, render()));\n        }\n        return renderer;\n    };\n    DonutCenter.prototype.onRender = function (event) {\n        var series = this.context.optionsStore.getState().series;\n        var firstSeries = Array.isArray(series) ? series[0] : null;\n        var charts = event.sender._plotArea.charts;\n        if (!firstSeries || firstSeries.type !== 'donut' || charts[0].points.length === 0) {\n            return;\n        }\n        var sector = charts[0].points[0].sector;\n        var radius = sector.innerRadius;\n        var top = sector.center.y - radius;\n        var left = sector.center.x - radius;\n        var size = radius * 2;\n        this.setState({\n            donutCenterStyles: {\n                height: size,\n                left: left,\n                top: top,\n                width: size\n            }\n        });\n    };\n    DonutCenter.contextType = ChartContext;\n    return DonutCenter;\n}(React.Component));\nexport { DonutCenter };\n//# sourceMappingURL=DonutCenter.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { DonutCenter } from './DonutCenter';\nimport { Chart as KendoChart } from '@progress/kendo-charts';\n/**\n * Represents the [KendoReact Chart component]({% slug overview_chart_charts %}).\n *\n * @example\n * ```jsx\n * import {\n *     Chart,\n *     ChartSeries,\n *     ChartSeriesItem,\n *     ChartCategoryAxis,\n *     ChartCategoryAxisItem,\n *     ChartTitle,\n *     ChartLegend\n * } from '@progress/kendo-react-charts';\n *\n * const categories = [ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ];\n * const series = [ {\n *     name: 'India',\n *     data: [ 3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855 ]\n * }, {\n *     name: 'Russian Federation',\n *     data: [ 4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3 ]\n * }, {\n *     name: 'Germany',\n *     data: [ 0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995 ]\n * }, {\n *     name: 'World',\n *     data: [ 1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727 ]\n * } ];\n *\n * const ChartContainer = () => (\n *     <Chart>\n *         <ChartTitle text=\"Gross domestic product growth GDP annual\" />\n *         <ChartLegend position=\"top\" orientation=\"horizontal\" />\n *         <ChartCategoryAxis>\n *             <ChartCategoryAxisItem categories={categories} startAngle={45} />\n *         </ChartCategoryAxis>\n *         <ChartSeries>\n *             {series.map((item, idx) => (\n *                 <ChartSeriesItem\n *                     key={idx}\n *                     type=\"column\"\n *                     data={item.data}\n *                     name={item.name}\n *                 />))}\n *         </ChartSeries>\n *     </Chart>\n * );\n *\n * ReactDOM.render(\n *     <ChartContainer />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\nvar Chart = /** @class */ (function (_super) {\n    __extends(Chart, _super);\n    function Chart() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.getTarget = function () {\n            return _this;\n        };\n        return _this;\n    }\n    Object.defineProperty(Chart.prototype, \"chartInstance\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.chartInstance;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"surface\", {\n        /**\n         * The Drawing `Surface` of the Chart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.surface;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"element\", {\n        /**\n         * The DOM element of the Chart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.element;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Chart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, donutCenterRender = _a.donutCenterRender, children = _a.children, baseChartProps = __rest(_a, [\"donutCenterRender\", \"children\"]);\n        return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoChart, getTarget: this.getTarget, wrapper: \"div\", wrapperClassName: \"k-chart k-widget\" }),\n            children,\n            React.createElement(DonutCenter, { render: donutCenterRender })));\n    };\n    return Chart;\n}(React.Component));\nexport { Chart };\n//# sourceMappingURL=Chart.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { Sparkline as KendoSparkline } from '@progress/kendo-charts';\n/**\n * The root Sparkline component.\n *\n * @example\n * ```jsx\n * import {\n *     Sparkline,\n *     ChartValueAxis,\n *     ChartValueAxisItem\n * } from '@progress/kendo-react-charts';\n *\n * const sparklineData = [ 936, 968, 1025, 999, 998, 1014, 1017, 1010, 1010, 1007 ];\n * const bulletData = [ 21, 23 ];\n * const bulletValueAxis = {\n *     min: 0,\n *     max: 30,\n *     plotBands: [{\n *         from: 0, to: 15, color: '#787878', opacity: 0.15\n *     }, {\n *         from: 15, to: 22, color: '#787878', opacity: 0.3\n *     }, {\n *         from: 22, to: 30, color: '#787878', opacity: 0.15\n *     }]\n * };\n *\n * const SparklineContainer = () => (\n *      <ul>\n *        <li>\n *            Base Sparkline chart\n *            <Sparkline data={sparklineData} />\n *        </li>\n *        <li>\n *            Bar/Column type Sparkline chart\n *            <Sparkline data={sparklineData} type=\"column\" />\n *        </li>\n *        <li>\n *            Area type Sparkline chart\n *            <Sparkline data={sparklineData} type=\"area\" />\n *        </li>\n *        <li>\n *            Pie type Sparkline chart\n *            <Sparkline data={sparklineData} type=\"pie\" />\n *        </li>\n *        <li>\n *            Bullet type Sparkline chart\n *            <Sparkline data={bulletData} type=\"bullet\">\n *                <ChartValueAxis>\n *                    <ChartValueAxisItem {...bulletValueAxis} />\n *                </ChartValueAxis>\n *            </Sparkline>\n *        </li>\n *      </ul>\n * );\n *\n * ReactDOM.render(\n *     <SparklineContainer />,\n *     document.querySelector('my-app')\n * );\n * ```\n */\nvar Sparkline = /** @class */ (function (_super) {\n    __extends(Sparkline, _super);\n    function Sparkline() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.deriveOptionsFromParent = function (options) {\n            var _a = _this.props, type = _a.type, data = _a.data;\n            var sparklineOptions = Object.assign({}, options, { type: type, data: data });\n            return KendoSparkline.normalizeOptions(sparklineOptions);\n        };\n        _this.getTarget = function () {\n            return _this;\n        };\n        return _this;\n    }\n    Object.defineProperty(Sparkline.prototype, \"chartInstance\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.chartInstance;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"surface\", {\n        /**\n         * The Drawing `Surface` of the Sparkline.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.surface;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Sparkline.prototype, \"element\", {\n        /**\n         * The DOM element of the Sparkline.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.element;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    Sparkline.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, type = _a.type, baseChartProps = __rest(_a, [\"children\", \"type\"]);\n        return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoSparkline, getTarget: this.getTarget, wrapper: \"span\", deriveOptionsFromParent: this.deriveOptionsFromParent, wrapperClassName: \"k-sparkline k-widget\" }), children));\n    };\n    return Sparkline;\n}(React.Component));\nexport { Sparkline };\n//# sourceMappingURL=Sparkline.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { StockChart as KendoStockChart } from '@progress/kendo-charts';\nvar NAVIGATOR_DEFAULTS = {\n    autoBindElements: true,\n    liveDrag: false,\n    partialRedraw: true\n};\n/**\n * The root StockChart component.\n *\n * @example\n * {% embed_file stock-chart/default/main.jsx %}\n * {% embed_file stock-chart/stock-data.json %}\n */\nvar StockChart = /** @class */ (function (_super) {\n    __extends(StockChart, _super);\n    function StockChart() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * @hidden\n         */\n        _this.deriveOptionsFromParent = function (options) {\n            var navigator = Object.assign({}, (options.navigator || {}), NAVIGATOR_DEFAULTS);\n            return Object.assign({}, options, { navigator: navigator });\n        };\n        /**\n         * @hidden\n         */\n        _this.onRefresh = function (chartOptions, themeOptions, chartInstance) {\n            if (_this.props.partialRedraw) {\n                chartInstance.applyOptions(chartOptions);\n                chartInstance.bindCategories();\n                chartInstance.navigator.redrawSlaves();\n            }\n            else {\n                chartInstance.setOptions(chartOptions, themeOptions);\n            }\n        };\n        _this.getTarget = function () {\n            return _this;\n        };\n        return _this;\n    }\n    Object.defineProperty(StockChart.prototype, \"chartInstance\", {\n        /**\n         * @hidden\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.chartInstance;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StockChart.prototype, \"surface\", {\n        /**\n         * The Drawing `Surface` of the StockChart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.surface;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StockChart.prototype, \"element\", {\n        /**\n         * The DOM element of the StockChart.\n         */\n        get: function () {\n            if (this._baseChart !== null) {\n                return this._baseChart.element;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @hidden\n     */\n    StockChart.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, children = _a.children, baseChartProps = __rest(_a, [\"children\"]);\n        return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoStockChart, getTarget: this.getTarget, wrapper: \"div\", deriveOptionsFromParent: this.deriveOptionsFromParent, onRefresh: this.onRefresh, wrapperClassName: \"k-stockchart k-widget\" }), children));\n    };\n    return StockChart;\n}(React.Component));\nexport { StockChart };\n//# sourceMappingURL=StockChart.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n    return t;\n};\nimport * as React from 'react';\nimport createStore from './../../store/store';\nimport { optionsReducer } from './../../store/reducer';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar ConfigurationComponent = /** @class */ (function (_super) {\n    __extends(ConfigurationComponent, _super);\n    function ConfigurationComponent(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.optionsStore = context.optionsStore;\n        _this.childStore = createStore(optionsReducer);\n        return _this;\n    }\n    ConfigurationComponent.prototype.render = function () {\n        var _this = this;\n        var children = this.props.children;\n        return children !== undefined ? React.Children.map(children, function (child) {\n            if (React.isValidElement(child)) {\n                return _this.renderChildren(child);\n            }\n            return child;\n        }) : null;\n    };\n    ConfigurationComponent.prototype.componentDidMount = function () {\n        this.dispatch();\n    };\n    ConfigurationComponent.prototype.componentDidUpdate = function () {\n        this.dispatch();\n    };\n    ConfigurationComponent.prototype.dispatch = function () {\n        var _a = this.props, _chartKey = _a._chartKey, _chartCollectionIdxKey = _a._chartCollectionIdxKey, _parentStore = _a._parentStore, children = _a.children, options = __rest(_a, [\"_chartKey\", \"_chartCollectionIdxKey\", \"_parentStore\", \"children\"]);\n        var store = _parentStore || this.optionsStore;\n        store.dispatch({\n            chartKey: _chartKey,\n            chartCollectionIdxKey: _chartCollectionIdxKey,\n            payload: Object.assign({}, options, this.childStore.getState())\n        });\n    };\n    ConfigurationComponent.prototype.renderChildren = function (child) {\n        var children = child.props.children;\n        var configurationItemProps = __assign({}, child.props, { _parentStore: this.childStore });\n        return React.cloneElement(child, configurationItemProps, children);\n    };\n    ConfigurationComponent.contextType = ChartContext;\n    return ConfigurationComponent;\n}(React.Component));\nexport default ConfigurationComponent;\n//# sourceMappingURL=ConfigurationComponent.js.map","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar CollectionConfigurationComponent = /** @class */ (function (_super) {\n    __extends(CollectionConfigurationComponent, _super);\n    function CollectionConfigurationComponent(props, context) {\n        var _this = _super.call(this, props, context) || this;\n        _this.optionsStore = context.optionsStore;\n        return _this;\n    }\n    CollectionConfigurationComponent.prototype.renderChildren = function (child, index) {\n        var children = child.props.children;\n        var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore;\n        var collectionItemProps = __assign({}, child.props, { _chartCollectionIdxKey: _chartKey + \"_\" + index, _parentStore: _parentStore });\n        return React.cloneElement(child, collectionItemProps, children);\n    };\n    CollectionConfigurationComponent.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore, children = _a.children;\n        var store = _parentStore || this.optionsStore;\n        store.dispatch({\n            chartKey: _chartKey,\n            payload: []\n        });\n        return React.Children.map(children, function (child, index) {\n            if (React.isValidElement(child)) {\n                return _this.renderChildren(child, index);\n            }\n            return child;\n        });\n    };\n    CollectionConfigurationComponent.contextType = ChartContext;\n    return CollectionConfigurationComponent;\n}(React.Component));\nexport default CollectionConfigurationComponent;\n//# sourceMappingURL=CollectionConfigurationComponent.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartCategoryAxisItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartCategoryAxisItem.displayName = 'ChartCategoryAxisItem';\nexport default ChartCategoryAxisItem;\n//# sourceMappingURL=CategoryAxisItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartCategoryAxisItem from './CategoryAxisItem';\nimport { validateChildren } from '../utils/main';\nvar ChartCategoryAxis = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"categoryAxis\" })));\n};\nChartCategoryAxis.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartCategoryAxisItem);\n    }\n};\nexport default ChartCategoryAxis;\n//# sourceMappingURL=CategoryAxis.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartLegend = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"legend\" })));\n};\nChartLegend.defaultProps = {\n    visible: true\n};\nexport default ChartLegend;\n//# sourceMappingURL=Legend.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartNavigator = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"navigator\" })));\n};\nChartNavigator.defaultProps = {\n    visible: true\n};\nexport default ChartNavigator;\n//# sourceMappingURL=Navigator.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartPane = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartPane.displayName = 'ChartPane';\nexport default ChartPane;\n//# sourceMappingURL=Pane.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartPane from './Pane';\nimport { validateChildren } from '../utils/main';\nvar ChartPanes = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"panes\" })));\n};\nChartPanes.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartPane);\n    }\n};\nexport default ChartPanes;\n//# sourceMappingURL=Panes.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartSeriesItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartSeriesItem.displayName = 'ChartSeriesItem';\nexport default ChartSeriesItem;\n//# sourceMappingURL=SeriesItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartSeriesItem from './SeriesItem';\nimport { validateChildren } from '../utils/main';\nvar ChartSeries = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"series\" })));\n};\nChartSeries.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartSeriesItem);\n    }\n};\nexport default ChartSeries;\n//# sourceMappingURL=Series.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartTooltip;\n//# sourceMappingURL=Tooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartValueAxisItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartValueAxisItem.displayName = 'ChartValueAxisItem';\nexport default ChartValueAxisItem;\n//# sourceMappingURL=ValueAxisItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartValueAxisItem from './ValueAxisItem';\nimport { validateChildren } from '../utils/main';\nvar ChartValueAxis = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"valueAxis\" })));\n};\nChartValueAxis.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartValueAxisItem);\n    }\n};\nexport default ChartValueAxis;\n//# sourceMappingURL=ValueAxis.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartXAxisItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartXAxisItem.displayName = 'ChartXAxisItem';\nexport default ChartXAxisItem;\n//# sourceMappingURL=XAxisItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartXAxisItem from './XAxisItem';\nimport { validateChildren } from '../utils/main';\nvar ChartXAxis = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"xAxis\" })));\n};\nChartXAxis.prototype = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartXAxisItem);\n    }\n};\nexport default ChartXAxis;\n//# sourceMappingURL=XAxis.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartYAxisItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartYAxisItem.displayName = 'ChartYAxisItem';\nexport default ChartYAxisItem;\n//# sourceMappingURL=YAxisItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartYAxisItem from './YAxisItem';\nimport { validateChildren } from '../utils/main';\nvar ChartYAxis = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"yAxis\" })));\n};\nChartYAxis.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartYAxisItem);\n    }\n};\nexport default ChartYAxis;\n//# sourceMappingURL=YAxis.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartAxisDefaultsTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartAxisDefaultsTitle.displayName = 'ChartAxisDefaultsTitle';\nexport default ChartAxisDefaultsTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartAxisDefaultsLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartAxisDefaultsLabels.displayName = 'ChartAxisDefaultsLabels';\nexport default ChartAxisDefaultsLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartAxisDefaultsCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartAxisDefaultsCrosshair.defaultProps = {\n    visible: true\n};\nChartAxisDefaultsCrosshair.displayName = 'ChartAxisDefaultsCrosshair';\nexport default ChartAxisDefaultsCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartAxisDefaultsCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartAxisDefaultsCrosshairTooltip.defaultProps = {\n    visible: true\n};\nChartAxisDefaultsCrosshairTooltip.displayName = 'ChartAxisDefaultsCrosshairTooltip';\nexport default ChartAxisDefaultsCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartCategoryAxisCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartCategoryAxisCrosshair.defaultProps = {\n    visible: true\n};\nexport default ChartCategoryAxisCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartCategoryAxisCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartCategoryAxisCrosshairTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartCategoryAxisCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartCategoryAxisTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartCategoryAxisTitle.displayName = 'ChartCategoryAxisTitle';\nexport default ChartCategoryAxisTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartCategoryAxisLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartCategoryAxisLabels.defaultProps = {\n    visible: true\n};\nexport default ChartCategoryAxisLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartPaneTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartPaneTitle.displayName = 'ChartPaneTitle';\nexport default ChartPaneTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartLegendItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"item\" })));\n};\nChartLegendItem.displayName = 'ChartLegendItem';\nexport default ChartLegendItem;\n//# sourceMappingURL=Item.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartLegendInactiveItems = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"inactiveItems\" })));\n};\nChartLegendInactiveItems.displayName = 'ChartLegendInactiveItems';\nexport default ChartLegendInactiveItems;\n//# sourceMappingURL=InactiveItems.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartSeriesDefaultsLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartSeriesDefaultsLabels.defaultProps = {\n    visible: true\n};\nexport default ChartSeriesDefaultsLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartSeriesItemTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nexport default ChartSeriesItemTooltip;\n//# sourceMappingURL=Tooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartSeriesLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartSeriesLabels.defaultProps = {\n    visible: true\n};\nexport default ChartSeriesLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartValueAxisCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartValueAxisCrosshair.defaultProps = {\n    visible: true\n};\nexport default ChartValueAxisCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartValueAxisCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartValueAxisCrosshairTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartValueAxisCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartValueAxisLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartValueAxisLabels.defaultProps = {\n    visible: true\n};\nexport default ChartValueAxisLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartValueAxisTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartValueAxisTitle.displayName = 'ChartValueAxisTitle';\nexport default ChartValueAxisTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartXAxisCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartXAxisCrosshair.defaultProps = {\n    visible: true\n};\nexport default ChartXAxisCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartXAxisCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartXAxisCrosshairTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartXAxisCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartXAxisLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartXAxisLabels.defaultProps = {\n    visible: true\n};\nexport default ChartXAxisLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartXAxisTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartXAxisTitle.displayName = 'ChartXAxisTitle';\nexport default ChartXAxisTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartYAxisCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartYAxisCrosshair.defaultProps = {\n    visible: true\n};\nexport default ChartYAxisCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartYAxisCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartYAxisCrosshairTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartYAxisCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartYAxisLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartYAxisLabels.defaultProps = {\n    visible: true\n};\nexport default ChartYAxisLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartYAxisTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartYAxisTitle.displayName = 'ChartYAxisTitle';\nexport default ChartYAxisTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartNavigatorCategoryAxis = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"categoryAxis\" })));\n};\nChartNavigatorCategoryAxis.displayName = 'ChartNavigatorCategoryAxis';\nexport default ChartNavigatorCategoryAxis;\n//# sourceMappingURL=CategoryAxis.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartNavigatorPane = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"pane\" })));\n};\nChartNavigatorPane.displayName = 'ChartNavigatorPane';\nexport default ChartNavigatorPane;\n//# sourceMappingURL=Pane.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../base/ConfigurationComponent';\nvar ChartNavigatorSeriesItem = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartNavigatorSeriesItem.displayName = 'ChartNavigatorSeriesItem';\nexport default ChartNavigatorSeriesItem;\n//# sourceMappingURL=SeriesItem.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './../base/CollectionConfigurationComponent';\nimport ChartNavigatorSeriesItem from './SeriesItem';\nimport { validateChildren } from '../../utils/main';\nvar ChartNavigatorSeries = function (props) {\n    return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"series\" })));\n};\nChartNavigatorSeries.propTypes = {\n    children: function (props, propName, componentName) {\n        return validateChildren(props, propName, componentName, ChartNavigatorSeriesItem);\n    }\n};\nexport default ChartNavigatorSeries;\n//# sourceMappingURL=Series.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorCategoryAxisCrosshair = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"crosshair\" })));\n};\nChartNavigatorCategoryAxisCrosshair.defaultProps = {\n    visible: true\n};\nexport default ChartNavigatorCategoryAxisCrosshair;\n//# sourceMappingURL=Crosshair.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorCategoryAxisCrosshairTooltip = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartNavigatorCategoryAxisCrosshairTooltip.defaultProps = {\n    visible: true\n};\nexport default ChartNavigatorCategoryAxisCrosshairTooltip;\n//# sourceMappingURL=CrosshairTooltip.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorCategoryAxisTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartNavigatorCategoryAxisTitle.displayName = 'ChartNavigatorCategoryAxisTitle';\nexport default ChartNavigatorCategoryAxisTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorCategoryAxisLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartNavigatorCategoryAxisLabels.defaultProps = {\n    visible: true\n};\nexport default ChartNavigatorCategoryAxisLabels;\n//# sourceMappingURL=Labels.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorPaneTitle = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"title\" })));\n};\nChartNavigatorPaneTitle.displayName = 'ChartNavigatorPaneTitle';\nexport default ChartNavigatorPaneTitle;\n//# sourceMappingURL=Title.js.map","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './../../base/ConfigurationComponent';\nvar ChartNavigatorSeriesLabels = function (props) {\n    return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"labels\" })));\n};\nChartNavigatorSeriesLabels.defaultProps = {\n    visible: true\n};\nexport default ChartNavigatorSeriesLabels;\n//# sourceMappingURL=Labels.js.map","\nimport React from 'react';\nimport {\n    Chart,\n    ChartSeries,\n    ChartSeriesItem,\n    ChartSeriesItemTooltip,\n    ChartTooltip,\n} from '@progress/kendo-react-charts';\nimport { groupBy } from '@progress/kendo-data-query';\n\nclass ChartContainer extends React.Component {\n    render() {\n        return(\n            <Chart>\n                <ChartTooltip />\n                <ChartSeries>\n                    {groupBy(this.props.data, [{ field: \"name\" }]).map((item, i) => (\n                        <ChartSeriesItem\n                            key={i}\n                            data={item.items}\n                            name={item.value}\n                            field=\"value\"\n                            categoryField=\"day\"\n                            color={item.items[0].userColor}\n                            colorField=\"userColor\"\n                        >\n                            <ChartSeriesItemTooltip />\n                        </ChartSeriesItem>\n                    ))}\n                </ChartSeries>\n            </Chart>\n        )\n    }\n}\n\nexport default ChartContainer;","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { getObjectAction } from '../../actions/dashboard';\nimport UserSession from './../../components/utils/user-session';\nimport ChartContainer from '../charts/index';\n\nclass UiGrid extends Component {\n\n    constructor(props) {\n        super(props);\n        this.user = UserSession.getUserData();\n        this.state = {\n            limit: 20,\n            offset: 0,\n        }\n    }\n\n    componentDidMount() {\n        const { component } = this.props;\n        const data = {\n            limit: this.state.limit,\n        };\n        let schema = component.referencelink;\n        if(!component.parentValues) {\n            this.getObject({request: JSON.stringify(data)}, schema, component, 'Workspace', this.user.workspaceId, true, null);\n        } else {\n            this.getObject({request: JSON.stringify(data)}, schema, component, component.parentValues.type, component.parentSelectedItems, true, null);\n        }\n    }\n\n    getObject = (data, method, component, parentType, parentID, refresh, callback) => {\n        const { view } = this.props.dashboard.mainActivity;\n        this.props.getObject(method, parentID, view.id, component.recid, component.name, parentType, data, refresh, callback);\n    }\n\n    render() {\n        const { graphItems } = this.props.dashboard.mainActivity;\n        return (\n            <div>\n                <ChartContainer data={graphItems || {}} />\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n    getObject: (method, parentID, view, componentID, componentName, parentType, data, refresh, callback) => {\n        dispatch(getObjectAction(method, parentID, view, componentID, componentName, parentType, data, refresh, callback)).then(() => {\n            (callback) ? callback() : null;\n        });\n    },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UiGrid);\n","import { Path, Text, Group, geometry } from '@progress/kendo-drawing';\nconst {  Point } = geometry;\n\nexport function drawScene(surface, items, clickItems) {\n    const group = new Group();\n    items.map((item) => {\n        // Create the square border by drawing a straight path\n        const path = new Path({\n            stroke: {\n                color: '#000000',\n                width: 1\n            },\n            fill: item.color\n        });\n\n        // The path is constructed by using a chain of commands\n        path.moveTo(item.originx, item.originy)\n            .lineTo(item.originx + item.sizex, item.originy).lineTo(item.originx + item.sizex, item.originy + item.sizey).lineTo(item.originx, item.originy + item.sizey)\n            .close();\n\n        // Create the text\n        const text = new Text(\n            item.title || '',\n            new Point(item.originx+2, item.originy+2),\n            { font: \"bold 10px Arial\" }\n        );\n\n        // Place all the shapes in a group\n        group.append(path, text);\n    });\n\n    clickItems.map((item) => {\n        if(item.type == 'rectangle') {\n            // Create the square border by drawing a straight path\n            const path = new Path({\n                stroke: {\n                    color: '#000000',\n                    width: 1\n                },\n                fill: item.color\n            });\n\n            // The path is constructed by using a chain of commands\n            path.moveTo(item.originx, item.originy)\n                .lineTo(item.originx + item.sizex, item.originy).lineTo(item.originx + item.sizex, item.originy + item.sizey).lineTo(item.originx, item.originy + item.sizey)\n                .close();\n\n            // Create the text\n            const text = new Text(\n                item.title || '',\n                new Point(item.originx+2, item.originy+11),\n                { font: \"bold 7px Arial\" }\n            );\n\n            // Place all the shapes in a group\n            group.append(path, text);\n        }\n\n        if(item.type == 'line') {\n            const path = new Path({\n                stroke: {\n                    color: \"#9999b6\",\n                    width: 2\n                }\n            });\n\n            // The path is constructed by using a chain of commands\n            path.moveTo(item.originx, item.originy)\n                .lineTo(item.endx, item.endy).lineTo(item.endx - 2, item.endy - 2).lineTo(item.endx + 2, item.endy + 2);\n\n            group.append(path);\n        }\n    });\n\n    // Render the group on the surface\n    surface.draw(group);\n}","import React, {Component} from 'react';\nimport { connect } from 'react-redux';\nimport { getDrawAction } from '../../actions/dashboard';\nimport UserSession from './../../components/utils/user-session';\nimport { Surface } from '@progress/kendo-drawing';\n\nimport { drawScene } from '../draw/draw-scene';\n\nclass UiDraw extends Component {\n    surface;\n    constructor(props) {\n        super(props);\n        this.state = {\n            width: 0,\n            height: 0,\n        }\n        this.user = UserSession.getUserData();\n    }\n\n    componentDidMount = () => {\n        const { component } = this.props;\n        let schema = component.referencelink;\n        this.props.getDraw(schema, this.user.workspaceId, component.recid, this.draw);\n    }\n\n    componentDidUpdate = () => {\n        if(this.props.component.drawResponse) {\n            this.draw();\n        }\n    }\n\n    draw = () => {\n        const clickDrawItems = [];\n        const components = this.props.dashboard.mainActivity.components;\n        components.map((component) => {\n            if(component.type != 'draw' && component.drawResponse) {\n                component.drawResponse.map((drawItem) => {\n                    clickDrawItems.push(drawItem);\n                });\n            }\n        })\n        drawScene(this.createSurface(), this.props.component.drawResponse, clickDrawItems);\n\n        this.props.component.drawResponse.map((item) => {\n            if(item.originx + item.sizex > this.state.width) {\n                this.setState({ width: item.originx + item.sizex })\n            }\n            if(item.originy + item.sizey > this.state.height) {\n                this.setState({ height: item.originy + item.sizey })\n            }\n        })\n    }\n\n    createSurface = () => {\n        this.surface = Surface.create(this.node);\n        return this.surface;\n    }\n\n    render() {\n        return (\n            <div id=\"surface\" ref={node => this.node = node} style={{width: this.state.width+'px', height: this.state.height+'px'}}/>\n        )\n    }\n}\n\nconst mapStateToProps = state => ({\n    dashboard: state.dashboard\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n    getDraw: (method, parentID, componentID, callback) => {\n        dispatch(getDrawAction(method, parentID, componentID)).then(() => {\n            (callback) ? callback() : null;\n        });\n    },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UiDraw);\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport '../../css/elements/widget.css'\nconst Widget = ({title, children}) => {\n    return (\n        <div className=\"widget\">\n            <div className=\"title\">{title}</div>\n            <div>{children}</div>\n        </div>\n    )\n}\n\nWidget.propTypes = {\n    title: PropTypes.string.isRequired,\n    description: PropTypes.string.isRequired,\n    children: PropTypes.oneOfType([\n        PropTypes.element,\n        PropTypes.array,\n        PropTypes.string\n    ])\n}\n\nexport default Widget\n","import React, {Component} from 'react'\nimport { connect } from 'react-redux'\nimport { getParametersAction, getContextMenuAction } from '../../actions/dashboard';\nimport UiGrid from './uigrid';\nimport UiVerticalGrid from './uiverticalgrid';\nimport UiForm from './uiform';\nimport UiChart from './uichart';\nimport UiDraw from './uidraw';\nimport Widget from \"./../widget\"\n\nclass Uicomponent extends Component {\n\n    componentDidMount() {\n        const { component } = this.props\n        const { view } = this.props.dashboard.mainActivity;\n        getParametersAction(component.recid);\n        getContextMenuAction(view.id, component.name, component.recid)\n    }\n\n    componentDidUpdate(prevProps) {\n        if(this.props.component !== prevProps.component) {\n            const { component } = this.props\n            const { view } = this.props.dashboard.mainActivity;\n            getParametersAction(component.recid);\n            getContextMenuAction(view.id, component.name, component.recid)\n        }\n    }\n\n    render() {\n        const { component, rows } = this.props;\n        const parameters = component.parameterResponse;\n        const { parentValues } = component;\n    \treturn (\n            <Widget title={component.title} description=\"\">\n                <div\n                    id={\"component_\"+component.focus}\n                    className={(component.type === \"draw\") ? \"component-section row-\"+rows+\"-no-header\" : \"component-section row-\"+rows}\n                    style={(component.type === \"draw\") ? {overflow: 'scroll'} : {}}\n                >\n                    {parameters && (component.type === \"grid\") ? (\n                        <UiGrid component={component} rows={rows} />\n                    ) : (null)}\n\n                    {parameters && (component.type === \"verticalgrid\") ? (\n                        <UiVerticalGrid component={component} rows={rows} />\n                    ) : (null)}\n\n                    {parameters && (component.type === \"report\") ? (\n                        <UiChart component={component} rows={rows} />\n                    ) : (null)}\n\n                    {parameters && (component.type === \"draw\") ? (\n                        <UiDraw component={component} rows={rows} />\n                    ) : (null)}\n\n                    {parameters && (component.type === \"form\") ?(\n                        parentValues && <UiForm component={component} rows={rows} />\n                    ) : (null)}\n                </div>\n            </Widget>\n          );\n    }\n}\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n    config: state.config\n});\n\nexport default connect(mapDispatchToProps)(Uicomponent);\n","import React, {Component} from 'react'\nimport { connect } from 'react-redux'\nimport { getComponentsAction, getViewAction, getViewContextMenuAction } from '../../actions/dashboard'\nimport UiComponent from './uicomponent';\n\n\n// Determines the component for this layout\nconst getComponentByPosition = (components, componentname, rows) => {\n    const component = components && components.find((c) => c.name === componentname);\n    if(component) {\n        return <UiComponent component={component} rows={rows}/>;\n    }\n};\n\nclass View extends Component {\n    componentDidMount() {\n        getViewAction(this.props.item);\n        getComponentsAction(this.props.item.recid);\n        getViewContextMenuAction(this.props.item.recid);\n    }\n    componentDidUpdate(prevProps) {\n        if(this.props.item !== prevProps.item) {\n            getViewAction(this.props.item);\n            getComponentsAction(this.props.item.recid);\n            getViewContextMenuAction(this.props.item.recid);\n        }\n    }\n\n    render() {\n        const { components, view } = this.props.dashboard.mainActivity;\n        if(view) {\n            const { layout } = view;\n            return (\n                <div>\n                    {layout && layout.map((layoutItem, i) => {\n                        return (\n                            <div className={`row row-line row-${layout.length}`} key={i}>\n                                { layoutItem.columns.map((column, k) => {\n                                    return (\n                                        <div key={k} className={`column-line col col-sm-12 col-lg-${column.units} ${column.centered ? 'col-centered' : ''}`} style={{}}>\n                                            {column.rows.map((row, j) =>\n                                                <div style={{'height': (column.vunits) ? ((i == 0) ? column.vunits - 10 : column.vunits)+'vh' : '90vh'}} key={j}>{\n                                                    getComponentByPosition(components, row.componentname, (column.vunits) ? (i == 0) ? column.vunits - 10 : column.vunits : 90)\n                                                }</div>\n                                            )}\n                                        </div>\n                                    )\n                                    }\n                                ) }\n                            </div>\n                        )\n                    })\n                    }\n                </div>\n            )\n\n        }\n        return null;\n    }\n}\n\nconst mapDispatchToProps = state => ({\n    dashboard: state.dashboard,\n});\n\nexport default connect(mapDispatchToProps)(View);\n","import React, { Component }  from 'react'\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport PropTypes from 'prop-types';\nimport View from './view';\nimport { showView } from '../../actions/dashboard';\n\nclass Dashboard extends Component {\n\tcomponentDidMount() {\n\t\tif(this.props.match.params.id) {\n\t\t\tshowView(this.props.match.params.id)\n\t\t}\n\t}\n\tcomponentDidUpdate(prevProps) {\n\t\tif(prevProps.match.params.id !== this.props.match.params.id) {\n\t\t\tshowView(this.props.match.params.id)\n\t\t}\n\t}\n\trender () {\n\t\tif (this.props.config.layout === 'empty-view-1') {\n\t\t\treturn <div />\n\t\t}\n\t\tconst { view } = this.props.dashboard.showView;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{view && view.map((item, i) => {\n\t\t\t\t\treturn (<View key={i} item={item} />)\n\t\t\t\t})}\n\t\t\t</div>\n\t\t)\n\t}\n}\n\nDashboard.propTypes = {\n\tdashboard: PropTypes.object.isRequired,\n\tconfig: PropTypes.object.isRequired\n};\n\n\nconst mapStateToProps = state => ({\n\tdashboard: state.dashboard,\n\tconfig: state.config\n});\n\nfunction mapDispatchToProps(dispatch) {\n\treturn { actions: bindActionCreators(showView, dispatch) }\n  }\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Dashboard);\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n  var cacheKey = pattern;\n  var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n  if (cache[pattern]) return cache[pattern];\n\n  var compiledGenerator = pathToRegexp.compile(pattern);\n\n  if (cacheCount < cacheLimit) {\n    cache[pattern] = compiledGenerator;\n    cacheCount++;\n  }\n\n  return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n  var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (pattern === \"/\") {\n    return pattern;\n  }\n  var generator = compileGenerator(pattern);\n  return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n  _inherits(Redirect, _React$Component);\n\n  function Redirect() {\n    _classCallCheck(this, Redirect);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Redirect.prototype.isStatic = function isStatic() {\n    return this.context.router && this.context.router.staticContext;\n  };\n\n  Redirect.prototype.componentWillMount = function componentWillMount() {\n    invariant(this.context.router, \"You should not use <Redirect> outside a <Router>\");\n\n    if (this.isStatic()) this.perform();\n  };\n\n  Redirect.prototype.componentDidMount = function componentDidMount() {\n    if (!this.isStatic()) this.perform();\n  };\n\n  Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var prevTo = createLocation(prevProps.to);\n    var nextTo = createLocation(this.props.to);\n\n    if (locationsAreEqual(prevTo, nextTo)) {\n      warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n      return;\n    }\n\n    this.perform();\n  };\n\n  Redirect.prototype.computeTo = function computeTo(_ref) {\n    var computedMatch = _ref.computedMatch,\n        to = _ref.to;\n\n    if (computedMatch) {\n      if (typeof to === \"string\") {\n        return generatePath(to, computedMatch.params);\n      } else {\n        return _extends({}, to, {\n          pathname: generatePath(to.pathname, computedMatch.params)\n        });\n      }\n    }\n\n    return to;\n  };\n\n  Redirect.prototype.perform = function perform() {\n    var history = this.context.router.history;\n    var push = this.props.push;\n\n    var to = this.computeTo(this.props);\n\n    if (push) {\n      history.push(to);\n    } else {\n      history.replace(to);\n    }\n  };\n\n  Redirect.prototype.render = function render() {\n    return null;\n  };\n\n  return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n  computedMatch: PropTypes.object, // private, from <Switch>\n  push: PropTypes.bool,\n  from: PropTypes.string,\n  to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n  push: false\n};\nRedirect.contextTypes = {\n  router: PropTypes.shape({\n    history: PropTypes.shape({\n      push: PropTypes.func.isRequired,\n      replace: PropTypes.func.isRequired\n    }).isRequired,\n    staticContext: PropTypes.object\n  }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","import React, { Component } from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport UserSession from './components/utils/user-session';\n\n\n\nclass PrivateRoute extends Component {\n\n\n    render() {\n        const token = UserSession.getToken();\n        const { exact, path, component } = this.props;\n        const isAuth = token !== null;\n       return (\n           <Route\n                exact={exact}\n                path={path}\n                render={props => (\n                isAuth ? (\n                    React.createElement(component, props)\n                    ) : (\n                    <Redirect to={{\n                      pathname: '/login',\n                      state: { from: props.location }\n                    }}/>\n            )\n        )}\n        />);\n    }\n};\n\nPrivateRoute.propTypes = {\n    component: PropTypes.func.isRequired,\n    exact: PropTypes.bool,\n    path: PropTypes.string.isRequired,\n    authenticated: PropTypes.func,\n    location: PropTypes.object\n};\n\nexport default PrivateRoute;","import React from 'react'\nimport Widget from './../../components/widget'\n\nconst Index = () => (\n    <div className=\"row\">\n        <div className=\"col\">\n            <Widget title=\"Empty page\" description=\"This is an empty page\" />\n        </div>\n    </div>\n)\nexport default Index\n","import React from 'react'\nimport { Switch, Route } from 'react-router-dom'\n\nimport NewLogin from './components/login-form'\nimport ResetPassword from './components/reset-password-form'\nimport Dashboard from './components/dashboard'\n\nimport PrivateRoute from './PrivateRoute';\n\nimport EmptyPage from './containers/empty-page';\n\nconst Routes = () => (\n  <Switch>\n      <PrivateRoute exact path=\"/\" component={Dashboard} />\n      <PrivateRoute path=\"/view/:id\" component={Dashboard}/>\n      <Route path=\"/login\" component={NewLogin}/>\n      <Route path=\"/reset-password\" component={ResetPassword}/>\n\n      <Route component={EmptyPage} />\n  </Switch>\n)\n\nexport default Routes\n","import React, {Component} from 'react'\nimport {connect} from 'react-redux'\nimport {ConnectedRouter} from 'react-router-redux'\nimport history from './history'\nimport NotificationsSystem from 'reapop'\nimport theme from './components/notifications/reapop/reapop-theme-bootstrap'\n\nimport '@progress/kendo-theme-bootstrap/dist/all.css';\n\n//global css\nimport './css/bootstrap/bootstrap.css'\nimport './css/main.css'\nimport './css/development.css'\nimport 'react-datetime/css/react-datetime.css';\n\nimport './css/ui-elements/buttons.css'\n\nimport './css/icons/font-awesome.css'\n\n\n//structural elements\nimport LeftSidebar from './containers/left-sidebar'\nimport NavigationBar from './containers/navigation-bar'\n\nimport Routes from './Routes'\n\nclass App extends Component {\n  render() {\n    let {\n      layout,\n      background,\n      navbar,\n      topNavigation,\n      logo,\n      leftSidebar,\n      collapsed\n    } = this.props.config;\n\n    let isEmptyView = layout === 'empty-view-1' ? true : false\n    return (\n      <ConnectedRouter history={history}>\n        <div\n          data-layout={layout}\n          data-background={background}\n          data-navbar={navbar}\n          data-top-navigation={topNavigation}\n          data-logo={logo}\n          data-left-sidebar={leftSidebar}\n          data-collapsed={collapsed}>\n          <NotificationsSystem theme={theme} />\n          <NavigationBar />\n          <div className={isEmptyView ? '' : 'container-fluid'}>\n            <div className={isEmptyView ? '' : 'row'}>\n              <LeftSidebar />\n              <div className=\"col main\">\n                <Routes />\n              </div>\n            </div>\n          </div>\n        </div>\n      </ConnectedRouter>\n    )\n  }\n}\n\nconst mapStateToProps = (state) => {\n  return {\n    config: state.config\n  }\n}\nexport default connect(mapStateToProps)(App)\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport {Provider} from 'react-redux'\nimport store from './configureStore'\nimport App from './App'\n\nconst Component = () => (\n  <Provider store={store}>\n    <App />\n  </Provider>\n)\n\nlet render = () => {\n  // eslint-disable-next-line no-console, no-undef\n  console.log(`Samsa frontend version: ${VERSION}`)\n  ReactDOM.render(<Component />, document.getElementById('root'))\n}\n\nrender()\n\nif (module.hot) {\n  module.hot.accept(() => {\n    render()\n  })\n}\n"],"sourceRoot":""}